rley 0.3.04 → 0.3.05

Sign up to get free protection for your applications and to get access to all the features.
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