test_jy_internals.py

来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 128 行

PY
128
字号
""" test some jython internals"""import unittestfrom test_support import run_suiteimport javaimport jarrayclass WeakIdentityMapTests(unittest.TestCase):    def test_functionality(self):        if java.lang.System.getProperty("java.version")<"1.2":            return                from org.python.core import IdImpl2        i = java.lang.Integer(2)        j = java.lang.Integer(2)        # sanity check        assert i == j and i is not j        h = java.lang.Integer(2)        widmap = IdImpl2.WeakIdentityMap()        widmap.put(i,'i')        widmap.put(j,'j')        widmap.put(h,'h')        assert widmap.get(i) == 'i'        assert widmap.get(j) == 'j'        assert widmap.get(h) == 'h'        # white box double-check        assert widmap._internal_map_size() == 3        widmap.remove(h)        assert widmap.get(h) is None        # white box double-check        assert widmap._internal_map_size() == 2        # white box test for weak referencing of keys        del j        java.lang.System.gc()        assert widmap.get(i) == 'i' # triggers stale weak refs cleanup        assert widmap._internal_map_size() == 1        class LongAsScaledDoubleValueTests(unittest.TestCase):    def setUp(self):        self.v = v = 2**53-1 # full mag bits of a double value        self.v8 = v * 8      # fills up 7 bytes        self.e = jarray.zeros(1,'i')        iarr = java.lang.Object.getClass(self.e)        sdv = java.lang.Class.getMethod(long, 'scaledDoubleValue', [iarr])        import org.python.core.PyReflectedFunction as ReflFunc        self.sdv = ReflFunc(sdv)    def test_basic_roundtrip(self):        e = self.e        sdv = self.sdv        assert long(sdv(0L, e)) == 0        assert e[0] == 0        assert long(sdv(1L, e)) == 1        assert e[0] == 0        assert long(sdv(-1L, e)) == -1        assert e[0] == 0        assert long(sdv(self.v, e)) == self.v        assert e[0] == 0    def test_scale_3_v(self):        e = self.e        v = self.v8        sdv = self.sdv        assert long(sdv(v, e)) == v        assert e[0] == 0        assert long(sdv(v+1, e)) - v == 0        assert e[0] == 0    def test_no_worse_than_doubleValue(self):        e = self.e        v = self.v8        sdv = self.sdv        for d in range(8):            assert float(v+d) == sdv(v+d, e)            assert e[0] == 0        for d in range(8):            for y in [0,255]:                assert float((v+d)*256+y) == sdv((v+d)*256+y, e)                assert e[0] == 0        for d in range(8):          for y in [0,255]:            assert float((v+d)*256+y) == sdv(((v+d)*256+y)*256, e)            assert e[0] == 1        class ExtraMathTests(unittest.TestCase):    def test_epsilon(self):        from org.python.core import ExtraMath        self.assertNotEqual(1.0 + ExtraMath.EPSILON, 1.0)        self.assertEqual(1.0 + (ExtraMath.EPSILON/2.0), 1.0)    def test_close(self):        from org.python.core import ExtraMath        self.assert_(ExtraMath.close(3.0, 3.0))        self.assert_(ExtraMath.close(3.0, 3.0 + ExtraMath.CLOSE))        self.assert_(not ExtraMath.close(3.0, 3.0 + 4.0*ExtraMath.CLOSE))    def test_closeFloor(self):        from org.python.core import ExtraMath        import math        self.assertEquals(ExtraMath.closeFloor(3.5), 3.0)        self.assertEquals(ExtraMath.closeFloor(3.0 - ExtraMath.EPSILON), 3.0)        self.assertEquals(          ExtraMath.closeFloor(3.0 - 3.0 * ExtraMath.CLOSE), 2.0)        self.assertEquals(ExtraMath.closeFloor(math.log10(10**3)), 3.0)def test_main():    test_suite = unittest.TestSuite()    test_loader = unittest.TestLoader()    def suite_add(case):        test_suite.addTest(test_loader.loadTestsFromTestCase(case))    suite_add(WeakIdentityMapTests)    suite_add(LongAsScaledDoubleValueTests)    suite_add(ExtraMathTests)    run_suite(test_suite)if __name__ == "__main__":    test_main()

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?