exalted_math 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/exalted_math.gemspec +1 -1
- data/lib/exalted_math/ast.rb +1 -1
- data/spec/ast_spec.rb +23 -0
- data/spec/parser_spec.rb +3 -1
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/exalted_math.gemspec
CHANGED
data/lib/exalted_math/ast.rb
CHANGED
data/spec/ast_spec.rb
CHANGED
@@ -22,6 +22,8 @@ describe "Exalted::Ast" do
|
|
22
22
|
@mul_foo = Exalted::Ast.new('mul', @three, @foo)
|
23
23
|
@div_foo = Exalted::Ast.new('div', @three, @foo)
|
24
24
|
@nested = Exalted::Ast.new('mul', @add, @sub_foo)
|
25
|
+
@min = Exalted::Ast.new('min', 1, [@three, @seven] )
|
26
|
+
@max = Exalted::Ast.new('max', 1, [@three, @seven] )
|
25
27
|
@context = { 'foo' => 3, 'bar' => 4 }
|
26
28
|
end
|
27
29
|
|
@@ -53,6 +55,14 @@ describe "Exalted::Ast" do
|
|
53
55
|
@div.should == Ast.div(@seven, @three)
|
54
56
|
end
|
55
57
|
|
58
|
+
it ".min makes a min" do
|
59
|
+
@min.should == Ast.min(1, [@three, @seven])
|
60
|
+
end
|
61
|
+
|
62
|
+
it ".max makes a max" do
|
63
|
+
@max.should == Ast.max(1, [@three, @seven])
|
64
|
+
end
|
65
|
+
|
56
66
|
it "a number is constant" do
|
57
67
|
@three.should.be.constant
|
58
68
|
end
|
@@ -73,6 +83,12 @@ describe "Exalted::Ast" do
|
|
73
83
|
it "an div of two constants is constant" do
|
74
84
|
@div.should.be.constant
|
75
85
|
end
|
86
|
+
it "a min of constants is constant" do
|
87
|
+
@min.should.be.constant
|
88
|
+
end
|
89
|
+
it "a max of constants is constant" do
|
90
|
+
@max.should.be.constant
|
91
|
+
end
|
76
92
|
|
77
93
|
it "an add of constant and not constant is not constant" do
|
78
94
|
@add_foo.should.not.be.constant
|
@@ -154,6 +170,13 @@ describe "Exalted::Ast" do
|
|
154
170
|
Exalted::Ast.value(@div, @context).should == 2
|
155
171
|
end
|
156
172
|
|
173
|
+
it "the value of a min is the mininum value" do
|
174
|
+
Exalted::Ast.value(@min, @context).should == 3
|
175
|
+
end
|
176
|
+
it "the value of a max is the maxinum value" do
|
177
|
+
Exalted::Ast.value(@max, @context).should == 7
|
178
|
+
end
|
179
|
+
|
157
180
|
it "it walks the whole tree to compute a value" do
|
158
181
|
Exalted::Ast.value(@nested, @context).should == 0
|
159
182
|
end
|
data/spec/parser_spec.rb
CHANGED
@@ -17,7 +17,9 @@ describe "Exalted::MathParser" do
|
|
17
17
|
['3 + 4', Ast.add(Ast.num(3), Ast.num(4) )],
|
18
18
|
['6 / 3', Ast.div(Ast.num(6), Ast.num(3) )],
|
19
19
|
['Essence * 4', Ast.mul(Ast.stat('essence'), Ast.num(4) )],
|
20
|
-
['(Essence * 4) + Willpower', Ast.add(Ast.mul(Ast.stat('essence'), Ast.num(4) ), Ast.stat('willpower'))]
|
20
|
+
['(Essence * 4) + Willpower', Ast.add(Ast.mul(Ast.stat('essence'), Ast.num(4) ), Ast.stat('willpower'))],
|
21
|
+
['highest[2](compassion,conviction,temperance,valor)', Ast.max(2, [Ast.stat('compassion'),Ast.stat('conviction'),Ast.stat('temperance'),Ast.stat('valor') ])],
|
22
|
+
['min(compassion,conviction,temperance,valor)', Ast.min(1, [Ast.stat('compassion'),Ast.stat('conviction'),Ast.stat('temperance'),Ast.stat('valor') ])]
|
21
23
|
].each do |string, ast|
|
22
24
|
it "parses '#{string}'" do
|
23
25
|
success, result = @parser.ast(string)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exalted_math
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan Stott
|