diff options
Diffstat (limited to 'test/racc/test_chk_y.rb')
-rw-r--r-- | test/racc/test_chk_y.rb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/racc/test_chk_y.rb b/test/racc/test_chk_y.rb new file mode 100644 index 0000000000..cabad15725 --- /dev/null +++ b/test/racc/test_chk_y.rb @@ -0,0 +1,51 @@ +require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) + +module Racc + class TestChkY < TestCase + def setup + file = File.join(ASSET_DIR, 'chk.y') + @debug_flags = Racc::DebugFlags.parse_option_string('o') + parser = Racc::GrammarFileParser.new(@debug_flags) + @result = parser.parse(File.read(file), File.basename(file)) + @states = Racc::States.new(@result.grammar).nfa + @states.dfa + end + + def test_compile_chk_y + generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) + + # it generates valid ruby + assert Module.new { + self.instance_eval(generator.generate_parser, __FILE__, __LINE__) + } + + grammar = @states.grammar + + assert_equal 0, @states.n_srconflicts + assert_equal 0, @states.n_rrconflicts + assert_equal 0, grammar.n_useless_nonterminals + assert_equal 0, grammar.n_useless_rules + assert_nil grammar.n_expected_srconflicts + end + + def test_compile_chk_y_line_convert + params = @result.params.dup + params.convert_line_all = true + + generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) + + # it generates valid ruby + assert Module.new { + self.instance_eval(generator.generate_parser, __FILE__, __LINE__) + } + + grammar = @states.grammar + + assert_equal 0, @states.n_srconflicts + assert_equal 0, @states.n_rrconflicts + assert_equal 0, grammar.n_useless_nonterminals + assert_equal 0, grammar.n_useless_rules + assert_nil grammar.n_expected_srconflicts + end + end +end |