summaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authorjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-05-02 15:22:49 +0000
committerjoey <joey@0fa5a96a-9a0e-0410-b3b2-a0fd24251071>2006-05-02 15:22:49 +0000
commit47cec07e4441a06bb741910a329215d4d6ad0a86 (patch)
treeab24862ee6feb7f814d81eded753e200a825aefe /t
parentf9ce7a571ddbe124bb93bcfd3388e2cd4d77ec06 (diff)
ah, the joys of test-based development..
think I have smart glob list matching working ok
Diffstat (limited to 't')
-rwxr-xr-xt/globlist_match.t4
-rwxr-xr-xt/globlist_merge.t44
2 files changed, 47 insertions, 1 deletions
diff --git a/t/globlist_match.t b/t/globlist_match.t
index 3d196e09c..b60d83a2a 100755
--- a/t/globlist_match.t
+++ b/t/globlist_match.t
@@ -1,9 +1,11 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More tests => 11;
+use Test::More tests => 13;
BEGIN { use_ok("IkiWiki"); }
+ok(IkiWiki::globlist_match("foo", "foo bar"), "simple list");
+ok(IkiWiki::globlist_match("bar", "foo bar"), "simple list 2");
ok(IkiWiki::globlist_match("foo", "*"));
ok(IkiWiki::globlist_match("foo", "f?? !foz"));
ok(! IkiWiki::globlist_match("foo", "f?? !foo"));
diff --git a/t/globlist_merge.t b/t/globlist_merge.t
new file mode 100755
index 000000000..db76f1cd4
--- /dev/null
+++ b/t/globlist_merge.t
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+use warnings;
+use strict;
+use Test::More tests => 25;
+
+sub same {
+ my $a=shift;
+ my $b=shift;
+ my $match=shift;
+
+ my $imatch=(IkiWiki::globlist_match($match, $a) ||
+ IkiWiki::globlist_match($match, $b));
+ my $cmatch=IkiWiki::globlist_match($match, IkiWiki::globlist_merge($a, $b));
+
+ return $imatch == $cmatch;
+}
+
+BEGIN { use_ok("IkiWiki::Render"); }
+
+ok(same("foo", "bar", "foo"), "basic match 1");
+ok(same("foo", "bar", "bar"), "basic match 2");
+ok(same("foo", "bar", "foobar"), "basic failed match");
+ok(same("foo", "!bar", "foo"), "basic match with inversion");
+ok(same("foo", "!bar", "bar"), "basic failed match with inversion");
+ok(same("!foo", "bar", "foo"), "basic failed match with inversion 2");
+ok(same("!foo", "bar", "bar"), "basic match with inversion 2");
+ok(same("!foo", "!bar", "foo"), "double inversion failed match");
+ok(same("!foo", "!bar", "bar"), "double inversion failed match 2");
+ok(same("*", "!bar", "foo"), "glob+inversion match");
+ok(same("*", "!bar", "bar"), "matching glob and matching inversion");
+ok(same("* !foo", "!bar", "bar"), "matching glob and matching inversion");
+ok(same("* !foo", "!bar", "foo"), "matching glob with matching inversion and non-matching inversion");
+ok(same("* !foo", "!foo", "foo"), "matching glob with matching inversion and matching inversion");
+ok(same("b??", "!b??", "bar"), "matching glob and matching inverted glob");
+ok(same("f?? !f??", "!bar", "bar"), "matching glob and matching inverted glob");
+ok(same("b??", "!b?z", "bar"), "matching glob and non-matching inverted glob");
+ok(same("f?? !f?z", "!bar", "bar"), "matching glob and non-matching inverted glob");
+ok(same("!foo bar baz", "!bar", "bar"), "matching list and matching inversion");
+ok(IkiWiki::globlist_match("foo/Discussion",
+ IkiWiki::globlist_merge("* !*/Discussion", "*/Discussion")), "should match");
+ok(same("* !*/Discussion", "*/Discussion", "foo/Discussion"), "Discussion merge 1");
+ok(same("*/Discussion", "* !*/Discussion", "foo/Discussion"), "Discussion merge 2");
+ok(same("*/Discussion !*/bar", "*/bar !*/Discussion", "foo/Discussion"), "bidirectional merge 1");
+ok(same("*/Discussion !*/bar", "*/bar !*/Discussion", "foo/bar"), "bidirectional merge 2");