rley 0.3.04 → 0.3.05

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +7 -3
  3. data/CHANGELOG.md +3 -0
  4. data/Rakefile +30 -30
  5. data/examples/parsers/parsing_L0.rb +1 -1
  6. data/examples/parsers/parsing_L1.rb +1 -1
  7. data/examples/parsers/parsing_abc.rb +1 -1
  8. data/examples/parsers/parsing_ambig.rb +1 -1
  9. data/examples/parsers/parsing_another.rb +1 -1
  10. data/examples/parsers/parsing_b_expr.rb +1 -1
  11. data/examples/parsers/parsing_err_expr.rb +1 -1
  12. data/examples/parsers/parsing_groucho.rb +1 -1
  13. data/examples/parsers/parsing_right_recursive.rb +1 -1
  14. data/examples/parsers/parsing_tricky.rb +1 -1
  15. data/lib/rley/constants.rb +2 -2
  16. data/lib/rley/formatter/base_formatter.rb +0 -2
  17. data/lib/rley/formatter/debug.rb +0 -2
  18. data/lib/rley/formatter/json.rb +1 -3
  19. data/lib/rley/gfg/call_edge.rb +31 -30
  20. data/lib/rley/gfg/edge.rb +22 -23
  21. data/lib/rley/gfg/end_vertex.rb +22 -24
  22. data/lib/rley/gfg/epsilon_edge.rb +20 -21
  23. data/lib/rley/gfg/grm_flow_graph.rb +39 -39
  24. data/lib/rley/gfg/item_vertex.rb +16 -17
  25. data/lib/rley/gfg/non_terminal_vertex.rb +3 -4
  26. data/lib/rley/gfg/return_edge.rb +32 -31
  27. data/lib/rley/gfg/scan_edge.rb +25 -26
  28. data/lib/rley/gfg/shortcut_edge.rb +25 -26
  29. data/lib/rley/gfg/start_vertex.rb +0 -2
  30. data/lib/rley/gfg/vertex.rb +8 -8
  31. data/lib/rley/parse_forest_visitor.rb +113 -115
  32. data/lib/rley/parse_tree_visitor.rb +0 -2
  33. data/lib/rley/parser/base_parser.rb +27 -27
  34. data/lib/rley/parser/chart.rb +14 -14
  35. data/lib/rley/parser/dotted_item.rb +33 -33
  36. data/lib/rley/parser/earley_parser.rb +6 -6
  37. data/lib/rley/parser/gfg_chart.rb +8 -15
  38. data/lib/rley/parser/gfg_earley_parser.rb +15 -13
  39. data/lib/rley/parser/gfg_parsing.rb +26 -22
  40. data/lib/rley/parser/grm_items_builder.rb +3 -2
  41. data/lib/rley/parser/parse_entry.rb +3 -9
  42. data/lib/rley/parser/parse_entry_set.rb +14 -19
  43. data/lib/rley/parser/parse_entry_tracker.rb +56 -56
  44. data/lib/rley/parser/parse_forest_builder.rb +215 -214
  45. data/lib/rley/parser/parse_forest_factory.rb +57 -56
  46. data/lib/rley/parser/parse_state.rb +8 -11
  47. data/lib/rley/parser/parse_state_tracker.rb +56 -56
  48. data/lib/rley/parser/parse_tracer.rb +3 -3
  49. data/lib/rley/parser/parse_tree_builder.rb +10 -10
  50. data/lib/rley/parser/parse_walker_factory.rb +30 -33
  51. data/lib/rley/parser/parsing.rb +8 -8
  52. data/lib/rley/parser/state_set.rb +23 -26
  53. data/lib/rley/ptree/non_terminal_node.rb +1 -1
  54. data/lib/rley/ptree/token_range.rb +2 -2
  55. data/lib/rley/sppf/alternative_node.rb +32 -34
  56. data/lib/rley/sppf/composite_node.rb +27 -27
  57. data/lib/rley/sppf/epsilon_node.rb +26 -27
  58. data/lib/rley/sppf/leaf_node.rb +11 -12
  59. data/lib/rley/sppf/non_terminal_node.rb +37 -38
  60. data/lib/rley/sppf/sppf_node.rb +1 -1
  61. data/lib/rley/sppf/token_node.rb +29 -29
  62. data/lib/rley/syntax/grammar.rb +1 -3
  63. data/lib/rley/syntax/grammar_builder.rb +8 -8
  64. data/lib/rley/syntax/non_terminal.rb +2 -4
  65. data/lib/rley/syntax/production.rb +3 -3
  66. data/lib/rley/syntax/symbol_seq.rb +1 -1
  67. data/spec/rley/gfg/call_edge_spec.rb +50 -51
  68. data/spec/rley/gfg/edge_spec.rb +33 -33
  69. data/spec/rley/gfg/end_vertex_spec.rb +26 -27
  70. data/spec/rley/gfg/epsilon_edge_spec.rb +25 -25
  71. data/spec/rley/gfg/grm_flow_graph_spec.rb +1 -1
  72. data/spec/rley/gfg/item_vertex_spec.rb +3 -4
  73. data/spec/rley/gfg/return_edge_spec.rb +51 -51
  74. data/spec/rley/gfg/scan_edge_spec.rb +32 -30
  75. data/spec/rley/gfg/shortcut_edge_spec.rb +1 -1
  76. data/spec/rley/gfg/vertex_spec.rb +3 -3
  77. data/spec/rley/parse_forest_visitor_spec.rb +239 -238
  78. data/spec/rley/parser/dotted_item_spec.rb +1 -1
  79. data/spec/rley/parser/earley_parser_spec.rb +16 -16
  80. data/spec/rley/parser/gfg_earley_parser_spec.rb +30 -31
  81. data/spec/rley/parser/gfg_parsing_spec.rb +11 -10
  82. data/spec/rley/parser/grm_items_builder_spec.rb +2 -2
  83. data/spec/rley/parser/parse_entry_set_spec.rb +4 -4
  84. data/spec/rley/parser/parse_entry_spec.rb +0 -2
  85. data/spec/rley/parser/parse_forest_builder_spec.rb +82 -57
  86. data/spec/rley/parser/parse_forest_factory_spec.rb +84 -82
  87. data/spec/rley/parser/parse_walker_factory_spec.rb +10 -9
  88. data/spec/rley/parser/parsing_spec.rb +0 -1
  89. data/spec/rley/sppf/alternative_node_spec.rb +2 -2
  90. data/spec/rley/sppf/non_terminal_node_spec.rb +0 -1
  91. data/spec/rley/support/ambiguous_grammar_helper.rb +1 -1
  92. data/spec/rley/support/expectation_helper.rb +37 -36
  93. data/spec/rley/support/grammar_abc_helper.rb +17 -17
  94. data/spec/rley/support/grammar_b_expr_helper.rb +40 -39
  95. data/spec/rley/support/grammar_helper.rb +2 -1
  96. data/spec/rley/support/{grammar_L0_helper.rb → grammar_l0_helper.rb} +82 -81
  97. data/spec/rley/support/grammar_sppf_helper.rb +24 -25
  98. data/spec/rley/syntax/grammar_spec.rb +1 -1
  99. metadata +2 -2
