summaryrefslogtreecommitdiff
path: root/test/NaturalCollate-Test.vala
diff options
context:
space:
mode:
Diffstat (limited to 'test/NaturalCollate-Test.vala')
-rw-r--r--test/NaturalCollate-Test.vala136
1 files changed, 136 insertions, 0 deletions
diff --git a/test/NaturalCollate-Test.vala b/test/NaturalCollate-Test.vala
new file mode 100644
index 0000000..64c7ce5
--- /dev/null
+++ b/test/NaturalCollate-Test.vala
@@ -0,0 +1,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();
+}