* Disable colors on Windows because terminal looks bad otherwise * Use environment on Windows to set PATH and make sure unit tests use the compiled libraries and not the installed ones * Define ssize_t on Windows as well by using SSIZE_T Update test_analysis_block.c Update test_intervaltree.c Update test_unum.c
153 lines
No EOL
4.5 KiB
C
153 lines
No EOL
4.5 KiB
C
|
|
#include <rz_util/rz_spaces.h>
|
|
#include "minunit.h"
|
|
#include "test_sdb.h"
|
|
|
|
bool test_spaces_save(void) {
|
|
RzSpaces *spaces = rz_spaces_new ("myspaces");
|
|
rz_spaces_add (spaces, "a");
|
|
rz_spaces_add (spaces, "b");
|
|
rz_spaces_add (spaces, "c");
|
|
rz_spaces_add (spaces, PERTURBATOR);
|
|
|
|
Sdb *db = sdb_new0 ();
|
|
rz_serialize_spaces_save (db, spaces);
|
|
|
|
Sdb *expected = sdb_new0 ();
|
|
sdb_set (expected, "name", "myspaces", 0);
|
|
sdb_set (expected, "spacestack", "[\"*\"]", 0);
|
|
Sdb *expected_spaces = sdb_ns (expected, "spaces", true);
|
|
sdb_set (expected_spaces, "a", "s", 0);
|
|
sdb_set (expected_spaces, "b", "s", 0);
|
|
sdb_set (expected_spaces, "c", "s", 0);
|
|
sdb_set (expected_spaces, PERTURBATOR, "s", 0);
|
|
|
|
assert_sdb_eq (db, expected, "spaces save (no current, empty stack)");
|
|
sdb_free (db);
|
|
|
|
rz_spaces_set (spaces, PERTURBATOR);
|
|
db = sdb_new0 ();
|
|
rz_serialize_spaces_save (db, spaces);
|
|
|
|
sdb_set (expected, "spacestack", "[\""PERTURBATOR_JSON"\"]", 0);
|
|
|
|
assert_sdb_eq (db, expected, "spaces save (current, empty stack)");
|
|
sdb_free (db);
|
|
|
|
rz_spaces_push (spaces, "a");
|
|
rz_spaces_push (spaces, "b");
|
|
db = sdb_new0 ();
|
|
rz_serialize_spaces_save (db, spaces);
|
|
|
|
sdb_set (expected, "spacestack", "[\""PERTURBATOR_JSON"\",\"a\",\"b\"]", 0);
|
|
assert_sdb_eq (db, expected, "spaces save (current, stack)");
|
|
|
|
sdb_free (db);
|
|
sdb_free (expected);
|
|
rz_spaces_free (spaces);
|
|
mu_end;
|
|
}
|
|
|
|
bool test_spaces_load_noname_nostack(void) {
|
|
Sdb *db = sdb_new0 ();
|
|
sdb_set (db, "name", "myspaces", 0);
|
|
sdb_set (db, "spacestack", "[\"*\"]", 0);
|
|
Sdb *db_spaces = sdb_ns (db, "spaces", true);
|
|
sdb_set (db_spaces, "a", "s", 0);
|
|
sdb_set (db_spaces, "b", "s", 0);
|
|
sdb_set (db_spaces, "c", "s", 0);
|
|
sdb_set (db_spaces, PERTURBATOR, "s", 0);
|
|
|
|
RzSpaces *spaces = rz_spaces_new ("fixed name");
|
|
bool loaded = rz_serialize_spaces_load (db, spaces, false, NULL);
|
|
mu_assert ("load success", loaded);
|
|
mu_assert_streq (spaces->name, "fixed name", "spaces load without name");
|
|
mu_assert_null (spaces->current, "spaces load no current");
|
|
mu_assert_eq (rz_list_length (spaces->spacestack), 0, "empty spacestack");
|
|
RBIter rbiter;
|
|
RzSpace *space;
|
|
int i = 0;
|
|
rz_rbtree_foreach (spaces->spaces, rbiter, space, RzSpace, rb) {
|
|
switch (i) {
|
|
case 0:
|
|
mu_assert_streq (space->name, PERTURBATOR, "loaded spaces");
|
|
break;
|
|
case 1:
|
|
mu_assert_streq (space->name, "a", "loaded spaces");
|
|
break;
|
|
case 2:
|
|
mu_assert_streq (space->name, "b", "loaded spaces");
|
|
break;
|
|
case 3:
|
|
mu_assert_streq (space->name, "c", "loaded spaces");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
mu_assert_eq (i, 4, "loaded spaces count");
|
|
rz_spaces_free (spaces);
|
|
|
|
sdb_free (db);
|
|
mu_end;
|
|
}
|
|
|
|
bool test_spaces_load_name_stack(void) {
|
|
Sdb *db = sdb_new0 ();
|
|
sdb_set (db, "name", "myspaces", 0);
|
|
sdb_set (db, "spacestack", "[\"a\",\"*\",\""PERTURBATOR_JSON"\",\"b\",\""PERTURBATOR_JSON"\"]", 0);
|
|
Sdb *db_spaces = sdb_ns (db, "spaces", true);
|
|
sdb_set (db_spaces, "a", "s", 0);
|
|
sdb_set (db_spaces, "b", "s", 0);
|
|
sdb_set (db_spaces, "c", "s", 0);
|
|
sdb_set (db_spaces, PERTURBATOR, "s", 0);
|
|
|
|
RzSpaces *spaces = rz_spaces_new ("");
|
|
bool loaded = rz_serialize_spaces_load (db, spaces, true, NULL);
|
|
mu_assert ("load success", loaded);
|
|
mu_assert_streq (spaces->name, "myspaces", "loaded name");
|
|
mu_assert_notnull (spaces->current, "current non-null");
|
|
mu_assert_streq (spaces->current->name, PERTURBATOR, "current");
|
|
mu_assert_eq (rz_list_length (spaces->spacestack), 4, "spacestack size");
|
|
mu_assert_streq ((const char *)rz_list_get_n (spaces->spacestack, 0), "a", "spacestack");
|
|
mu_assert_streq ((const char *)rz_list_get_n (spaces->spacestack, 1), "*", "spacestack");
|
|
mu_assert_streq ((const char *)rz_list_get_n (spaces->spacestack, 2), PERTURBATOR, "spacestack");
|
|
mu_assert_streq ((const char *)rz_list_get_n (spaces->spacestack, 3), "b", "spacestack");
|
|
RBIter rbiter;
|
|
RzSpace *space;
|
|
int i = 0;
|
|
rz_rbtree_foreach (spaces->spaces, rbiter, space, RzSpace, rb) {
|
|
switch (i) {
|
|
case 0:
|
|
mu_assert_streq (space->name, PERTURBATOR, "loaded spaces");
|
|
break;
|
|
case 1:
|
|
mu_assert_streq (space->name, "a", "loaded spaces");
|
|
break;
|
|
case 2:
|
|
mu_assert_streq (space->name, "b", "loaded spaces");
|
|
break;
|
|
case 3:
|
|
mu_assert_streq (space->name, "c", "loaded spaces");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
i++;
|
|
}
|
|
mu_assert_eq (i, 4, "loaded spaces count");
|
|
rz_spaces_free (spaces);
|
|
|
|
sdb_free (db);
|
|
mu_end;
|
|
}
|
|
|
|
int all_tests() {
|
|
mu_run_test (test_spaces_save);
|
|
mu_run_test (test_spaces_load_noname_nostack);
|
|
mu_run_test (test_spaces_load_name_stack);
|
|
return tests_passed != tests_run;
|
|
}
|
|
|
|
mu_main (all_tests) |