def test_operator_pow(self): key = '**' testname = 'find_operator({!r})'.format(key) actual = functions.find_operator(key) expected = functions.PowerOperator print_test_message(testname, key=key, actual=actual, expected=expected) self.assertEqual(actual, expected, '{} failed'.format(testname))
def test_operator_div(self): key = "/" testname = "find_operator({!r})".format(key) actual = functions.find_operator(key) expected = functions.DivisionOperator print_test_message(testname, key=key, actual=actual, expected=expected) self.assertEqual(actual, expected, "{} failed".format(testname))
def test_operator_sub(self): key = '-' numargs = 2 testname = 'find_operator({!r}, {})'.format(key, numargs) actual = functions.find_operator(key, numargs) expected = functions.SubtractionOperator print_test_message(testname, actual=actual, expected=expected, key=key, numargs=numargs) self.assertEqual(actual, expected, '{} failed'.format(testname))
def test_operator_add(self): key = "+" numargs = 2 testname = "find_operator({!r}, {})".format(key, numargs) actual = functions.find_operator(key, numargs) expected = functions.AdditionOperator print_test_message( testname, actual=actual, expected=expected, key=key, numargs=numargs ) self.assertEqual(actual, expected, "{} failed".format(testname))
def _construct_flow_(self, obj, datnodes={}): if isinstance(obj, VarType): vname = obj.key if vname in self._ids.variables: indices = numpy.index_exp[tuple( obj.ind)] if len(obj.ind) > 0 else () return ReadNode(self._ids.variables[vname], index=indices) elif vname in datnodes: return datnodes[vname] else: raise VariableNotFoundError( "Input variable {!r} not found or cannot be used as input". format(vname)) elif isinstance(obj, OpType): name = obj.key nargs = len(obj.args) op = find_operator(name, numargs=nargs) args = [ self._construct_flow_(arg, datnodes=datnodes) for arg in obj.args ] return EvalNode(name, op, *args) elif isinstance(obj, FuncType): name = obj.key func = find_function(name) args = [ self._construct_flow_(arg, datnodes=datnodes) for arg in obj.args ] kwds = { k: self._construct_flow_(obj.kwds[k], datnodes=datnodes) for k in obj.kwds } return EvalNode(name, func, *args, **kwds) else: return obj
def _construct_flow_(self, obj, datnodes={}): if isinstance(obj, ParsedVariable): vname = obj.key if vname in self._ids.variables: return ReadNode(self._ids.variables[vname], index=obj.args) elif vname in datnodes: return datnodes[vname] else: raise VariableNotFoundError( 'Input variable {!r} not found or cannot be used as input'. format(vname)) elif isinstance(obj, (ParsedUniOp, ParsedBinOp)): name = obj.key nargs = len(obj.args) op = find_operator(name, numargs=nargs) args = [ self._construct_flow_(arg, datnodes=datnodes) for arg in obj.args ] return EvalNode(name, op, *args) elif isinstance(obj, ParsedFunction): name = obj.key func = find_function(name) args = [ self._construct_flow_(arg, datnodes=datnodes) for arg in obj.args ] kwds = { k: self._construct_flow_(obj.kwds[k], datnodes=datnodes) for k in obj.kwds } return EvalNode(name, func, *args, **kwds) else: return obj