def test_fcode_Piecewise(): expr = Piecewise((x, x < 1), (x**2, True)) assert fcode(expr) == "merge(x, x**2, x < 1)" expr = Piecewise((Assign(c, x), x < 1), (Assign(c, x**2), True)) assert fcode(expr) == ( "if (x < 1) then\n" " c = x\n" "else\n" " c = x**2\n" "end if" ) expr = Piecewise((x, x < 1), (x + 1, x < 2), (x**2, True)) assert fcode(expr) == "merge(x, merge(x + 1, x**2, x < 2), x < 1)" expr = Piecewise((Assign(c, x), x < 1), (Assign(c, x + 1), x < 2), (Assign(c, x**2), True)) assert fcode(expr) == ( "if (x < 1) then\n" " c = x\n" "else if (x < 2) then\n" " c = x + 1\n" "else\n" " c = x**2\n" "end if") # Check that Piecewise without a True (default) condition error expr = Piecewise((x, x < 1), (x**2, x > 1), (sin(x), x > 0)) raises(ValueError, lambda: fcode(expr))
def test_ccode_Piecewise(): expr = Piecewise((x, x < 1), (x**2, True)) assert ccode(expr) == ("((x < 1) ? (\n" " x\n" ")\n" ": (\n" " pow(x, 2)\n" "))") expr = Piecewise((Assign(c, x), x < 1), (Assign(c, x**2), True)) assert ccode(expr) == ("if (x < 1) {\n" " c = x;\n" "}\n" "else {\n" " c = pow(x, 2);\n" "}") expr = Piecewise((x, x < 1), (x + 1, x < 2), (x**2, True)) assert ccode(expr) == ("((x < 1) ? (\n" " x\n" ")\n" ": ((x < 2) ? (\n" " x + 1\n" ")\n" ": (\n" " pow(x, 2)\n" ")))") expr = Piecewise((Assign(c, x), x < 1), (Assign(c, x + 1), x < 2), (Assign(c, x**2), True)) assert ccode(expr) == ("if (x < 1) {\n" " c = x;\n" "}\n" "else if (x < 2) {\n" " c = x + 1;\n" "}\n" "else {\n" " c = pow(x, 2);\n" "}") # Check that Piecewise without a True (default) condition error expr = Piecewise((x, x < 1), (x**2, x > 1), (sin(x), x > 0)) raises(ValueError, lambda: ccode(expr))
def test_fcode_For(): f = For(x, Range(0, 10, 2), [Assign(y, x * y)]) sol = fcode(f) assert sol == ("do x = 0, 10, 2\n" " y = x*y\n" "end do")
def test_fcode_Assign(): assert fcode(Assign(x, y + z)) == 'x = y + z'
def test_ccode_Assign(): assert ccode(Assign(x, y + z)) == 'x = y + z;' assert ccode(AugAssign(x, '+', y + z)) == 'x += y + z;'