Added tests and fix for multiparemeter contexts

See #174
This commit is contained in:
Hernan Grecco
2014-07-30 18:38:40 -03:00
parent e57f72004d
commit 0fef05306e
2 changed files with 16 additions and 2 deletions

View File

@@ -124,8 +124,15 @@ class Context(object):
if not val.imag:
return val.real
return val
defaults = dict((str(k), to_num(v))
for k, v in _def_re.findall(defaults.strip('()')))
try:
_txt = defaults
defaults = (part.split('=') for part in defaults.strip('()').split(','))
defaults = dict((str(k).strip(), to_num(v))
for k, v in defaults)
except (ValueError, TypeError):
raise ValueError('Could not parse Context definition defaults: %s', _txt)
ctx = cls(name, aliases, defaults)
else:
ctx = cls(name, aliases)

View File

@@ -560,6 +560,13 @@ class TestContexts(QuantityTestCase):
self.assertEqual(set(c.funcs.keys()), set((a, b)))
self._test_ctx(c)
s = ['@context(n=1, bla=2) longcontextname',
'[length] <-> 1 / [time]: n * c / value / bla']
c = Context.from_lines(s)
self.assertEqual(c.defaults, {'n': 1, 'bla': 2})
self.assertEqual(set(c.funcs.keys()), set((a, b)))
# If the variable is not present in the definition, then raise an error
s = ['@context(n=1) longcontextname',
'[length] <-> 1 / [time]: c / value']