aboutsummaryrefslogtreecommitdiff
path: root/src/test-solve/main.c
blob: 0e6efe001144fb9c1712a2af6b4581017c24608d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdbool.h> // bool
#include <string.h> // atoi()
#include <stdlib.h> // EXIT_{FAILURE,SUCCESS}
#include <stdio.h>
#include "../libsok/sok.h"
#include "../text/util.h"
#include "../text/levels.h"

static void
solve_on_error(
  const char * const err
) {
  die("Error solving level: %s", err);
}

int main(int argc, char *argv[]) {
  // init context
  sok_ctx_t ctx;
  sok_ctx_init(&ctx, NULL);

  // walk levels
  for (int i = 1; i < argc; i++) {
    const size_t level_num = atoi(argv[i]);

    // get level
    const level_t *level = levels_get_level(level_num);

    // load level
    if (!sok_ctx_set_level(&ctx, level->data)) {
      die("Couldn't load level %zu", level_num);
    }

    // solve level
    if (!sok_solve(&ctx, solve_on_error)) {
      die("Couldn't solve level");
    }
  }

  // return success
  return EXIT_SUCCESS;
}