translate erlectricity list decoder to C
[fuzed.git] / gems / erlectricity / test / matcher_spec.rb
blob9c13550bd770bcda3c598063a1a18f4cfaa79017
1 require File.dirname(__FILE__) + '/test_helper.rb'
3 def false_match(matcher, arg)
4    matcher.matches?(arg).should == false
5 end
7 context "A matcher whose condition is Symbol (the class object)" do
8   setup do
9     @matcher = Erlectricity::Matcher.new(nil, Erlectricity::TypeCondition.new(Symbol), nil)
10   end
11   
12   specify "should match any symbol" do
13     @matcher.matches?(:foo).should == true
14     @matcher.matches?(:bar).should == true
15     @matcher.matches?(:baz).should == true
16   end
17   
18   specify "should not match strings" do
19     @matcher.matches?("foo").should == false
20     @matcher.matches?("bar").should == false
21     @matcher.matches?("baz").should == false
22   end
23   
24   specify "should not match a arrays" do
25     @matcher.matches?([:foo]).should == false
26     @matcher.matches?([:foo, :bar]).should == false
27     @matcher.matches?([:foo, :bar, :baz]).should == false
28   end
29 end
31 context "a matcher whose condition is a symbol" do
32   setup do
33     @matcher = Erlectricity::Matcher.new(nil, Erlectricity::StaticCondition.new(:foo), nil)
34   end
35   
36   specify "should match that symbol" do
37     @matcher.matches?(:foo).should == true
38   end
39   
40   specify "should not match any other symbol" do
41     @matcher.matches?(:bar).should == false
42     @matcher.matches?(:baz).should == false
43   end
44 end
46 context "a matcher whose matcher is an array" do
47   setup do
48   end
49   
50   specify "should match if all of its children match" do
51     Erlectricity::Matcher.new(nil, [Erlectricity::StaticCondition.new(:speak), Erlectricity::TypeCondition.new(Object)], nil).matches?([:paste, "haha"]).should == false
52     
53     matcher = Erlectricity::Matcher.new(nil, [Erlectricity::StaticCondition.new(:foo), Erlectricity::StaticCondition.new(:bar)], nil)
54     matcher.matches?([:foo, :bar]).should == true
55   end
56   
57   specify "should not match any of its children dont match" do
58     matcher = Erlectricity::Matcher.new(nil, [Erlectricity::StaticCondition.new(:foo), Erlectricity::StaticCondition.new(:bar)], nil)
59     matcher.matches?([:foo]).should == false
60     matcher.matches?([:foo, :bar, :baz]).should == false
61     matcher.matches?([:fooo, :barr]).should == false
62     matcher.matches?([3, :bar]).should == false
63   end
64   
65   specify "should not match if arg isn't an array" do
66     matcher = Erlectricity::Matcher.new(nil, [Erlectricity::StaticCondition.new(:foo), Erlectricity::StaticCondition.new(:bar)], nil)
67     matcher.matches?(:foo).should == false
68   end
69 end