Sha256: 2051e7d76fe7274cb1fce975a11baca882099464993c2473ddd456db0a0c6811

Contents?: true

Size: 1.96 KB

Versions: 3

Compression:

Stored size: 1.96 KB

Contents

require_relative '../../spec_helper'

require_relative '../../../lib/rley/syntax/terminal'
require_relative '../../../lib/rley/syntax/non_terminal'
require_relative '../../../lib/rley/syntax/production'
require_relative '../../../lib/rley/parser/dotted_item'
require_relative '../../../lib/rley/gfg/start_vertex'
require_relative '../../../lib/rley/gfg/item_vertex'

# Load the class under test
require_relative '../../../lib/rley/gfg/call_edge'

module Rley # Open this namespace to avoid module qualifier prefixes
  module GFG # Open this namespace to avoid module qualifier prefixes
    describe CallEdge do
      # Factory method. Builds a production with given left-hand side (LHS)
      # and given RHS (right-hand side)
      def build_prod(theLHS, *theRHSSymbols)
        return Syntax::Production.new(theLHS, theRHSSymbols)
      end

      let(:t_a) { Rley::Syntax::Terminal.new('a') }
      let(:t_b) { Rley::Syntax::Terminal.new('b') }
      let(:t_c) { Rley::Syntax::Terminal.new('c') }
      let(:nt_sentence) { Rley::Syntax::NonTerminal.new('sentence') }
      let(:nt_b_sequence) { Rley::Syntax::NonTerminal.new('b_sequence') }
      let(:sample_prod) { build_prod(nt_sentence, t_a, nt_b_sequence, t_c) }
      let(:sample_item) { Parser::DottedItem.new(sample_prod, 1) }    

      let(:vertex1) { ItemVertex.new(sample_item) }
      let(:vertex2) { StartVertex.new('to') }
      subject { CallEdge.new(vertex1, vertex2) }

      context 'Initialization:' do
        it 'should be created with two vertice arguments' do
          expect { CallEdge.new(vertex1, vertex2) }.not_to raise_error
        end
      end # context
      
      
      context 'Provided services:' do
        it 'should know its key' do
          expectation = "CALL_#{sample_prod.object_id}_#{sample_item.position}"
          expect(subject.key).to eq(expectation)
        end
      end # context      
    end # describe
  end # module
end # module

# End of file

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rley-0.3.04 spec/rley/gfg/call_edge_spec.rb
rley-0.3.01 spec/rley/gfg/call_edge_spec.rb
rley-0.3.00 spec/rley/gfg/call_edge_spec.rb