Example #1
0
    def testOrderOfParamsMerges(self):
        (t1, t2) = (fsymbol.T("a"), fsymbol.T("b"))
        t1["@a"] = Var(Int, 1)
        t1["d"] = Var(Int, 100)
        t2["d"] = Var(Int, 200)
        t2["@a"] = Var(Int, 3)
        t2["@b"] = Var(Float, 2)
        t1["@myfunc"] = fsymbol.OverloadList(
            [function.Func([Int], Int, "ident")])
        t2["@myotherfunc"] = fsymbol.OverloadList(
            [function.Func([Int], Int, "ident")])
        t1.merge(t2)

        op = t1.order_of_params()
        self.assertEqual(0, op["t__a_a"])
        self.assertEqual(1, op["t__a_ba"])
        self.assertEqual(2, op["t__a_bb"])
        self.assertEqual(-1, t1["d"].param_slot)
        self.assertEqual(-1, t2["d"].param_slot)
Example #2
0
    def testFunc(self):
        f = function.Func([fracttypes.Int, fracttypes.Int],
                          fracttypes.Int,
                          "wibble",
                          pos=7)
        self.assertEqual([fracttypes.Int, fracttypes.Int], f.args)
        self.assertEqual(fracttypes.Int, f.ret)
        self.assertEqual(7, f.pos)
        self.assertEqual("wibble", f.cname)
        self.assertEqual("wibble_ii_i", f.genFunc)
        self.assertEqual([], f.implicit_args)

        f.set_implicit_arg("fish")
        f.set_implicit_arg("blouse")
        self.assertEqual(["fish", "blouse"], f.implicit_args)
Example #3
0
    def testParamSlots(self):
        t = fsymbol.T("boo")
        v = Var(Int, 1)
        self.assertEqual(-1, v.param_slot)
        t["x"] = v
        self.assertEqual(-1, v.param_slot)

        v2 = Var(Complex, [1.0, 2.0])
        self.assertEqual(-1, v2.param_slot)
        t["@p"] = v2
        self.assertEqual(0, v2.param_slot)
        self.assertEqual(2, t.nextParamSlot)

        v3 = Var(Hyper, [1.0, 2.0, 3.0, 4.0])
        self.assertEqual(-1, v3.param_slot)
        t["@pc"] = v3
        self.assertEqual(2, v3.param_slot)
        self.assertEqual(6, t.nextParamSlot)

        v4 = Var(Int, 77)
        self.assertEqual(-1, v4.param_slot)
        t["@pi"] = v4
        self.assertEqual(6, v4.param_slot)
        self.assertEqual(7, t.nextParamSlot)

        # functions shouldn't affect this
        f = fsymbol.OverloadList([function.Func([Int], Int, "ident")])
        t["@myfunc"] = f
        self.assertNotEqual(True, hasattr(f, "param_slot"))
        self.assertEqual(7, t.nextParamSlot)

        v5 = Var(Image, None)
        self.assertEqual(-1, v5.param_slot)
        t["@image"] = v5
        self.assertEqual(7, v5.param_slot)
        self.assertEqual(8, t.nextParamSlot)