@@ -23,7 +23,7 @@ module Rley # This module is used as a namespace
23
23
  when Array then result = other == members
24
24
  else
25
25
  msg = "Cannot compare a SymbolSeq with a #{other.class}"
26
- fail StandardError, msg
26
+ raise StandardError, msg
27
27
  end
28
28
 
29
29
  return result
@@ -1,51 +1,50 @@
1
- require_relative '../../spec_helper'
2
-
3
- require_relative '../../../lib/rley/syntax/terminal'
4
- require_relative '../../../lib/rley/syntax/non_terminal'
5
- require_relative '../../../lib/rley/syntax/production'
6
- require_relative '../../../lib/rley/parser/dotted_item'
7
- require_relative '../../../lib/rley/gfg/start_vertex'
8
- require_relative '../../../lib/rley/gfg/item_vertex'
9
-
10
- # Load the class under test
11
- require_relative '../../../lib/rley/gfg/call_edge'
12
-
13
- module Rley # Open this namespace to avoid module qualifier prefixes
14
- module GFG # Open this namespace to avoid module qualifier prefixes
15
- describe CallEdge do
16
- # Factory method. Builds a production with given left-hand side (LHS)
17
- # and given RHS (right-hand side)
18
- def build_prod(theLHS, *theRHSSymbols)
19
- return Syntax::Production.new(theLHS, theRHSSymbols)
20
- end
21
-
22
- let(:t_a) { Rley::Syntax::Terminal.new('a') }
23
- let(:t_b) { Rley::Syntax::Terminal.new('b') }
24
- let(:t_c) { Rley::Syntax::Terminal.new('c') }
25
- let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
26
- let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
27
- let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
28
- let(:sample_item) { Parser::DottedItem.new(sample_prod, 1) }
29
-
30
- let(:vertex1) { ItemVertex.new(sample_item) }
31
- let(:vertex2) { StartVertex.new('to') }
32
- subject { CallEdge.new(vertex1, vertex2) }
33
-
34
- context 'Initialization:' do
35
- it 'should be created with two vertice arguments' do
36
- expect { CallEdge.new(vertex1, vertex2) }.not_to raise_error
37
- end
38
- end # context
39
-
40
-
41
- context 'Provided services:' do
42
- it 'should know its key' do
43
- expectation = "CALL_#{sample_prod.object_id}_#{sample_item.position}"
44
- expect(subject.key).to eq(expectation)
45
- end
46
- end # context
47
- end # describe
48
- end # module
49
- end # module
50
-
51
- # End of file
1
+ require_relative '../../spec_helper'
2
+
3
+ require_relative '../../../lib/rley/syntax/terminal'
4
+ require_relative '../../../lib/rley/syntax/non_terminal'
5
+ require_relative '../../../lib/rley/syntax/production'
6
+ require_relative '../../../lib/rley/parser/dotted_item'
7
+ require_relative '../../../lib/rley/gfg/start_vertex'
8
+ require_relative '../../../lib/rley/gfg/item_vertex'
9
+
10
+ # Load the class under test
11
+ require_relative '../../../lib/rley/gfg/call_edge'
12
+
13
+ module Rley # Open this namespace to avoid module qualifier prefixes
14
+ module GFG # Open this namespace to avoid module qualifier prefixes
15
+ describe CallEdge do
16
+ # Factory method. Builds a production with given left-hand side (LHS)
17
+ # and given RHS (right-hand side)
18
+ def build_prod(theLHS, *theRHSSymbols)
19
+ return Syntax::Production.new(theLHS, theRHSSymbols)
20
+ end
21
+
22
+ let(:t_a) { Rley::Syntax::Terminal.new('a') }
23
+ let(:t_b) { Rley::Syntax::Terminal.new('b') }
24
+ let(:t_c) { Rley::Syntax::Terminal.new('c') }
25
+ let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
26
+ let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
27
+ let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
28
+ let(:sample_item) { Parser::DottedItem.new(sample_prod, 1) }
29
+
30
+ let(:vertex1) { ItemVertex.new(sample_item) }
31
+ let(:vertex2) { StartVertex.new('to') }
32
+ subject { CallEdge.new(vertex1, vertex2) }
33
+
34
+ context 'Initialization:' do
35
+ it 'should be created with two vertice arguments' do
36
+ expect { CallEdge.new(vertex1, vertex2) }.not_to raise_error
37
+ end
38
+ end # context
39
+
40
+ context 'Provided services:' do
41
+ it 'should know its key' do
42
+ expectation = "CALL_#{sample_prod.object_id}_#{sample_item.position}"
43
+ expect(subject.key).to eq(expectation)
44
+ end
45
+ end # context
46
+ end # describe
47
+ end # module
48
+ end # module
49
+
50
+ # End of file
@@ -1,33 +1,33 @@
1
- require_relative '../../spec_helper'
2
-
3
- require_relative '../../../lib/rley/gfg/start_vertex'
4
- require_relative '../../../lib/rley/gfg/end_vertex'
5
-
6
- # Load the class under test
7
- require_relative '../../../lib/rley/gfg/edge'
8
-
9
- module Rley # Open this namespace to avoid module qualifier prefixes
10
- module GFG # Open this namespace to avoid module qualifier prefixes
11
- describe Edge do
12
- let(:vertex1) { StartVertex.new('from') }
13
- let(:vertex2) { StartVertex.new('to') }
14
- subject { Edge.new(vertex1, vertex2) }
15
-
16
- context 'Initialization:' do
17
- it 'should be created with two vertice arguments' do
18
- expect { Edge.new(vertex1, vertex2) }.not_to raise_error
19
- end
20
-
21
- it 'should be registered by the predecessor vertex' do
22
- expect(subject).to eq(vertex1.edges.last)
23
- end
24
-
25
- it 'should know the successor vertex' do
26
- expect(subject.successor).to eq(vertex2)
27
- end
28
- end # context
29
- end # describe
30
- end # module
31
- end # module
32
-
33
- # End of file
1
+ require_relative '../../spec_helper'
2
+
3
+ require_relative '../../../lib/rley/gfg/start_vertex'
4
+ require_relative '../../../lib/rley/gfg/end_vertex'
5
+
6
+ # Load the class under test
7
+ require_relative '../../../lib/rley/gfg/edge'
8
+
9
+ module Rley # Open this namespace to avoid module qualifier prefixes
10
+ module GFG # Open this namespace to avoid module qualifier prefixes
11
+ describe Edge do
12
+ let(:vertex1) { StartVertex.new('from') }
13
+ let(:vertex2) { StartVertex.new('to') }
14
+ subject { Edge.new(vertex1, vertex2) }
15
+
16
+ context 'Initialization:' do
17
+ it 'should be created with two vertice arguments' do
18
+ expect { Edge.new(vertex1, vertex2) }.not_to raise_error
19
+ end
20
+
21
+ it 'should be registered by the predecessor vertex' do
22
+ expect(subject).to eq(vertex1.edges.last)
23
+ end
24
+
25
+ it 'should know the successor vertex' do
26
+ expect(subject.successor).to eq(vertex2)
27
+ end
28
+ end # context
29
+ end # describe
30
+ end # module
31
+ end # module
32
+
33
+ # End of file
@@ -1,27 +1,26 @@
1
- require_relative '../../spec_helper'
2
-
3
- # Load the class under test
4
- require_relative '../../../lib/rley/gfg/end_vertex'
5
-
6
- module Rley # Open this namespace to avoid module qualifier prefixes
7
- module GFG # Open this namespace to avoid module qualifier prefixes
8
- describe EndVertex do
9
- let(:sample_nt) { double('NT') }
10
- subject { EndVertex.new(sample_nt) }
11
-
12
- context 'Initialization:' do
13
- it 'should be created with a non-terminal symbol' do
14
- expect { EndVertex.new(sample_nt) }.not_to raise_error
15
- end
16
-
17
- it 'should know its label' do
18
- expect(sample_nt).to receive(:to_s).and_return('NT')
19
- expect(subject.label).to eq('NT.')
20
- end
21
-
22
- end # context
23
- end # describe
24
- end # module
25
- end # module
26
-
27
- # End of file
1
+ require_relative '../../spec_helper'
2
+
3
+ # Load the class under test
4
+ require_relative '../../../lib/rley/gfg/end_vertex'
5
+
6
+ module Rley # Open this namespace to avoid module qualifier prefixes
7
+ module GFG # Open this namespace to avoid module qualifier prefixes
8
+ describe EndVertex do
9
+ let(:sample_nt) { double('NT') }
10
+ subject { EndVertex.new(sample_nt) }
11
+
12
+ context 'Initialization:' do
13
+ it 'should be created with a non-terminal symbol' do
14
+ expect { EndVertex.new(sample_nt) }.not_to raise_error
15
+ end
16
+
17
+ it 'should know its label' do
18
+ expect(sample_nt).to receive(:to_s).and_return('NT')
19
+ expect(subject.label).to eq('NT.')
20
+ end
21
+ end # context
22
+ end # describe
23
+ end # module
24
+ end # module
25
+
26
+ # End of file
@@ -1,25 +1,25 @@
1
- require_relative '../../spec_helper'
2
-
3
- require_relative '../../../lib/rley/gfg/start_vertex'
4
- require_relative '../../../lib/rley/gfg/end_vertex'
5
-
6
- # Load the class under test
7
- require_relative '../../../lib/rley/gfg/epsilon_edge'
8
-
9
- module Rley # Open this namespace to avoid module qualifier prefixes
10
- module GFG # Open this namespace to avoid module qualifier prefixes
11
- describe Edge do
12
- let(:vertex1) { StartVertex.new('from') }
13
- let(:vertex2) { StartVertex.new('to') }
14
- subject { EpsilonEdge.new(vertex1, vertex2) }
15
-
16
- context 'Initialization:' do
17
- it 'should be created with two vertice arguments' do
18
- expect { EpsilonEdge.new(vertex1, vertex2) }.not_to raise_error
19
- end
20
- end # context
21
- end # describe
22
- end # module
23
- end # module
24
-
25
- # End of file
1
+ require_relative '../../spec_helper'
2
+
3
+ require_relative '../../../lib/rley/gfg/start_vertex'
4
+ require_relative '../../../lib/rley/gfg/end_vertex'
5
+
6
+ # Load the class under test
7
+ require_relative '../../../lib/rley/gfg/epsilon_edge'
8
+
9
+ module Rley # Open this namespace to avoid module qualifier prefixes
10
+ module GFG # Open this namespace to avoid module qualifier prefixes
11
+ describe Edge do
12
+ let(:vertex1) { StartVertex.new('from') }
13
+ let(:vertex2) { StartVertex.new('to') }
14
+ subject { EpsilonEdge.new(vertex1, vertex2) }
15
+
16
+ context 'Initialization:' do
17
+ it 'should be created with two vertice arguments' do
18
+ expect { EpsilonEdge.new(vertex1, vertex2) }.not_to raise_error
19
+ end
20
+ end # context
21
+ end # describe
22
+ end # module
23
+ end # module
24
+
25
+ # End of file
@@ -158,4 +158,4 @@ module Rley # Open this namespace to avoid module qualifier prefixes
158
158
  end # module
