-
Notifications
You must be signed in to change notification settings - Fork 1
/
SustitucionTest.py
113 lines (96 loc) · 2.7 KB
/
SustitucionTest.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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from utils.Sustitucion import Sustitucion
from tipos.Bool import Bool
from tipos.Int import Int
from tipos.Fun import Fun
from tipos.Paren import Paren
from tipos.Var import Var
import unittest
class SustitucionTest(unittest.TestCase):
def setUp(self):
pass
def test_push(self):
s = Sustitucion()
self.assertEqual(s.size(), 0)
s.push(Var('a'), Int())
self.assertEqual(s.size(), 1)
def test_pop(self):
s = Sustitucion()
s.push(1, 2)
self.assertEqual(s.pop(), (1, 2))
def test_size(self):
s = Sustitucion()
self.assertEqual(s.size(), 0)
s.push(1, 2)
self.assertEqual(s.size(), 1)
s.pop()
self.assertEqual(s.size(), 0)
def test_contains(self):
s = Sustitucion()
self.assertFalse(s.contains(Var('x')))
s.push(Var('a'), 1)
self.assertTrue(s.contains(Var('a')))
def test_find(self):
s = Sustitucion()
s.push(Var('a'), Fun(Var('x'), Var('y')))
self.assertEqual(s.find(Var('a')), Fun(Var('x'), Var('y')))
def test_sustituir(self):
s = Sustitucion()
s.push(Var('a'), Fun(Var('b'), Int()))
self.assertEqual(
s.sustituir(Fun(Var('a'), Var('b'))),
Fun(Fun(Var('b'), Int()), Var('b'))
)
def test_sustituir_vacio(self):
s = Sustitucion()
self.assertEqual(
s.sustituir(Fun(Var('a'), Var('b'))),
Fun(Var('a'), Var('b'))
)
def test_sustituir_tipo_base(self):
s = Sustitucion()
s.push(Var('a'), Fun(Var('b'), Int()))
self.assertEqual(
s.sustituir(Int()),
Int()
)
self.assertEqual(
s.sustituir(Bool()),
Bool()
)
def test_sustituir_paren(self):
s = Sustitucion()
s.push(Var('a'), Fun(Var('b'), Int()))
self.assertEqual(
s.sustituir(Paren(Var('a'))),
Paren(Fun(Var('b'), Int()))
)
def test_compose(self):
s1 = Sustitucion()
s1.push(Var('a'), Fun(Var('b'), Int()))
s1.push(Var('w'), Fun(Var('c'), Fun(Var('b'), Bool())))
s2 = Sustitucion()
s2.push(Var('b'), Bool())
s2.push(Var('c'), Int())
s2.push(Var('a'), Bool())
s2.push(Var('w'), Int())
s = s1.compose(s2)
self.assertEqual(
s.all(),
[
(Var('a'), Fun(Bool(), Int())),
(Var('w'), Fun(Int(), Fun(Bool(), Bool()))),
(Var('b'), Bool()),
(Var('c'), Int()),
]
)
def test_compose_simple(self):
s1 = Sustitucion()
s1.push(Var('a'), Fun(Var('c'), Int()))
s2 = Sustitucion()
s2.push(Var('b'), Fun(Var('a'), Int()))
s = Sustitucion()
s.push(Var('a'), Fun(Var('c'), Int()))
s.push(Var('b'), Fun(Var('a'), Int()))
self.assertEqual(s1.compose(s2), s)
suite = unittest.TestLoader().loadTestsFromTestCase(SustitucionTest)
unittest.TextTestRunner(verbosity=2).run(suite)