def test_basic_arithmetic(self): assert exprify('x + y', self.dtypes).isidentical(self.x + self.y) expected = isnan(sin(x) + y) result = exprify('isnan(sin(x) + y)', self.dtypes) assert str(expected) == str(result) # parsed as a Num in Python 2 and a UnaryOp in Python 3 assert exprify('-1', {}) == -1 # parsed as UnaryOp(op=USub(), operand=1) assert exprify('-x', self.dtypes).isidentical(-self.x) assert exprify('-x + y', self.dtypes).isidentical(-self.x + self.y) other = self.x * self.y + self.z assert exprify('x * y + z', self.dtypes).isidentical(other) assert exprify('x ** y', self.dtypes).isidentical(self.x ** self.y) other = self.x / self.y / self.z + 1 assert exprify('x / y / z + 1', self.dtypes).isidentical(other) other = self.x / self.y % self.z + 2 ** self.y assert exprify('x / y % z + 2 ** y', self.dtypes).isidentical(other) assert exprify('x // y', self.dtypes).isidentical(self.x // self.y) assert exprify('1 // y // x', self.dtypes).isidentical( 1 // self.y // self.x)
def test_boolean_math_has_boolean_methods(): x = symbol('x', '?int') expr = ~(isnan(x)) | (x > 0) assert eval(str(expr)).isidentical(expr)