Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / basis / match / match-tests.factor
blob044b80fe9d06b736e1dccbb49eb10027f6ba9db8
1 ! Copyright (C) 2006 Chris Double.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: tools.test match namespaces arrays ;
4 IN: match.tests
6 MATCH-VARS: ?a ?b ;
8 [ f ] [ { ?a ?a } { 1 2 } match ] unit-test
10 [ H{ { ?a 1 } { ?b 2 } } ] [
11  { ?a ?b } { 1 2 } match
12 ] unit-test
14 [ { 1 2 } ] [ 
15   { 1 2 } 
16   {
17     { { ?a ?b } [ ?a ?b 2array ] }
18   } match-cond
19 ] unit-test
21 [ t ] [ 
22   { 1 2 } 
23   {
24     { { 1 2 } [ t ] }
25     { f [ f ] }
26   } match-cond
27 ] unit-test
29 [ t ] [ 
30   { 1 3 } 
31   {
32     { { 1 2 } [ t ] }
33     { { 1 3 } [ t ] }
34   } match-cond
35 ] unit-test
37 [ f ] [ 
38   { 1 5 } 
39   {
40     { { 1 2 } [ t ] }
41     { { 1 3 } [ t ] }
42     { _       [ f ] }
43   } match-cond
44 ] unit-test
46 TUPLE: foo a b ;
48 C: <foo> foo
50 { 1 2 } [
51   1 2 <foo> T{ foo f ?a ?b } match [
52     ?a ?b
53   ] bind
54 ] unit-test
56 { 1 2 } [
57   1 2 <foo> \ ?a \ ?b <foo> match [
58     ?a ?b
59   ] bind
60 ] unit-test
62 { H{ { ?a ?a } } } [ 
63   \ ?a \ ?a match 
64 ] unit-test
66 [ "match" ] [ 
67   "abcd" {
68     { ?a [ "match" ] }
69   } match-cond
70 ] unit-test
73   { 2 1 }
74 ] [
75   { "a" 1 2 "b" } { _ ?a ?b _ } { ?b ?a } match-replace
76 ] unit-test
78 TUPLE: match-replace-test a b ;
81     T{ match-replace-test f 2 1 }
82 ] [
83   T{ match-replace-test f 1 2 }
84   T{ match-replace-test f ?a ?b }
85   T{ match-replace-test f ?b ?a }
86   match-replace
87 ] unit-test