def test_class_coercion(self): c = Coercions() from java.util import Hashtable, HashMap ht = Hashtable() hm = HashMap() ht['one'] = 'uno' hm['zwei'] = 'two' for obj, cls in ((ht, "java.util.Hashtable"), (hm, "java.util.HashMap"), ("abc", "java.lang.String"), (1, "java.lang.Integer"), (1.2, "java.lang.Double"), (Hashtable, "java.lang.Class")): self.assertEquals(c.tellClassNameSerializable(obj), "class " + cls) self.assertEquals(c.tellClassNameObject(ht), "class java.util.Hashtable")
def test_array_coercion(self): self.assertEquals("double", Coercions.takeArray(array.zeros('d', 2))) self.assertEquals("float", Coercions.takeArray(array.zeros('f', 2))) self.assertEquals("4", Coercions.takePyObj(1, 2, 3, 4)) c = Coercions() self.assertEquals("5", c.takePyObjInst(1, 2, 3, 4, 5)) self.assertEquals("OtherSubVisible[]", c.takeArray([OtherSubVisible()])) self.assertEquals("SubVisible[]", c.takeArray([SubVisible()]))
def test_iterable_coercion(self): def simple_gen(): yield 1 yield 2 yield 3 self.assertEquals(6, Coercions.takeIterable(simple_gen()))
def test_multilevel_override(self): runs = [] class SubDate(Date): def run(self): runs.append("SubDate") def method(self): return "SubDateMethod" def toString(self): s = Date.toString(self) return 'SubDate -> Date' class SubSubDate(SubDate, Runnable): def toString(self): return 'SubSubDate -> ' + SubDate.toString(self) self.assertEquals("SubDate -> Date", SubDate().toString()) self.assertEquals("SubSubDate -> SubDate -> Date", SubSubDate().toString()) self.assertEquals("SubDateMethod", SubSubDate().method()) Coercions.runRunnable(SubSubDate()) self.assertEquals(["SubDate"], runs)
def test_multilevel_override(self): runs = [] class SubDate(Date): def run(self): runs.append("SubDate") def method(self): return "SubDateMethod" def toString(self): s = Date.toString(self) return 'SubDate -> Date' class SubSubDate(SubDate, Runnable): def toString(self): return 'SubSubDate -> ' + SubDate.toString(self) self.assertEqual("SubDate -> Date", SubDate().toString()) self.assertEqual("SubSubDate -> SubDate -> Date", SubSubDate().toString()) self.assertEqual("SubDateMethod", SubSubDate().method()) Coercions.runRunnable(SubSubDate()) self.assertEqual(["SubDate"], runs)
def test_int_coercion(self): c = Coercions() self.assertEquals("5", c.takeInt(5)) self.assertEquals("15", c.takeInteger(15)) self.assertEquals("150", c.takeNumber(150)) self.assertEquals("take with byte arg: 10", Coercions.take(Byte(10)))