From 01b610b146fb300e928fdf70331f507a4775ed9d Mon Sep 17 00:00:00 2001 From: Roguelearg Date: Thu, 14 Sep 2017 12:08:33 +0200 Subject: [PATCH] Add some priority spec --- lib/mm2ep_depend/parser.rb | 13 +++++-- spec/files/priority_not_and.txt | 1 + spec/files/priority_not_or.txt | 1 + spec/files/priority_or_and.txt | 1 + spec/files/priority_or_and_or.txt | 1 + spec/files/simple_expr_and_expr.txt | 2 +- spec/files/simple_expr_or_expr.txt | 2 +- spec/files/test2.txt | 1 - spec/files/test3.txt | 1 - spec/files/test4.txt | 1 - spec/mm2ep_depend/priority_parser_spec.rb | 34 +++++++++++++++++++ ...ser_spec.rb => simple_expr_parser_spec.rb} | 2 +- 12 files changed, 51 insertions(+), 9 deletions(-) create mode 100644 spec/files/priority_not_and.txt create mode 100644 spec/files/priority_not_or.txt create mode 100644 spec/files/priority_or_and.txt create mode 100644 spec/files/priority_or_and_or.txt delete mode 100644 spec/files/test2.txt delete mode 100644 spec/files/test3.txt delete mode 100644 spec/files/test4.txt create mode 100644 spec/mm2ep_depend/priority_parser_spec.rb rename spec/mm2ep_depend/{parser_spec.rb => simple_expr_parser_spec.rb} (98%) diff --git a/lib/mm2ep_depend/parser.rb b/lib/mm2ep_depend/parser.rb index ca28d5c..943b50b 100755 --- a/lib/mm2ep_depend/parser.rb +++ b/lib/mm2ep_depend/parser.rb @@ -20,7 +20,11 @@ module Mm2ep class VarValue < TreeValue def initialize(str, value) @name = str - @value = value + @value = case value + when /true/i then true + when /false/i then false + else value + end end def compute @@ -62,7 +66,10 @@ module Mm2ep class BoolValue < TreeValue def initialize(str) - @value = str + @value = case str + when /true/i then true + when /false/i then false + end end def compute @@ -125,7 +132,7 @@ module Mm2ep end def compute - @lval.value.eql? @rval.value + @lval.value == @rval.value end def to_s diff --git a/spec/files/priority_not_and.txt b/spec/files/priority_not_and.txt new file mode 100644 index 0000000..b9a7920 --- /dev/null +++ b/spec/files/priority_not_and.txt @@ -0,0 +1 @@ +NOT false AND NOT false diff --git a/spec/files/priority_not_or.txt b/spec/files/priority_not_or.txt new file mode 100644 index 0000000..71a4043 --- /dev/null +++ b/spec/files/priority_not_or.txt @@ -0,0 +1 @@ +NOT true OR NOT true diff --git a/spec/files/priority_or_and.txt b/spec/files/priority_or_and.txt new file mode 100644 index 0000000..b60a4f5 --- /dev/null +++ b/spec/files/priority_or_and.txt @@ -0,0 +1 @@ +false OR true AND false diff --git a/spec/files/priority_or_and_or.txt b/spec/files/priority_or_and_or.txt new file mode 100644 index 0000000..aa5e387 --- /dev/null +++ b/spec/files/priority_or_and_or.txt @@ -0,0 +1 @@ +false OR false AND true OR true diff --git a/spec/files/simple_expr_and_expr.txt b/spec/files/simple_expr_and_expr.txt index 96c37e2..bda6f86 100644 --- a/spec/files/simple_expr_and_expr.txt +++ b/spec/files/simple_expr_and_expr.txt @@ -1 +1 @@ -truc_bidule and machin +truc_bidule AND machin diff --git a/spec/files/simple_expr_or_expr.txt b/spec/files/simple_expr_or_expr.txt index 8a8fa22..ae670ef 100644 --- a/spec/files/simple_expr_or_expr.txt +++ b/spec/files/simple_expr_or_expr.txt @@ -1 +1 @@ -truc_bidule or machin +truc_bidule OR machin diff --git a/spec/files/test2.txt b/spec/files/test2.txt deleted file mode 100644 index eed18cf..0000000 --- a/spec/files/test2.txt +++ /dev/null @@ -1 +0,0 @@ -NOT ( truc_bidule = true ) OR ( truc ) AND machin = false diff --git a/spec/files/test3.txt b/spec/files/test3.txt deleted file mode 100644 index 5808f7f..0000000 --- a/spec/files/test3.txt +++ /dev/null @@ -1 +0,0 @@ -NOT ( truc_bidule = true ) OR ( true ) AND machin = false diff --git a/spec/files/test4.txt b/spec/files/test4.txt deleted file mode 100644 index 76b6ba4..0000000 --- a/spec/files/test4.txt +++ /dev/null @@ -1 +0,0 @@ -NOT true OR NOT false AND true OR false diff --git a/spec/mm2ep_depend/priority_parser_spec.rb b/spec/mm2ep_depend/priority_parser_spec.rb new file mode 100644 index 0000000..902ad70 --- /dev/null +++ b/spec/mm2ep_depend/priority_parser_spec.rb @@ -0,0 +1,34 @@ +require 'spec_helper' +require 'mm2ep_depend' + +describe Mm2ep::Depend::Parser do + + it 'has to do not before or' do + line = File.read(testfile('priority_not_or.txt')).delete("\n") + parser = Mm2ep::Depend::Parser.new(Mm2ep::Depend::Lexer.new) + token = parser.parse(line.chomp) + assert_equal(false, token.compute) + end + + it 'has to do not before and' do + line = File.read(testfile('priority_not_and.txt')).delete("\n") + parser = Mm2ep::Depend::Parser.new(Mm2ep::Depend::Lexer.new) + token = parser.parse(line.chomp) + assert_equal(true, token.compute) + end + + it 'has to do and before or' do + line = File.read(testfile('priority_or_and.txt')).delete("\n") + parser = Mm2ep::Depend::Parser.new(Mm2ep::Depend::Lexer.new) + token = parser.parse(line.chomp) + assert_equal(false, token.compute) + end + + it 'has to do and before or operators' do + line = File.read(testfile('priority_or_and_or.txt')).delete("\n") + parser = Mm2ep::Depend::Parser.new(Mm2ep::Depend::Lexer.new) + token = parser.parse(line.chomp) + assert_equal(true, token.compute) + end + +end diff --git a/spec/mm2ep_depend/parser_spec.rb b/spec/mm2ep_depend/simple_expr_parser_spec.rb similarity index 98% rename from spec/mm2ep_depend/parser_spec.rb rename to spec/mm2ep_depend/simple_expr_parser_spec.rb index c16e40e..4e2ef3b 100644 --- a/spec/mm2ep_depend/parser_spec.rb +++ b/spec/mm2ep_depend/simple_expr_parser_spec.rb @@ -59,7 +59,7 @@ describe Mm2ep::Depend::Parser do end it 'has to evaluate true OR true and return true' do - line = File.read(testfile('simple_or_expr_string.txt')).delete("\n") + line = File.read(testfile('simple_expr_or_expr.txt')).delete("\n") parser = Mm2ep::Depend::Parser.new(Mm2ep::Depend::Lexer.new) parser.names={'truc_bidule' => 'true', 'machin' => 'true'