Skip to content

Commit 030455f

Browse files
committed
Address more of Erik's feedback
1 parent ea6307d commit 030455f

File tree

1 file changed

+39
-37
lines changed

1 file changed

+39
-37
lines changed

py/dml/types_test.py

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from dml import expr
88
from dml import traits
99
from dml import logging
10+
from contextlib import contextmanager
1011

1112
import unittest
1213

@@ -104,29 +105,33 @@ def bitfields():
104105
self.assert_eq(TInt(8, False, members={}), TInt(8, False, members={}))
105106
self.assert_eq(bitfields(), bitfields())
106107

107-
t = bitfields()
108-
108+
@contextmanager
109109
def neq_bitfields_testcase():
110-
nonlocal t
111-
self.assert_neq(bitfields(), t)
112110
t = bitfields()
111+
yield t
112+
self.assert_neq(bitfields(), t)
113113

114114
# Presence of members matter
115-
del t.members['a']
116-
neq_bitfields_testcase()
115+
with neq_bitfields_testcase() as t:
116+
del t.members['a']
117+
117118
# type of members matters
118-
t.members['a'][0].signed = True
119-
neq_bitfields_testcase()
119+
with neq_bitfields_testcase() as t:
120+
t.members['a'][0].signed = True
121+
120122
# msb/lsb of members matters
121-
t.members['a'] = (TInt(8, False), 12, 5)
122-
neq_bitfields_testcase()
123+
with neq_bitfields_testcase() as t:
124+
(mt, msb, lsb) = t.members['a']
125+
t.members['a'] = (mt, msb - 1, lsb - 1)
126+
123127
# order matters
124-
t.members = dict(reversed(t.members.items()))
125-
neq_bitfields_testcase()
128+
with neq_bitfields_testcase() as t:
129+
t.members = dict(reversed(t.members.items()))
130+
126131
# names matter
127-
t.members['c'] = t.members['b']
128-
del t.members['b']
129-
neq_bitfields_testcase()
132+
with neq_bitfields_testcase() as t:
133+
t.members['c'] = t.members['b']
134+
del t.members['b']
130135

131136
def test_TEndianInt(self):
132137
self.assert_eq(TEndianInt(8, False, 'big-endian'),
@@ -158,37 +163,34 @@ def test_TArray(self):
158163
b.size = a.size
159164
self.assert_eq(a, b)
160165

161-
a = self.mkTArray(4)
162-
b = self.mkTArray(4)
163-
166+
@contextmanager
164167
def array_testcase(res):
165-
nonlocal a, b
168+
a = self.mkTArray(4)
169+
b = self.mkTArray(4)
170+
yield (a, b)
166171
if res:
167172
self.assert_eq(a, b)
168173
else:
169174
self.assert_neq(a, b)
170175

171-
a = self.mkTArray(4)
172-
b = self.mkTArray(4)
173-
174176
# Base type matters
175-
a.base.signed = True
176-
array_testcase(False)
177+
with array_testcase(False) as (a, _):
178+
a.base.signed = True
177179

178180
# Constness: constness of base type and array are normalized
179-
a.const = True
180-
array_testcase(False)
181-
a.const = True
182-
b.const = True
183-
array_testcase(True)
184-
a.base.const = True
185-
b.const = True
186-
array_testcase(True)
187-
a.base = self.mkTArray(4)
188-
b.base = self.mkTArray(4)
189-
a.base.base.const = True
190-
b.const = True
191-
array_testcase(True)
181+
with array_testcase(False) as (a, _):
182+
a.const = True
183+
with array_testcase(True) as (a, b):
184+
a.const = True
185+
b.const = True
186+
with array_testcase(True) as (a, b):
187+
a.base.const = True
188+
b.const = True
189+
with array_testcase(True) as (a, b):
190+
a.base = self.mkTArray(4)
191+
b.base = self.mkTArray(4)
192+
a.base.base.const = True
193+
b.const = True
192194

193195
# Pointers are not equivalent to arrays
194196
self.assert_neq(self.mkTArray(4), TPtr(TInt(32, False)))

0 commit comments

Comments
 (0)