wrong 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +3 -1
- data/lib/wrong.rb +2 -1
- data/lib/wrong/chunk.rb +6 -1
- data/lib/wrong/irb.rb +16 -0
- data/lib/wrong/version.rb +1 -1
- data/test/adapters/rspec_test.rb +4 -2
- data/test/assert_test.rb +1 -1
- data/test/suite.rb +1 -1
- data/test/test_helper.rb +8 -1
- metadata +10 -69
- data/lib/predicated/Gemfile +0 -15
- data/lib/predicated/LICENSE +0 -20
- data/lib/predicated/README.markdown +0 -191
- data/lib/predicated/Rakefile +0 -51
- data/lib/predicated/lib/predicated.rb +0 -4
- data/lib/predicated/lib/predicated/autogen_call.rb +0 -37
- data/lib/predicated/lib/predicated/constrain.rb +0 -66
- data/lib/predicated/lib/predicated/evaluate.rb +0 -94
- data/lib/predicated/lib/predicated/from/callable_object.rb +0 -108
- data/lib/predicated/lib/predicated/from/json.rb +0 -59
- data/lib/predicated/lib/predicated/from/ruby_code_string.rb +0 -73
- data/lib/predicated/lib/predicated/from/url_part.rb +0 -104
- data/lib/predicated/lib/predicated/from/xml.rb +0 -61
- data/lib/predicated/lib/predicated/gem_check.rb +0 -34
- data/lib/predicated/lib/predicated/predicate.rb +0 -111
- data/lib/predicated/lib/predicated/print.rb +0 -62
- data/lib/predicated/lib/predicated/selectable.rb +0 -102
- data/lib/predicated/lib/predicated/simple_templated_predicate.rb +0 -79
- data/lib/predicated/lib/predicated/string_utils.rb +0 -20
- data/lib/predicated/lib/predicated/to/arel.rb +0 -41
- data/lib/predicated/lib/predicated/to/json.rb +0 -48
- data/lib/predicated/lib/predicated/to/sentence.rb +0 -94
- data/lib/predicated/lib/predicated/to/solr.rb +0 -15
- data/lib/predicated/lib/predicated/to/xml.rb +0 -67
- data/lib/predicated/lib/predicated/version.rb +0 -3
- data/lib/predicated/predicated.gemspec +0 -22
- data/lib/predicated/test/autogen_call_test.rb +0 -40
- data/lib/predicated/test/canonical_transform_cases.rb +0 -63
- data/lib/predicated/test/constrain_test.rb +0 -86
- data/lib/predicated/test/enumerable_test.rb +0 -32
- data/lib/predicated/test/equality_test.rb +0 -32
- data/lib/predicated/test/evaluate_test.rb +0 -149
- data/lib/predicated/test/from/callable_object_canonical_test.rb +0 -43
- data/lib/predicated/test/from/callable_object_test.rb +0 -78
- data/lib/predicated/test/from/json_test.rb +0 -83
- data/lib/predicated/test/from/ruby_code_string_canonical_test.rb +0 -37
- data/lib/predicated/test/from/ruby_code_string_test.rb +0 -103
- data/lib/predicated/test/from/url_part_parser_test.rb +0 -123
- data/lib/predicated/test/from/url_part_test.rb +0 -48
- data/lib/predicated/test/from/xml_test.rb +0 -57
- data/lib/predicated/test/json_conversion_test.rb +0 -33
- data/lib/predicated/test/print_test.rb +0 -66
- data/lib/predicated/test/selectable_test.rb +0 -123
- data/lib/predicated/test/simple_templated_predicate_test.rb +0 -39
- data/lib/predicated/test/suite.rb +0 -2
- data/lib/predicated/test/test_helper.rb +0 -64
- data/lib/predicated/test/test_helper_with_wrong.rb +0 -6
- data/lib/predicated/test/to/arel_test.rb +0 -85
- data/lib/predicated/test/to/json_test.rb +0 -74
- data/lib/predicated/test/to/sentence_test.rb +0 -90
- data/lib/predicated/test/to/solr_test.rb +0 -39
- data/lib/predicated/test/to/xml_test.rb +0 -72
- data/lib/predicated/test/xml_conversion_test.rb +0 -34
- data/lib/predicated/test_integration/arel_integration_test.rb +0 -52
- data/lib/predicated/test_integration/canonical_integration_cases.rb +0 -66
- data/lib/predicated/test_integration/schema.xml +0 -83
- data/lib/predicated/test_integration/solr_integration_test.rb +0 -71
- data/lib/predicated/test_integration/sqlite_db +0 -0
- data/lib/predicated/test_integration/suite.rb +0 -2
- data/lib/predicated/test_integration/usage_test.rb +0 -252
@@ -1,37 +0,0 @@
|
|
1
|
-
require "./test/test_helper_with_wrong"
|
2
|
-
require "./test/canonical_transform_cases"
|
3
|
-
|
4
|
-
require "predicated/from/ruby_code_string"
|
5
|
-
include Predicated
|
6
|
-
|
7
|
-
regarding "ruby code string - canoical transform cases" do
|
8
|
-
include CanonicalTransformCases
|
9
|
-
|
10
|
-
@expectations = {
|
11
|
-
"simple operations" => {
|
12
|
-
"eq" => Predicate.from_ruby_code_string("'a'==3"),
|
13
|
-
"gt" => Predicate.from_ruby_code_string("'a'>3"),
|
14
|
-
"lt" => Predicate.from_ruby_code_string("'a'<3"),
|
15
|
-
"gte" => Predicate.from_ruby_code_string("'a'>=3"),
|
16
|
-
"lte" => Predicate.from_ruby_code_string("'a'<=3")
|
17
|
-
},
|
18
|
-
"primitive types" => {
|
19
|
-
"false" => Predicate.from_ruby_code_string("'a'==false"),
|
20
|
-
"true" => Predicate.from_ruby_code_string("'a'==true"),
|
21
|
-
"string" => Predicate.from_ruby_code_string("'a'=='yyy'"),
|
22
|
-
},
|
23
|
-
"not" => {
|
24
|
-
"simple" => Predicate.from_ruby_code_string("!('a'==true)")
|
25
|
-
},
|
26
|
-
"simple and / or" => {
|
27
|
-
#parens are necessary around AND's in solr in order to force precedence
|
28
|
-
"and" => Predicate.from_ruby_code_string("'a'==1 && 'b'==2"),
|
29
|
-
"or" => Predicate.from_ruby_code_string("'a'==1 || 'b'==2")
|
30
|
-
},
|
31
|
-
"complex and / or" => {
|
32
|
-
"or and" => Predicate.from_ruby_code_string("'a'==1 && 'b'==2 || 'c'==3")
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
create_canonical_tests(@expectations)
|
37
|
-
end
|
@@ -1,103 +0,0 @@
|
|
1
|
-
require "./test/test_helper"
|
2
|
-
|
3
|
-
require "predicated/from/ruby_code_string"
|
4
|
-
include Predicated
|
5
|
-
|
6
|
-
regarding "parse a ruby predicate string" do
|
7
|
-
|
8
|
-
regarding "basic operations" do
|
9
|
-
|
10
|
-
#'Wrong'-style asserts are specifically avoided here.
|
11
|
-
#the circularity between the two projects will make you crazy if you're not careful
|
12
|
-
|
13
|
-
test "word and" do
|
14
|
-
assert_equal Predicate.from_ruby_code_string("1==1 and 2==2"), Predicate{ And(Eq(1,1),Eq(2,2)) }
|
15
|
-
end
|
16
|
-
|
17
|
-
test "substitute in from the binding" do
|
18
|
-
a = 1
|
19
|
-
b = "1"
|
20
|
-
c = "c"
|
21
|
-
d = Color.new("purple")
|
22
|
-
|
23
|
-
assert_equal Predicate.from_ruby_code_string("a==1", binding()), Predicate{ Eq(1,1) }
|
24
|
-
assert_equal Predicate.from_ruby_code_string("b==1", binding()), Predicate{ Eq("1",1) }
|
25
|
-
assert_equal Predicate.from_ruby_code_string("c==b", binding()), Predicate{ Eq("c","1") }
|
26
|
-
assert_equal Predicate.from_ruby_code_string("d==d", binding()), Predicate{ Eq(Color.new("purple"),
|
27
|
-
Color.new("purple")) }
|
28
|
-
assert_equal Predicate.from_ruby_code_string("d==d", binding()).left, d
|
29
|
-
|
30
|
-
assert_equal Predicate.from_ruby_code_string("a==b && b==c", binding()),
|
31
|
-
Predicate{ And(Eq(1,"1"),Eq("1","c")) }
|
32
|
-
end
|
33
|
-
|
34
|
-
|
35
|
-
test "parens change precedence" do
|
36
|
-
assert_equal Predicate.from_ruby_code_string("1==1 || 2==2 && 3==3"),
|
37
|
-
Predicate{ Or( Eq(1,1), And(Eq(2,2),Eq(3,3)) ) }
|
38
|
-
|
39
|
-
assert_equal Predicate.from_ruby_code_string("(1==1 || 2==2) && 3==3"),
|
40
|
-
Predicate{ And( Or(Eq(1,1),Eq(2,2)), Eq(3,3) ) }
|
41
|
-
end
|
42
|
-
|
43
|
-
regarding "only pay attention to the final line" do
|
44
|
-
#might hate myself one day for this. but what else does it make sense to do?
|
45
|
-
|
46
|
-
test "simple" do
|
47
|
-
assert_equal Predicate.from_ruby_code_string("z=2\nb=5\n1==1"), Predicate{ Eq(1,1) }
|
48
|
-
end
|
49
|
-
|
50
|
-
test "can make use of variables defined earlier in the block" do
|
51
|
-
#might hate myself one day for this. but what else does it make sense to do?
|
52
|
-
assert_equal Predicate.from_ruby_code_string("z=2\nb=5\nz==1"), Predicate{ Eq(2,1) }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
test "a call that returns a boolean result" do
|
57
|
-
assert_equal Predicate.from_ruby_code_string("'abc'.include?('bc')"),
|
58
|
-
Predicate{ Call("abc", :include?, "bc") }
|
59
|
-
|
60
|
-
color = Color.new("purple")
|
61
|
-
assert_equal Predicate.from_ruby_code_string("color.name.include?('rp')", binding()),
|
62
|
-
Predicate{ Call("purple", :include?, "rp") }
|
63
|
-
|
64
|
-
assert_equal Predicate.from_ruby_code_string("'abc'.nil?"),
|
65
|
-
Predicate{ Call("abc", :nil?, nil) }
|
66
|
-
end
|
67
|
-
|
68
|
-
test "use of instance variables" do
|
69
|
-
@a = 1
|
70
|
-
|
71
|
-
assert_equal Predicate.from_ruby_code_string("@a==1", binding()), Predicate{ Eq(1,1) }
|
72
|
-
end
|
73
|
-
|
74
|
-
test "use of inline assignments" do
|
75
|
-
assert_equal Predicate.from_ruby_code_string("(a=2)==1 && a==1"),
|
76
|
-
Predicate{ And(Eq(2,1), Eq(2,1)) }
|
77
|
-
end
|
78
|
-
|
79
|
-
test "use of inline expressions" do
|
80
|
-
assert_equal Predicate.from_ruby_code_string("(2*1)==1"),
|
81
|
-
Predicate{ Eq(2,1) }
|
82
|
-
|
83
|
-
assert_equal Predicate.from_ruby_code_string("[2,1].first==1"),
|
84
|
-
Predicate{ Eq(2,1) }
|
85
|
-
end
|
86
|
-
|
87
|
-
|
88
|
-
end
|
89
|
-
|
90
|
-
regarding "errors" do
|
91
|
-
test "can't parse" do
|
92
|
-
assert_raises(Racc::ParseError) do
|
93
|
-
Predicate.from_ruby_code_string("bad ruby @@@@@****()(((")
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
test "predicates only" do
|
98
|
-
assert_raises(Predicated::Predicate::DontKnowWhatToDoWithThisSexpError) do
|
99
|
-
Predicate.from_ruby_code_string("a=1")
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
@@ -1,123 +0,0 @@
|
|
1
|
-
require "./test/test_helper_with_wrong"
|
2
|
-
|
3
|
-
require "predicated/predicate"
|
4
|
-
require "predicated/from/url_part"
|
5
|
-
include Predicated
|
6
|
-
|
7
|
-
regarding "parse a url part, the result is a parse tree" do
|
8
|
-
|
9
|
-
before do
|
10
|
-
@parser = TreetopUrlPartParser.new
|
11
|
-
end
|
12
|
-
|
13
|
-
regarding "simple operations" do
|
14
|
-
|
15
|
-
test "parse" do
|
16
|
-
tree = @parser.parse("a=1")
|
17
|
-
|
18
|
-
assert{ tree.is_a?(Predicated::TreetopUrlPart::OperationNode) }
|
19
|
-
assert{ [tree.left_text, tree.sign_text, tree.right_text] == ["a", "=", "1"] }
|
20
|
-
|
21
|
-
tree = @parser.parse("a>1")
|
22
|
-
assert{ [tree.left_text, tree.sign_text, tree.right_text] == ["a", ">", "1"] }
|
23
|
-
|
24
|
-
tree = @parser.parse("a<1")
|
25
|
-
assert{ [tree.left_text, tree.sign_text, tree.right_text] == ["a", "<", "1"] }
|
26
|
-
|
27
|
-
tree = @parser.parse("a>=1")
|
28
|
-
assert{ [tree.left_text, tree.sign_text, tree.right_text] == ["a", ">=", "1"] }
|
29
|
-
|
30
|
-
tree = @parser.parse("a<=1")
|
31
|
-
assert{ [tree.left_text, tree.sign_text, tree.right_text] == ["a", "<=", "1"] }
|
32
|
-
end
|
33
|
-
|
34
|
-
test "...to predicate" do
|
35
|
-
assert{ @parser.parse("a=1").to_predicate == Predicate{Eq("a", "1")} }
|
36
|
-
assert{ @parser.parse("a>1").to_predicate == Predicate{Gt("a", "1")} }
|
37
|
-
assert{ @parser.parse("a<1").to_predicate == Predicate{Lt("a", "1")} }
|
38
|
-
assert{ @parser.parse("a>=1").to_predicate == Predicate{Gte("a", "1")} }
|
39
|
-
assert{ @parser.parse("a<=1").to_predicate == Predicate{Lte("a", "1")} }
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
regarding "simple and" do
|
45
|
-
test "parse" do
|
46
|
-
tree = @parser.parse("a=1&b=2")
|
47
|
-
|
48
|
-
assert{ tree.is_a?(Predicated::TreetopUrlPart::AndNode) }
|
49
|
-
assert{ [[tree.left.left_text, tree.left.sign_text, tree.left.right_text],
|
50
|
-
[tree.right.left_text, tree.right.sign_text, tree.right.right_text]] ==
|
51
|
-
[["a", "=", "1"], ["b", "=", "2"]] }
|
52
|
-
end
|
53
|
-
|
54
|
-
test "...to predicate" do
|
55
|
-
assert{ @parser.parse("a=1&b=2").to_predicate == Predicate{ And( Eq("a", "1"),Eq("b", "2") ) } }
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
regarding "simple or" do
|
60
|
-
test "parse" do
|
61
|
-
tree = @parser.parse("a=1|b=2")
|
62
|
-
|
63
|
-
assert{ tree.is_a?(Predicated::TreetopUrlPart::OrNode) }
|
64
|
-
assert{ [[tree.left.left_text, tree.left.sign_text, tree.left.right_text],
|
65
|
-
[tree.right.left_text, tree.right.sign_text, tree.right.right_text]] ==
|
66
|
-
[["a", "=", "1"], ["b", "=", "2"]] }
|
67
|
-
end
|
68
|
-
|
69
|
-
test "...to predicate" do
|
70
|
-
assert{ @parser.parse("a=1|b=2").to_predicate == Predicate{ Or( Eq("a", "1"),Eq("b", "2") ) } }
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
regarding "complex and/or" do
|
75
|
-
test "many or's" do
|
76
|
-
assert{ @parser.parse("a=1|b=2|c=3").to_predicate ==
|
77
|
-
Predicate{ Or( Eq("a", "1"), Or(Eq("b", "2"),Eq("c", "3")) ) } }
|
78
|
-
end
|
79
|
-
|
80
|
-
test "many and's" do
|
81
|
-
assert{ @parser.parse("a=1&b=2&c=3").to_predicate ==
|
82
|
-
Predicate{ And( Eq("a", "1"), And(Eq("b", "2"),Eq("c", "3")) ) } }
|
83
|
-
end
|
84
|
-
|
85
|
-
test "mixed and/or" do
|
86
|
-
assert{ @parser.parse("a=1|b=2&c=3").to_predicate ==
|
87
|
-
Predicate{ Or( Eq("a", "1"), And(Eq("b", "2"),Eq("c", "3")) ) } }
|
88
|
-
|
89
|
-
assert{ @parser.parse("a=1&b=2|c=3").to_predicate ==
|
90
|
-
Predicate{ Or( And(Eq("a", "1"),Eq("b", "2")), Eq("c", "3") ) } }
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
regarding "parens (force higher precedence)" do
|
95
|
-
test "no effect" do
|
96
|
-
str = "(a=1|b=2)|c=3"
|
97
|
-
assert{ @parser.parse(str).to_predicate ==
|
98
|
-
Predicate{ Or( Or(Eq("a", "1"),Eq("b", "2")), Eq("c", "3") ) } }
|
99
|
-
|
100
|
-
str = "((a=1|b=2))|c=3"
|
101
|
-
assert{ @parser.parse(str).to_predicate ==
|
102
|
-
Predicate{ Or( Or(Eq("a", "1"),Eq("b", "2")), Eq("c", "3") ) } }
|
103
|
-
end
|
104
|
-
|
105
|
-
test "force precedence" do
|
106
|
-
#before
|
107
|
-
assert{ @parser.parse("a=1|b=2&c=3").to_predicate ==
|
108
|
-
Predicate{ Or( Eq("a", "1"), And(Eq("b", "2"),Eq("c", "3")) ) } }
|
109
|
-
|
110
|
-
#after
|
111
|
-
assert{ @parser.parse("(a=1|b=2)&c=3").to_predicate ==
|
112
|
-
Predicate{ And( Or(Eq("a", "1"),Eq("b", "2")), Eq("c", "3") ) } }
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
regarding "not" do
|
117
|
-
test "force precedence" do
|
118
|
-
assert{ @parser.parse("!(a=1)").to_predicate ==
|
119
|
-
Predicate{ Not(Eq("a", "1")) } }
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require "./test/test_helper_with_wrong"
|
2
|
-
|
3
|
-
require "predicated/from/url_part"
|
4
|
-
require "./test/canonical_transform_cases"
|
5
|
-
include Predicated
|
6
|
-
|
7
|
-
regarding "parse url parts and convert them into predicates" do
|
8
|
-
include CanonicalTransformCases
|
9
|
-
|
10
|
-
@expectations = {
|
11
|
-
"simple operations" => {
|
12
|
-
"eq" => Predicate.from_url_part("a=3"),
|
13
|
-
"gt" => Predicate.from_url_part("a>3"),
|
14
|
-
"lt" => Predicate.from_url_part("a<3"),
|
15
|
-
"gte" => Predicate.from_url_part("a>=3"),
|
16
|
-
"lte" => Predicate.from_url_part("a<=3")
|
17
|
-
},
|
18
|
-
"primitive types" => {
|
19
|
-
"false" => Predicate.from_url_part("a=false"),
|
20
|
-
"true" => Predicate.from_url_part("a=true"),
|
21
|
-
"string" => Predicate.from_url_part("a=yyy"),
|
22
|
-
},
|
23
|
-
"not" => {
|
24
|
-
"simple" => Predicate.from_url_part("!(a=true)")
|
25
|
-
},
|
26
|
-
"simple and / or" => {
|
27
|
-
#parens are necessary around AND's in solr in order to force precedence
|
28
|
-
"and" => Predicate.from_url_part("a=1&b=2"),
|
29
|
-
"or" => Predicate.from_url_part("a=1|b=2")
|
30
|
-
},
|
31
|
-
"complex and / or" => {
|
32
|
-
"or and" => Predicate.from_url_part("a=1&b=2|c=3")
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
create_canonical_tests(@expectations, proper_typing=false)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
test "parens change precedence" do
|
41
|
-
assert { Predicate.from_url_part("a=1|b=2&c=3") ==
|
42
|
-
Predicate{ Or( Eq("a","1"), And(Eq("b","2"),Eq("c","3")) ) } }
|
43
|
-
|
44
|
-
assert { Predicate.from_url_part("(a=1|b=2)&c=3") ==
|
45
|
-
Predicate{ And( Or(Eq("a","1"),Eq("b","2")), Eq("c","3") ) } }
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require "./test/test_helper_with_wrong"
|
2
|
-
require "./test/canonical_transform_cases"
|
3
|
-
|
4
|
-
require "predicated/from/xml"
|
5
|
-
include Predicated
|
6
|
-
|
7
|
-
regarding "convert an xml string to a predicate" do
|
8
|
-
include CanonicalTransformCases
|
9
|
-
|
10
|
-
@expectations = {
|
11
|
-
"simple operations" => {
|
12
|
-
"eq" => Predicate.from_xml("<equal><left>a</left><right>3</right></equal>"),
|
13
|
-
"gt" => Predicate.from_xml("<greaterThan><left>a</left><right>3</right></greaterThan>"),
|
14
|
-
"lt" => Predicate.from_xml("<lessThan><left>a</left><right>3</right></lessThan>"),
|
15
|
-
"gte" =>
|
16
|
-
Predicate.from_xml("<greaterThanOrEqualTo><left>a</left><right>3</right></greaterThanOrEqualTo>"),
|
17
|
-
"lte" =>
|
18
|
-
Predicate.from_xml("<lessThanOrEqualTo><left>a</left><right>3</right></lessThanOrEqualTo>")
|
19
|
-
},
|
20
|
-
"primitive types" => {
|
21
|
-
"false" => Predicate.from_xml("<equal><left>a</left><right>false</right></equal>"),
|
22
|
-
"true" => Predicate.from_xml("<equal><left>a</left><right>true</right></equal>"),
|
23
|
-
"string" => Predicate.from_xml("<equal><left>a</left><right>yyy</right></equal>"),
|
24
|
-
},
|
25
|
-
"not" => {
|
26
|
-
"simple" => Predicate.from_xml("<not><equal><left>a</left><right>true</right></equal></not>")
|
27
|
-
},
|
28
|
-
"simple and / or" => {
|
29
|
-
#parens are necessary around AND's in solr in order to force precedence
|
30
|
-
"and" => Predicate.from_xml(%{
|
31
|
-
<and>
|
32
|
-
<equal><left>a</left><right>1</right></equal>
|
33
|
-
<equal><left>b</left><right>2</right></equal>
|
34
|
-
</and>
|
35
|
-
}),
|
36
|
-
"or" => Predicate.from_xml(%{
|
37
|
-
<or>
|
38
|
-
<equal><left>a</left><right>1</right></equal>
|
39
|
-
<equal><left>b</left><right>2</right></equal>
|
40
|
-
</or>
|
41
|
-
})
|
42
|
-
},
|
43
|
-
"complex and / or" => {
|
44
|
-
"or and" => Predicate.from_xml(%{
|
45
|
-
<or>
|
46
|
-
<and>
|
47
|
-
<equal><left>a</left><right>1</right></equal>
|
48
|
-
<equal><left>b</left><right>2</right></equal>
|
49
|
-
</and>
|
50
|
-
<equal><left>c</left><right>3</right></equal>
|
51
|
-
</or>
|
52
|
-
})
|
53
|
-
}
|
54
|
-
}
|
55
|
-
|
56
|
-
create_canonical_tests(@expectations, proper_typing=false)
|
57
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require "./test/test_helper_with_wrong"
|
2
|
-
|
3
|
-
require "predicated/from/json"
|
4
|
-
require "predicated/to/json"
|
5
|
-
include Predicated
|
6
|
-
|
7
|
-
regarding "convert json back and forth" do
|
8
|
-
|
9
|
-
test "string to predicate to string" do
|
10
|
-
assert{ Predicate.from_json_str(%{["a","==",3]}).to_json_str ==
|
11
|
-
JSON.pretty_generate(JSON.parse(%{["a","==",3]})) }
|
12
|
-
|
13
|
-
complex_json_str = %{
|
14
|
-
{
|
15
|
-
"or":[
|
16
|
-
{"and":[["a","==",1],["b","==",2]]},
|
17
|
-
["c","==",3]
|
18
|
-
]
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
assert{ Predicate.from_json_str(complex_json_str).to_json_str ==
|
23
|
-
JSON.pretty_generate(JSON.parse(complex_json_str)) }
|
24
|
-
end
|
25
|
-
|
26
|
-
test "predicate to string to predicate" do
|
27
|
-
assert{ Predicate.from_json_str(Predicate{ Eq("a",3) }.to_json_str) == Predicate{ Eq("a",3) } }
|
28
|
-
|
29
|
-
assert{ Predicate.from_json_str(Predicate{ Or(And(Eq("a",1),Eq("b",2)), Eq("c",3)) }.to_json_str) ==
|
30
|
-
Predicate{ Or(And(Eq("a",1),Eq("b",2)), Eq("c",3)) } }
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require "./test/test_helper_with_wrong"
|
2
|
-
|
3
|
-
require "predicated/predicate"
|
4
|
-
include Predicated
|
5
|
-
|
6
|
-
regarding "a predicate looks nice with you to_s it" do
|
7
|
-
test "numbers" do
|
8
|
-
assert { Predicate { Eq(1, 1) }.to_s == "Eq(1,1)" }
|
9
|
-
assert { Predicate { Lt(1, 2) }.to_s == "Lt(1,2)" }
|
10
|
-
end
|
11
|
-
|
12
|
-
test "booleans" do
|
13
|
-
assert { Predicate { Eq(false, true) }.to_s == "Eq(false,true)" }
|
14
|
-
end
|
15
|
-
|
16
|
-
test "strings" do
|
17
|
-
assert { Predicate { Eq("foo", "bar") }.to_s == "Eq('foo','bar')" }
|
18
|
-
end
|
19
|
-
|
20
|
-
test "nil" do
|
21
|
-
assert { Predicate { Eq("foo", nil) }.to_s == "Eq('foo',nil)" }
|
22
|
-
end
|
23
|
-
|
24
|
-
test "objects" do
|
25
|
-
assert {
|
26
|
-
Predicate {
|
27
|
-
Eq(Color.new("red"), Color.new("blue"))
|
28
|
-
}.to_s == "Eq(Color{'name:red'},Color{'name:blue'})"
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
test "and, or" do
|
33
|
-
assert { Predicate { And(true, false) }.to_s == "And(true,false)" }
|
34
|
-
assert { Predicate { Or(true, false) }.to_s == "Or(true,false)" }
|
35
|
-
|
36
|
-
assert { Predicate { And(Eq(1, 1) , Eq(2, 2)) }.to_s == "And(Eq(1,1),Eq(2,2))" }
|
37
|
-
|
38
|
-
assert { Predicate { And(Eq(1, 1), Or(Eq(2, 2), Eq(3, 3))) }.to_s == "And(Eq(1,1),Or(Eq(2,2),Eq(3,3)))" }
|
39
|
-
end
|
40
|
-
|
41
|
-
test "not" do
|
42
|
-
assert { Predicate { Not(Eq(1, 1)) }.to_s == "Not(Eq(1,1))" }
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
regarding "inspect is like to_s except it's multiline, so you see the tree structure" do
|
48
|
-
|
49
|
-
test "an uncomplicated predicate prints on one line" do
|
50
|
-
assert { Predicate { Eq(1, 1) }.inspect == "Eq(1,1)" }
|
51
|
-
end
|
52
|
-
|
53
|
-
test "complex" do
|
54
|
-
assert {
|
55
|
-
Predicate { And(Eq(1, 1), Or(Eq(2, 2), Eq(3, 3))) }.inspect ==
|
56
|
-
%{And(
|
57
|
-
Eq(1,1),
|
58
|
-
Or(
|
59
|
-
Eq(2,2),
|
60
|
-
Eq(3,3)
|
61
|
-
)
|
62
|
-
)
|
63
|
-
}
|
64
|
-
}
|
65
|
-
end
|
66
|
-
end
|