more detailed tests and implementation of array indexing in the interpreter

This commit is contained in:
Dave Halter
2014-04-04 13:22:12 +02:00
parent 50ef3c7fa3
commit a6fbcde184
2 changed files with 19 additions and 3 deletions

View File

@@ -106,12 +106,16 @@ class CompiledObject(Base):
else: else:
try: try:
new = self.obj[typ.obj] new = self.obj[typ.obj]
except (KeyError, IndexError): except (KeyError, IndexError, TypeError, AttributeError):
pass pass # just try, we don't care if it fails.
else: else:
result.append(CompiledObject(new)) result.append(CompiledObject(new))
if not result: if not result:
pass try:
for obj in self.obj:
result.append(CompiledObject(obj))
except TypeError:
pass # self.obj maynot have an __iter__ method.
return result return result
@property @property

View File

@@ -51,3 +51,15 @@ class TestInterpreterAPI(TestCase):
self.check_interpreter_complete('array[0].real', self.check_interpreter_complete('array[0].real',
locals(), locals(),
[]) [])
# something different, no index given, still just return the right
self.check_interpreter_complete('array[int].real',
locals(),
['real'])
self.check_interpreter_complete('array[int()].real',
locals(),
['real'])
# inexistent index
self.check_interpreter_complete('array[2].upper',
locals(),
['upper'])