-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_env.py
37 lines (23 loc) · 1006 Bytes
/
test_env.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import pytest
from justfunc.env import Env, UnboundVariableError
@pytest.fixture
def an_env():
return Env.new({"a": 1, "b": 2})
def test_look_ups_variable_value(an_env):
assert an_env.lookup_variable_value("a") == 1
assert an_env.lookup_variable_value("b") == 2
def test_signals_error_if_variable_unbound(an_env):
with pytest.raises(UnboundVariableError):
an_env.lookup_variable_value("c")
def test_returns_a_new_environment(an_env):
extended_env = an_env.extend({"c": 3})
assert extended_env.lookup_variable_value("c") == 3
assert extended_env.lookup_variable_value("a") == 1
assert extended_env.lookup_variable_value("b") == 2
def test_defines_a_variable(an_env):
an_env.define_variable("c", 3)
assert an_env.lookup_variable_value("c") == 3
def test_definitions_in_initial_environment_reflect_in_extended(an_env):
extended_env = an_env.extend({})
an_env.define_variable("d", 4)
assert extended_env.lookup_variable_value("d") == 4