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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
void add_trailing_numbers_tests () {
Test.add_func ("/functional/collation/trailing_numbers", () => {
string a = "100foo";
string b = "100bar";
string coll_a = NaturalCollate.collate_key(a);
string coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_b) > 0);
assert(strcmp(a,b) > 0);
assert(NaturalCollate.compare(a,b) == strcmp(coll_a, coll_b));
string atrail = "00100foo";
string btrail = "0100bar";
string coll_atrail = NaturalCollate.collate_key(a);
string coll_btrail = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_atrail) == 0);
assert(strcmp(coll_b, coll_btrail) == 0);
assert(strcmp(coll_atrail, coll_btrail) > 0);
assert(strcmp(atrail,btrail) < 0);
assert(NaturalCollate.compare(atrail,btrail) == strcmp(coll_atrail, coll_btrail));
});
}
void add_numbers_tail_tests () {
Test.add_func ("/functional/collation/numbers_tail", () => {
string a = "aaa00100";
string b = "aaa02";
string coll_a = NaturalCollate.collate_key(a);
string coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_b) > 0);
assert(strcmp(a,b) < 0);
assert(NaturalCollate.compare(a,b) == strcmp(coll_a, coll_b));
});
}
void add_dots_tests () {
Test.add_func ("/functional/collation/dots", () => {
string sa = "Foo01.jpg";
string sb = "Foo2.jpg";
string sc = "Foo3.jpg";
string sd = "Foo10.jpg";
assert (strcmp(sa, sd) < 0);
assert (strcmp(sd, sb) < 0);
assert (strcmp(sb, sc) < 0);
string coll_sa = NaturalCollate.collate_key(sa);
string coll_sb = NaturalCollate.collate_key(sb);
string coll_sc = NaturalCollate.collate_key(sc);
string coll_sd = NaturalCollate.collate_key(sd);
assert (strcmp(coll_sa, coll_sb) < 0);
assert (strcmp(coll_sb, coll_sc) < 0);
assert (strcmp(coll_sc, coll_sd) < 0);
});
}
void add_bigger_as_strcmp_tests () {
Test.add_func ("/functional/collation/bigger_as_strcmp", () => {
string a = "foo";
string b = "bar";
string coll_a = NaturalCollate.collate_key(a);
string coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a,coll_b) > 0);
assert(strcmp(a,b) > 0);
assert(NaturalCollate.compare(a,b) == strcmp(coll_a, coll_b));
a = "foo0001";
b = "bar0000";
coll_a = NaturalCollate.collate_key(a);
coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a,coll_b) > 0);
assert(strcmp(a,b) > 0);
assert(NaturalCollate.compare(a,b) == strcmp(coll_a, coll_b));
a = "bar010";
b = "bar01";
coll_a = NaturalCollate.collate_key(a);
coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a,coll_b) > 0);
assert(strcmp(a,b) > 0);
assert(NaturalCollate.compare(a,b) == strcmp(coll_a, coll_b));
});
}
void add_numbers_tests() {
Test.add_func ("/functional/collation/numbers", () => {
string a = "0";
string b = "1";
string coll_a = NaturalCollate.collate_key(a);
string coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_b) < 0);
a = "100";
b = "101";
coll_a = NaturalCollate.collate_key(a);
coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_b) < 0);
a = "2";
b = "10";
coll_a = NaturalCollate.collate_key(a);
coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_b) < 0);
a = "b20";
b = "b100";
coll_a = NaturalCollate.collate_key(a);
coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a, coll_b) < 0);
});
}
void add_ignore_leading_zeros_tests () {
Test.add_func ("/functional/collation/ignore_leading_zeros", () => {
string a = "bar0000010";
string b = "bar10";
string coll_a = NaturalCollate.collate_key(a);
string coll_b = NaturalCollate.collate_key(b);
assert(strcmp(coll_a,coll_b) == 0);
});
}
void main (string[] args) {
GLib.Intl.setlocale(GLib.LocaleCategory.ALL, "");
Test.init (ref args);
add_trailing_numbers_tests();
add_numbers_tail_tests();
add_bigger_as_strcmp_tests();
add_ignore_leading_zeros_tests();
add_numbers_tests();
add_dots_tests();
Test.run();
}
|