Lib.test.test_jbasic.py Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-standalone Show documentation
Show all versions of jython-standalone Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
import unittest
from test import test_support
from java.awt import Dimension
from java.awt.event import ActionEvent
from java.lang import Integer, String
from java.lang.Math import abs
from java.math import BigInteger
from java.util import Vector
from javax import swing
from javatests import ListTest
class PyListTest(ListTest):
def __init__(self):
ListTest.__init__(self)
def newInstance(self, coll):
if coll is None:
return list()
else:
return list(coll)
def isReadOnly(self):
return False
class PyTupleTest(ListTest):
def __init__(self):
ListTest.__init__(self)
def newInstance(self, coll):
if coll is None:
return tuple()
else:
return tuple(coll)
def isReadOnly(self):
return True
class JythonBasicTests(unittest.TestCase):
def test_numbers(self):
self.assertEquals(abs(-2.), 2., 'Python float to Java double')
self.assertEquals(abs(-2), 2l, 'Python int to Java long')
self.assertEquals(abs(-2l), 2l, 'Python long to Java long')
try:
abs(-123456789123456789123l)
except TypeError:
pass
def test_strings(self):
self.assertEquals(Integer.valueOf('42'), 42,
'Python string to Java string')
def test_arrays(self):
chars = ['a', 'b', 'c']
self.assertEquals(String.valueOf(chars), 'abc', 'char array')
def test_enumerations(self):
vec = Vector()
items = range(10)
for i in items:
vec.addElement(i)
expected = 0
for i in vec:
self.assertEquals(i, expected,
'testing __iter__ on java.util.Vector')
expected = expected + 1
expected = 0
for i in iter(vec):
self.assertEquals(i, expected, 'testing iter(java.util.Vector)')
expected = expected + 1
def test_java_objects(self):
self.assertEquals(BigInteger('1234', 10).intValue(), 1234,
'BigInteger(string)')
self.assertEquals(BigInteger([0x11, 0x11, 0x11]).intValue(), 0x111111,
'BigInteger(byte[])')
self.assertEquals(BigInteger(-1, [0x11, 0x11, 0x11]).intValue(),
-0x111111, 'BigInteger(int, byte[])')
def test_call_static_methods(self):
s1 = String.valueOf(['1', '2', '3'])
s2 = String.valueOf('123')
s3 = String.valueOf(123)
s4 = String.valueOf(123l)
s5 = String.valueOf(['0', '1', '2', '3', 'a', 'b'], 1, 3)
self.assertEquals(s1, s2)
self.assertEquals(s1, s3)
self.assertEquals(s1, s4)
self.assertEquals(s1, s5)
def test_call_instance_methods(self):
s = String('hello')
self.assertTrue(s.regionMatches(1, 1, 'ell', 0, 3),
'method call with boolean true')
self.assertTrue(s.regionMatches(0, 1, 'ell', 0, 3),
'method call with boolean false')
self.assertTrue(s.regionMatches(1, 'ell', 0, 3),
'method call no boolean')
self.assertTrue(s.regionMatches(1, 1, 'eLl', 0, 3),
'method call ignore case')
self.assertFalse(s.regionMatches(1, 'eLl', 0, 3), 'should ignore case')
def test_get_set(self):
d = Dimension(3, 9)
self.assertEquals(d.width, 3)
self.assertEquals(d.height, 9)
d.width = 42
self.assertEquals(d.width, 42)
self.assertEquals(d.height, 9)
try:
d.foo
except AttributeError:
pass
else:
raise AssertionError('d.foo should throw type error')
# Used in test_java_bean_properties.
flag = 0
def test_java_bean_properties(self):
b1 = swing.JButton()
b1.label = 'foo'
b2 = swing.JButton(label='foo')
self.assertEquals(b1.label, b2.label)
self.assertEquals(b1.label, 'foo')
# Test bean event properties - single and multiple
def testAction(event):
JythonBasicTests.flag += 1
doit = ActionEvent(b1, ActionEvent.ACTION_PERFORMED, "")
b1.actionPerformed = testAction
JythonBasicTests.flag = 0
b1.doClick()
self.assertEquals(
JythonBasicTests.flag, 1,
'expected one action per event but got %s' % JythonBasicTests.flag)
b1.actionPerformed.append(testAction)
JythonBasicTests.flag = 0
b1.doClick()
self.assertEquals(JythonBasicTests.flag, 2, 'two actions per event')
b1.actionPerformed = testAction
JythonBasicTests.flag = 0
b1.doClick()
self.assertEquals(JythonBasicTests.flag, 1,
'one actions per event - again')
def test_anonymous_inner_classes(self):
import javatests.AnonInner
x = javatests.AnonInner()
self.assertEquals(x.doit(), 2000)
def test_javalists(self):
# these first two tests just verify that we have a good unit test
alt = ListTest.getArrayListTest(False)
alt.testAll()
alt = ListTest.getArrayListTest(True)
alt.testAll()
# Now run the tests
plt = PyListTest()
plt.testAll()
ptt = PyTupleTest()
ptt.testAll()
def test_main():
test_support.run_unittest(JythonBasicTests)
if __name__ == '__main__':
test_main()