Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_partial_exception(self):
sym_table = make_symbol_table(sqrt=partial(math.sqrt))
aeval = Interpreter(symtable=sym_table)
assert aeval("sqrt(4)") == 2
# Calling sqrt(-1) should raise a ValueError. When the interpreter
# encounters an exception, it attempts to form an error string that
# uses the function's __name__ attribute. Partials don't have a
# __name__ attribute, so we want to make sure that an AttributeError is
# not raised.
result = aeval("sqrt(-1)")
assert aeval.error.pop().exc == ValueError
"test making and using a custom symbol table"
if HAS_NUMPY:
def cosd(x):
"cos with angle in degrees"
return np.cos(np.radians(x))
def sind(x):
"sin with angle in degrees"
return np.sin(np.radians(x))
def tand(x):
"tan with angle in degrees"
return np.tan(np.radians(x))
sym_table = make_symbol_table(cosd=cosd, sind=sind, tand=tand)
aeval = Interpreter(symtable=sym_table)
aeval("x1 = sind(30)")
aeval("x2 = cosd(30)")
aeval("x3 = tand(45)")
x1 = aeval.symtable['x1']
x2 = aeval.symtable['x2']
x3 = aeval.symtable['x3']
assert_allclose(x1, 0.50, rtol=0.001)
assert_allclose(x2, 0.866025, rtol=0.001)
assert_allclose(x3, 1.00, rtol=0.001)