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(); }