78 lines
2.6 KiB
Python
78 lines
2.6 KiB
Python
|
# The jarray module is being phased out, with all functionality
|
||
|
# now available in the array module.
|
||
|
from __future__ import with_statement
|
||
|
import os
|
||
|
import unittest
|
||
|
from test import test_support
|
||
|
from array import array, zeros
|
||
|
from java.lang import String
|
||
|
from java.lang.reflect import Array
|
||
|
from java.util import Arrays
|
||
|
|
||
|
class ArrayJyTestCase(unittest.TestCase):
|
||
|
|
||
|
def test_jarray(self): # until it is fully formally removed
|
||
|
# While jarray is still being phased out, just flex the initializers.
|
||
|
# The rest of the test for array will catch all the big problems.
|
||
|
import jarray
|
||
|
jarray.array(range(5), 'i')
|
||
|
jarray.array([String("a"), String("b"), String("c")], String)
|
||
|
jarray.zeros(5, 'i')
|
||
|
jarray.zeros(5, String)
|
||
|
|
||
|
def test_java_object_arrays(self):
|
||
|
jStringArr = array(String, [String("a"), String("b"), String("c")])
|
||
|
self.assert_(
|
||
|
Arrays.equals(jStringArr.typecode, 'java.lang.String'),
|
||
|
"String array typecode of wrong type, expected %s, found %s" %
|
||
|
(jStringArr.typecode, str(String)))
|
||
|
self.assertEqual(zeros(String, 5), Array.newInstance(String, 5))
|
||
|
|
||
|
import java.lang.String # require for eval to work
|
||
|
self.assertEqual(jStringArr, eval(str(jStringArr)))
|
||
|
|
||
|
def test_java_compat(self):
|
||
|
from java.awt import Color
|
||
|
hsb = Color.RGBtoHSB(0,255,255, None)
|
||
|
self.assertEqual(hsb, array('f', [0.5,1,1]),
|
||
|
"output hsb float array does not correspond to input rgb values")
|
||
|
|
||
|
rgb = apply(Color.HSBtoRGB, tuple(hsb))
|
||
|
self.assertEqual(rgb, -0xff0001,
|
||
|
"output rgb bytes don't match input hsb floats")
|
||
|
hsb1 = zeros('f', 3)
|
||
|
Color.RGBtoHSB(0, 255, 255, hsb1)
|
||
|
self.assertEqual(hsb, hsb1, "hsb float arrays were not equal")
|
||
|
|
||
|
|
||
|
class ToFromfileTestCase(unittest.TestCase):
|
||
|
|
||
|
def tearDown(self):
|
||
|
if os.path.exists(test_support.TESTFN):
|
||
|
os.remove(test_support.TESTFN)
|
||
|
|
||
|
def test_tofromfile(self):
|
||
|
# http://bugs.jython.org/issue1457
|
||
|
x = array('i', range(5))
|
||
|
with open(test_support.TESTFN, 'wb') as f:
|
||
|
x.tofile(f)
|
||
|
|
||
|
x = array('i', [])
|
||
|
with open(test_support.TESTFN, 'r+b') as f:
|
||
|
x.fromfile(f, 5)
|
||
|
x *= 2
|
||
|
x.tofile(f)
|
||
|
|
||
|
with open(test_support.TESTFN, 'rb') as f:
|
||
|
x.fromfile(f, 10)
|
||
|
self.assertEqual(x, array('i', range(5) * 4))
|
||
|
|
||
|
|
||
|
def test_main():
|
||
|
test_support.run_unittest(ArrayJyTestCase,
|
||
|
ToFromfileTestCase)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
test_main()
|