159
159
  end # module
160
160
 
161
- # End of file
161
+ # End of file
@@ -11,7 +11,6 @@ require_relative '../../../lib/rley/gfg/item_vertex'
11
11
  module Rley # Open this namespace to avoid module qualifier prefixes
12
12
  module GFG # Open this namespace to avoid module qualifier prefixes
13
13
  describe ItemVertex do
14
-
15
14
  # Factory method. Builds a production with given left-hand side (LHS)
16
15
  # and given RHS (right-hand side)
17
16
  def build_prod(theLHS, *theRHSSymbols)
@@ -25,8 +24,8 @@ module Rley # Open this namespace to avoid module qualifier prefixes
25
24
  let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
26
25
  let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
27
26
  let(:other_prod) { build_prod(nt_sentence, t_a) }
28
- let(:recursive_prod) {build_prod(nt_b_sequence, nt_b_sequence, t_b )}
29
- let(:b_prod) {build_prod(nt_b_sequence, t_b )}
27
+ let(:recursive_prod) { build_prod(nt_b_sequence, nt_b_sequence, t_b) }
28
+ let(:b_prod) { build_prod(nt_b_sequence, t_b) }
30
29
  let(:empty_prod) { build_prod(nt_sentence) }
31
30
  let(:sample_item) { Parser::DottedItem.new(sample_prod, 1) }
