spec/rley/formatter/debug_spec.rb in rley-0.1.08 vs spec/rley/formatter/debug_spec.rb in rley-0.1.09
- old
+ new
@@ -8,79 +8,77 @@
require_relative '../../../lib/rley/parse_tree_visitor'
# Load the class under test
require_relative '../../../lib/rley/formatter/debug'
module Rley # Re-open the module to get rid of qualified names
-module Formatter
+ module Formatter
+ describe Debug do
+ include GrammarABCHelper # Mix-in module for grammar abc
-describe Debug do
- include GrammarABCHelper # Mix-in module with builder for grammar abc
+ # Factory method. Build a production with the given sequence
+ # of symbols as its rhs.
+ let(:grammar_abc) do
+ builder = grammar_abc_builder
+ builder.grammar
+ end
+
+ # Variables for the terminal symbols
+ let(:a_) { grammar_abc.name2symbol['a'] }
+ let(:b_) { grammar_abc.name2symbol['b'] }
+ let(:c_) { grammar_abc.name2symbol['c'] }
+
+ # Helper method that mimicks the output of a tokenizer
+ # for the language specified by gramma_abc
+ let(:grm_abc_tokens1) do
+ [
+ Parser::Token.new('a', a_),
+ Parser::Token.new('a', a_),
+ Parser::Token.new('b', b_),
+ Parser::Token.new('c', c_),
+ Parser::Token.new('c', c_)
+ ]
+ end
- # Factory method. Build a production with the given sequence
- # of symbols as its rhs.
- let(:grammar_abc) do
- builder = grammar_abc_builder
- builder.grammar
- end
-
- # Variables for the terminal symbols
- let(:a_) { grammar_abc.name2symbol['a'] }
- let(:b_) { grammar_abc.name2symbol['b'] }
- let(:c_) { grammar_abc.name2symbol['c'] }
-
- # Helper method that mimicks the output of a tokenizer
- # for the language specified by gramma_abc
- let(:grm_abc_tokens1) do
- [
- Parser::Token.new('a', a_),
- Parser::Token.new('a', a_),
- Parser::Token.new('b', b_),
- Parser::Token.new('c', c_),
- Parser::Token.new('c', c_)
- ]
- end
-
- # Factory method that builds a sample parse tree.
- # Generated tree has the following structure:
- # S[0,5]
- # +- A[0,5]
- # +- a[0,0]
- # +- A[1,4]
- # | +- a[1,1]
- # | +- A[2,3]
- # | | +- b[2,3]
- # | +- c[3,4]
- # +- c[4,5]
- # Capital letters represent non-terminal nodes
- let(:grm_abc_ptree1) do
- parser = Parser::EarleyParser.new(grammar_abc)
- parse_result = parser.parse(grm_abc_tokens1)
- parse_result.parse_tree
- end
+ # Factory method that builds a sample parse tree.
+ # Generated tree has the following structure:
+ # S[0,5]
+ # +- A[0,5]
+ # +- a[0,0]
+ # +- A[1,4]
+ # | +- a[1,1]
+ # | +- A[2,3]
+ # | | +- b[2,3]
+ # | +- c[3,4]
+ # +- c[4,5]
+ # Capital letters represent non-terminal nodes
+ let(:grm_abc_ptree1) do
+ parser = Parser::EarleyParser.new(grammar_abc)
+ parse_result = parser.parse(grm_abc_tokens1)
+ parse_result.parse_tree
+ end
- let(:destination) { StringIO.new('', 'w') }
+ let(:destination) { StringIO.new('', 'w') }
- context 'Standard creation & initialization:' do
-
- it 'should be initialized with an IO argument' do
- expect { Debug.new(StringIO.new('', 'w')) }.not_to raise_error
- end
-
- it 'should know its output destination' do
- instance = Debug.new(destination)
- expect(instance.output).to eq(destination)
- end
- end # context
+ context 'Standard creation & initialization:' do
+ it 'should be initialized with an IO argument' do
+ expect { Debug.new(StringIO.new('', 'w')) }.not_to raise_error
+ end
+
+ it 'should know its output destination' do
+ instance = Debug.new(destination)
+ expect(instance.output).to eq(destination)
+ end
+ end # context
- context 'Formatting events:' do
- it 'should support visit events of a parse tree' do
- instance = Debug.new(destination)
- visitor = Rley::ParseTreeVisitor.new(grm_abc_ptree1)
- instance.render(visitor)
- expectations = <<-SNIPPET
+ context 'Formatting events:' do
+ it 'should support visit events of a parse tree' do
+ instance = Debug.new(destination)
+ visitor = Rley::ParseTreeVisitor.new(grm_abc_ptree1)
+ instance.render(visitor)
+ expectations = <<-SNIPPET
before_ptree
before_non_terminal
before_children
before_non_terminal
before_children
@@ -106,14 +104,13 @@
after_non_terminal
after_children
after_non_terminal
after_ptree
SNIPPET
- expect(destination.string).to eq(expectations)
- end
- end # context
-end # describe
-
-end # module
+ expect(destination.string).to eq(expectations)
+ end
+ end # context
+ end # describe
+ end # module
end # module
# End of file