FossilOrigin-Name: f181ea92bf9d0adda566afb9f62c7ef4fa313761377cd3cf888c83a0b14f5188
private
alpha 2 years ago
parent d09f24248e
commit a993e409a5

@ -0,0 +1,17 @@
module Lox
class Environment
def initialize
@values = {}
end
def define(name, value)
@values[name] = value
end
def get(token)
name = token.lexeme
@values.fetch(name) { raise RuntimeError.new(token, "Undefined variable '#{name}'.") }
end
end
end

@ -0,0 +1,23 @@
require_relative "../test_helper"
require "lox/environment"
require "lox/error"
require "lox/token"
class TestEnvironment < Lox::Test
def setup
@env = Lox::Environment.new
end
def test_define
@env.define("name", "value")
assert_equal "value", @env.get(Lox::Token.new(:IDENTIFIER, "name", "name", 0))
end
def test_get
assert_raises Lox::RuntimeError, "Undefined variable name 'name'." do
@env.get(Lox::Token.new(:IDENTIFIER, "name", "name", 0))
end
end
end
Loading…
Cancel
Save