spec/parser_spec.rb in exalted_math-0.1.3 vs spec/parser_spec.rb in exalted_math-0.2.0
- old
+ new
@@ -1,45 +1,35 @@
#!/usr/bin/ruby
-# Jonathan D. Stott <jonathan.stott@gmail.com>
require 'spec_helper'
require 'exalted_math'
-include Exalted
+include ExaltedMath
-class ParserFailure < Bacon::Error
- def initialize(failure)
- super :failure, failure
- end
-end
describe "Exalted::MathParser" do
before do
- @parser = Exalted::MathsParser.new
+ @parser = ExaltedMath::MathsParser.new
end
[
- [' 4 ', Ast.num(4)],
- [' -1 ', Ast.num(-1)],
- [' 3 * 4 ', Ast.mul(Ast.num(3), Ast.num(4) )],
- [' 3 - 4 ', Ast.sub(Ast.num(3), Ast.num(4) )],
- [' 3 + 4 ', Ast.add(Ast.num(3), Ast.num(4) )],
- [' 6 / 3 ', Ast.div(Ast.num(6), Ast.num(3) )],
- [' spec:"Beating stuff" ', Ast.spec("Beating stuff")],
- ['Essence * 4', Ast.mul(Ast.stat('essence'), Ast.num(4) )],
- ['(Essence * 4) + Willpower', Ast.add(Ast.mul(Ast.stat('essence'), Ast.num(4) ), Ast.stat('willpower'))],
- ['highest[2](compassion,conviction,temperance,valor)', Ast.max(2, [Ast.stat('compassion'),Ast.stat('conviction'),Ast.stat('temperance'),Ast.stat('valor') ])],
- ['min(compassion,conviction,temperance,valor)', Ast.min(1, [Ast.stat('compassion'),Ast.stat('conviction'),Ast.stat('temperance'),Ast.stat('valor') ])]
+ [' 4 ', Node::Number.new(4)],
+ [' -1 ', Node::Number.new(-1)],
+ [' 3 * 4 ', Node::Multiply.new(Node::Number.new(3), Node::Number.new(4) )],
+ [' 3 - 4 ', Node::Subtract.new(Node::Number.new(3), Node::Number.new(4) )],
+ [' 3 + 4 ', Node::Add.new(Node::Number.new(3), Node::Number.new(4) )],
+ [' 6 / 3 ', Node::Divide.new(Node::Number.new(6), Node::Number.new(3) )],
+ [' spec:"Beating stuff" ', Node::Spec.new("Beating stuff")],
+ ['Essence * 4', Node::Multiply.new(Node::Stat.new('essence'), Node::Number.new(4) )],
+ ['(Essence * 4) + Willpower', Node::Add.new(Node::Multiply.new(Node::Stat.new('essence'), Node::Number.new(4) ), Node::Stat.new('willpower'))],
+ ['highest[2](compassion,conviction,temperance,valor)', Node::Maximum.new([Node::Stat.new('compassion'),Node::Stat.new('conviction'),Node::Stat.new('temperance'),Node::Stat.new('valor') ], 2)],
+ ['min(compassion,conviction,temperance,valor)', Node::Minimum.new([Node::Stat.new('compassion'),Node::Stat.new('conviction'),Node::Stat.new('temperance'),Node::Stat.new('valor') ], 1)]
].each do |string, ast|
it "parses '#{string}'" do
- success, result = @parser.ast(string)
- raise ParserFailure, result unless success
- success.should.be.true
+ result = @parser.ast(string)
result.should == ast
end
end
it "Doesn't care about spaces" do
- success, result = @parser.ast(' ( Essence * 4 ) + Willpower + highest[2]( compassion , conviction ) ')
- raise ParserFailure, result unless success
- success.should.be.true
+ proc { @parser.ast(' ( Essence * 4 ) + Willpower + highest[2]( compassion , conviction ) ') }.should.not.raise(ParseFailedError)
end
end