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