Sha256: a0a4722dc42305a488de219557364a26531c3d0014fc0f3e26caa38cb8e65ef5

Contents?: true

Size: 1.63 KB

Versions: 2

Compression:

Stored size: 1.63 KB

Contents

require './spec/spec_helper'

describe AbstractSyntaxTreeBuilder do
	def returns(postfix, tree)
		expect(AbstractSyntaxTreeBuilder.new(postfix).build_tree).to be(tree)
	end

	it 'equal case' do
		returns %w(materiál dřevo =), Equal.new('materiál', 'dřevo')
	end

	it 'gt case' do
		returns %w(materiál 180 >), GreaterThan.new('materiál', '180')
	end

	it 'lt case' do
		returns %w(materiál 180 <), LessThan.new('materiál', '180')
	end

	it 'gte case' do
		returns %w(materiál 180 >=), GreaterThanEqual.new('materiál', '180')
	end

	it 'lte case' do
		returns %w(materiál 180 <=), LessThanEqual.new('materiál', '180')
	end

	it '&& case' do
		returns %w(materiál 180 &&), And.new('materiál', '180')
	end

	it '|| case' do
		returns %w(materiál 180 ||), Or.new('materiál', '180')
	end

	it '!= case' do
		returns %w(materiál 180 !=), NotEqual.new('materiál', '180')
	end

	it '- case' do
		returns %w(180 -), UnaryMinus.new('180')
	end

	it 'composite cases' do
		returns %w(materiál dřevo = cena 180 > &&),
		        And.new(Equal.new('materiál', 'dřevo'), GreaterThan.new('cena', '180'))

		returns %w{materiál dřevo = cena 180 > cena 250 >= || &&},
		        And.new(
				        Equal.new('materiál', 'dřevo'),
				        Or.new(
						        GreaterThan.new('cena', '180'),
						        GreaterThanEqual.new('cena', '250')
				        )
		        )

	end

	it 'only operands' do
		expect {AbstractSyntaxTreeBuilder.new(%w(materiál cena)).build_tree }.to raise_error(NotEnoughOperatorsException)
	end

	it 'only operators' do
		expect {AbstractSyntaxTreeBuilder.new(%w(&& -)).build_tree }.to raise_error(NotEnoughOperandsException)
	end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lamep-0.2.1 spec/lib/abstract_syntax_tree_builder_spec.rb
lamep-0.2 spec/lib/abstract_syntax_tree_builder_spec.rb