32
31
  let(:next_item) { Parser::DottedItem.new(sample_prod, 2) }
@@ -88,7 +87,7 @@ module Rley # Open this namespace to avoid module qualifier prefixes
88
87
 
89
88
 
90
89
  it 'should know the next symbol (if any) in the rhs' do
91
- #Case: dot is not penultimate
90
+ # Case: dot is not penultimate
92
91
  expect(subject.next_symbol).to eq(nt_b_sequence)
93
92
 
94
93
  # Case: dot is penultimate
@@ -1,51 +1,51 @@
1
- require_relative '../../spec_helper'
2
-
3
- require_relative '../../../lib/rley/syntax/terminal'
4
- require_relative '../../../lib/rley/syntax/non_terminal'
5
- require_relative '../../../lib/rley/syntax/production'
6
- require_relative '../../../lib/rley/parser/dotted_item'
7
- require_relative '../../../lib/rley/gfg/end_vertex'
8
- require_relative '../../../lib/rley/gfg/item_vertex'
9
-
10
- # Load the class under test
11
- require_relative '../../../lib/rley/gfg/return_edge'
12
-
13
- module Rley # Open this namespace to avoid module qualifier prefixes
14
- module GFG # Open this namespace to avoid module qualifier prefixes
15
- describe ReturnEdge do
16
- # Factory method. Builds a production with given left-hand side (LHS)
17
- # and given RHS (right-hand side)
18
- def build_prod(theLHS, *theRHSSymbols)
19
- return Syntax::Production.new(theLHS, theRHSSymbols)
20
- end
21
-
22
- let(:t_a) { Rley::Syntax::Terminal.new('a') }
23
- let(:t_b) { Rley::Syntax::Terminal.new('b') }
24
- let(:t_c) { Rley::Syntax::Terminal.new('c') }
25
- let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
26
- let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
27
- let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
28
- let(:sample_item) { Parser::DottedItem.new(sample_prod, 1) }
29
-
30
- let(:vertex1) { EndVertex.new('from') }
31
- let(:vertex2) { ItemVertex.new(sample_item) }
32
- subject { ReturnEdge.new(vertex1, vertex2) }
33
-
34
- context 'Initialization:' do
35
- it 'should be created with two vertice arguments' do
36
- expect { ReturnEdge.new(vertex1, vertex2) }.not_to raise_error
37
- end
38
- end # context
39
-
40
-
41
- context 'Provided services:' do
42
- it 'should know its key' do
43
- expectation = "RET_#{sample_prod.object_id}_#{sample_item.position - 1}"
44
- expect(subject.key).to eq(expectation)
45
- end
46
- end # context
47
- end # describe
48
- end # module
49
- end # module
50
-
51
- # End of file
1
+ require_relative '../../spec_helper'
2
+
3
+ require_relative '../../../lib/rley/syntax/terminal'
4
+ require_relative '../../../lib/rley/syntax/non_terminal'
5
+ require_relative '../../../lib/rley/syntax/production'
6
+ require_relative '../../../lib/rley/parser/dotted_item'
7
+ require_relative '../../../lib/rley/gfg/end_vertex'
8
+ require_relative '../../../lib/rley/gfg/item_vertex'
9
+
10
+ # Load the class under test
11
+ require_relative '../../../lib/rley/gfg/return_edge'
12
+
13
+ module Rley # Open this namespace to avoid module qualifier prefixes
14
+ module GFG # Open this namespace to avoid module qualifier prefixes
15
+ describe ReturnEdge do
16
+ # Factory method. Builds a production with given left-hand side (LHS)
17
+ # and given RHS (right-hand side)
18
+ def build_prod(theLHS, *theRHSSymbols)
19
+ return Syntax::Production.new(theLHS, theRHSSymbols)
20
+ end
21
+
22
+ let(:t_a) { Rley::Syntax::Terminal.new('a') }
23
+ let(:t_b) { Rley::Syntax::Terminal.new('b') }
24
+ let(:t_c) { Rley::Syntax::Terminal.new('c') }
25
+ let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
26
+ let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
27
+ let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
28
+ let(:sample_item) { Parser::DottedItem.new(sample_prod, 1) }
29
+
30
+ let(:vertex1) { EndVertex.new('from') }
31
+ let(:vertex2) { ItemVertex.new(sample_item) }
32
+ subject { ReturnEdge.new(vertex1, vertex2) }
33
+
34
+ context 'Initialization:' do
35
+ it 'should be created with two vertice arguments' do
36
+ expect { ReturnEdge.new(vertex1, vertex2) }.not_to raise_error
37
+ end
38
+ end # context
39
+
40
+ context 'Provided services:' do
41
+ it 'should know its key' do
42
+ pos = sample_item.position
43
+ expectation = "RET_#{sample_prod.object_id}_#{pos - 1}"
44
+ expect(subject.key).to eq(expectation)
45
+ end
46
+ end # context
47
+ end # describe
48
+ end # module
49
+ end # module
50
+
51
+ # End of file
@@ -1,30 +1,32 @@
1
- require_relative '../../spec_helper'
2
-
3
- require_relative '../../../lib/rley/gfg/start_vertex'
4
- require_relative '../../../lib/rley/gfg/end_vertex'
5
-
6
- # Load the class under test
7
- require_relative '../../../lib/rley/gfg/scan_edge'
8
-
9
- module Rley # Open this namespace to avoid module qualifier prefixes
10
- module GFG # Open this namespace to avoid module qualifier prefixes
11
- describe Edge do
12
- let(:vertex1) { StartVertex.new('from') }
13
- let(:vertex2) { StartVertex.new('to') }
14
- let(:sample_terminal) { double('fake-terminal') }
15
- subject { ScanEdge.new(vertex1, vertex2, sample_terminal) }
16
-
17
- context 'Initialization:' do
18
- it 'should be created with two vertice arguments & a terminal' do
19
- expect { ScanEdge.new(vertex1, vertex2, sample_terminal) }.not_to raise_error
20
- end
21
-
22
- it 'should know the related terminal' do
23
- expect(subject.terminal).to eq(sample_terminal)
24
- end
25
- end # context
26
- end # describe
27
- end # module
28
- end # module
29
-
30
- # End of file
1
+ require_relative '../../spec_helper'
2
+
3
+ require_relative '../../../lib/rley/gfg/start_vertex'
4
+ require_relative '../../../lib/rley/gfg/end_vertex'
5
+
6
+ # Load the class under test
7
+ require_relative '../../../lib/rley/gfg/scan_edge'
8
+
9
+ module Rley # Open this namespace to avoid module qualifier prefixes
10
+ module GFG # Open this namespace to avoid module qualifier prefixes
11
+ describe Edge do
12
+ let(:vertex1) { StartVertex.new('from') }
13
+ let(:vertex2) { StartVertex.new('to') }
14
+ let(:sample_terminal) { double('fake-terminal') }
15
+ subject { ScanEdge.new(vertex1, vertex2, sample_terminal) }
16
+
17
+ context 'Initialization:' do
18
+ it 'should be created with two vertice arguments & a terminal' do
19
+ v1 = vertex1
20
+ v2 = vertex2
21
+ expect { ScanEdge.new(v1, v2, sample_terminal) }.not_to raise_error
22
+ end
23
+
24
+ it 'should know the related terminal' do
25
+ expect(subject.terminal).to eq(sample_terminal)
26
+ end
27
+ end # context
28
+ end # describe
29
+ end # module
30
+ end # module
31
+
32
+ # End of file