spec/back_end/engine_spec.rb in loxxy-0.3.01 vs spec/back_end/engine_spec.rb in loxxy-0.3.02

- old
+ new

@@ -33,21 +33,31 @@ let(:sample_pos) { double('fake-position') } let(:var_decl) { Ast::LoxVarStmt.new(sample_pos, 'greeting', greeting) } let(:lit_expr) { Ast::LoxLiteralExpr.new(sample_pos, greeting) } it "should react to 'after_var_stmt' event" do - # Precondition: value to assign is on top of stack - subject.stack.push(greeting) + # Precondition: value to assign is on top of expr stack + subject.expr_stack.push(greeting) expect { subject.after_var_stmt(var_decl) }.not_to raise_error current_env = subject.symbol_table.current_env expect(current_env.defns['greeting']).to be_kind_of(Variable) expect(current_env.defns['greeting'].value).to eq(greeting) end it "should react to 'before_literal_expr' event" do expect { subject.before_literal_expr(lit_expr) }.not_to raise_error - expect(subject.stack.pop).to eq(greeting) + expect(subject.expr_stack.pop).to eq(greeting) + end + end + + context 'Built-in functions:' do + it 'should provide built-in functions' do + symb_table = subject.symbol_table + %w[clock getc chr exit print_error].each do |name| + fun_var = symb_table.current_env.defns[name] + expect(fun_var.value).to be_kind_of(BackEnd::Engine::NativeFunction) + end end end end # describe end # module end # module