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