RandomSec/lib/jython-2.5.1/test/test_jbasic.py
Vishal Talwar d0df704d8a added python code part of jython distribution in lib/jython-2.5.1
added python.path vm arg to startup script
fixed infinite loop in unwrap() when displaying sequences of sequences



git-svn-id: http://google-refine.googlecode.com/svn/trunk@509 7d457c2a-affb-35e4-300a-418c747d4874
2010-04-20 18:50:24 +00:00

120 lines
3.0 KiB
Python

from test_support import *
print 'Basic Java Integration (test_jbasic.py)'
print 'type conversions'
print 'numbers'
from java.lang.Math import abs
assert abs(-2.) == 2., 'Python float to Java double'
assert abs(-2) == 2l, 'Python int to Java long'
assert abs(-2l) == 2l, 'Python long to Java long'
try: abs(-123456789123456789123l)
except TypeError: pass
print 'strings'
from java.lang import Integer, String
assert Integer.valueOf('42') == 42, 'Python string to Java string'
print 'arrays'
chars = ['a', 'b', 'c']
assert String.valueOf(chars) == 'abc', 'char array'
print 'Enumerations'
from java.util import Vector
vec = Vector()
items = range(10)
for i in items:
vec.addElement(i)
expected = 0
for i in vec:
assert i == expected, 'testing __iter__ on java.util.Vector'
expected = expected+1
expected = 0
for i in iter(vec):
assert i == expected, 'testing iter(java.util.Vector)'
expected = expected+1
print 'create java objects'
from java.math import BigInteger
assert BigInteger('1234', 10).intValue() == 1234, 'BigInteger(string)'
assert BigInteger([0x11, 0x11, 0x11]).intValue() == 0x111111, 'BigInteger(byte[])'
assert BigInteger(-1, [0x11, 0x11, 0x11]).intValue() == -0x111111, 'BigInteger(int, byte[])'
print 'call static methods'
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)
assert s1 == s2 == s3 == s4 == s5, 'String.valueOf method with different arguments'
print 'call instance methods'
s = String('hello')
assert s.regionMatches(1, 1, 'ell', 0, 3), 'method call with boolean true'
assert s.regionMatches(0, 1, 'ell', 0, 3), 'method call with boolean false'
assert s.regionMatches(1, 'ell', 0, 3), 'method call no boolean'
assert s.regionMatches(1, 1, 'eLl', 0, 3), 'method call ignore case'
assert not s.regionMatches(1, 'eLl', 0, 3), 'should ignore case'
from java.awt import Dimension
print 'get/set fields'
d = Dimension(3,9)
assert d.width == 3 and d.height == 9, 'getting fields'
d.width = 42
assert d.width == 42 and d.height == 9, 'setting fields'
#Make sure non-existent fields fail
try:
print d.foo
except AttributeError:
pass
else:
raise AssertionError, 'd.foo should throw type error'
print 'get/set bean properties'
from javax import swing
b1 = swing.JButton()
b1.label = 'foo'
b2 = swing.JButton(label='foo')
assert b1.label == b2.label == 'foo', 'Button label bean property'
print 'bean event properties'
# Test bean event properties - single and multiple
flag = 0
def testAction(event):
global flag
flag = flag + 1
from java.awt.event import ActionEvent
doit = ActionEvent(b1, ActionEvent.ACTION_PERFORMED, "")
b1.actionPerformed = testAction
flag = 0
b1.doClick()
assert flag == 1, 'expected one action per event but got %s' % flag
b1.actionPerformed.append(testAction)
flag = 0
b1.doClick()
assert flag == 2, 'two actions per event'
b1.actionPerformed = testAction
flag = 0
b1.doClick()
assert flag == 1, 'one actions per event - again'
# TBD: Jython does not properly exit after this code!