RSpec.describe AST::Assignment do it 'reassigns an existing variable' do env = Environment.new AST::VariableDeclaration.new(AST::Identifier.new('x'), AST::Number.new(5.0)) .execute(env) AST::Assignment.new(AST::Identifier.new('x'), AST::Number.new(6.0)).execute( env ) expect(env.get('x').execute(env)).to eq(6.0) end it 'raises for an undeclared variable' do env = Environment.new expect { AST::Assignment.new(AST::Identifier.new('x'), AST::Number.new(6.0)) .execute(env) }.to raise_error('Undefined variable x') end end