Sha256: 2cc1efde6f48c892dab6dcabd035da0feed581c659b63d79f3d6b09fb66515ef

Contents?: true

Size: 1.08 KB

Versions: 3

Compression:

Stored size: 1.08 KB

Contents

require_relative 'spec_helper'

module Basic101

  describe Program do

    let(:statement1) {Statement.new}
    let(:statement2) {Statement.new}
    let(:statement3) {Statement.new}
    let(:statements) {[statement1, statement2, statement3]}
    let(:line1) {Line.new(10, [statement1])}
    let(:line2) {Line.new(20, [statement2, statement3])}
    let(:lines) {[line1, line2]}

    subject(:program) {described_class.new(lines)}

    describe '#lines' do
      specify do
        expect(program.statements).to eq statements
      end
    end

    describe '#[]' do
      specify do
        expect(program[0]).to eq statement1
        expect(program[1]).to eq statement2
        expect(program[2]).to eq statement3
        expect(program[3]).to be_nil
      end
    end

    describe '#index_of_line' do
      specify do
        expect(program.index_of_line(10)).to eq 0
        expect(program.index_of_line(20)).to eq 1
        expect {
          program.index_of_line(30)
        }.to raise_error(UndefinedLineNumberError,
                         "Undefined line number 30")
      end
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
basic101-0.4.0 test/spec/program_spec.rb
basic101-0.2.0 test/spec/program_spec.rb
basic101-0.1.0 test/spec/program_spec.rb