pyjnius/tests/test_proxy.py

143 lines
3.5 KiB
Python
Raw Normal View History

2013-03-13 20:38:10 +00:00
from jnius import autoclass, java_method, PythonJavaClass, cast
print '1: declare a TestImplem that implement Collection'
class TestImplemIterator(PythonJavaClass):
__javainterfaces__ = [
#'java/util/Iterator',
'java/util/ListIterator', ]
def __init__(self, collection, index=0):
super(TestImplemIterator, self).__init__()
self.collection = collection
self.index = index
2013-03-13 20:38:10 +00:00
@java_method('()Z')
def hasNext(self):
2013-01-17 01:33:50 +00:00
return self.index < len(self.collection.data) - 1
2013-03-13 20:38:10 +00:00
@java_method('()Ljava/lang/Object;')
def next(self):
obj = self.collection.data[self.index]
self.index += 1
return obj
2013-03-13 20:38:10 +00:00
@java_method('()Z')
def hasPrevious(self):
return self.index >= 0
2013-03-13 20:38:10 +00:00
@java_method('()Ljava/lang/Object;')
def previous(self):
self.index -= 1
obj = self.collection.data[self.index]
return obj
2013-03-13 20:38:10 +00:00
@java_method('()I')
def previousIndex(self):
return self.index - 1
2013-03-13 20:38:10 +00:00
@java_method('()Ljava/lang/String;')
def toString(self):
return repr(self)
2013-03-13 20:38:10 +00:00
@java_method('(I)Ljava/lang/Object;')
def get(self, index):
2013-03-13 18:13:08 +00:00
return self.collection.data[index - 1]
2013-03-13 20:38:10 +00:00
@java_method('(Ljava/lang/Object;)V')
2013-01-17 01:33:50 +00:00
def set(self, obj):
2013-03-13 18:13:08 +00:00
self.collection.data[self.index - 1] = obj
class TestImplem(PythonJavaClass):
__javainterfaces__ = ['java/util/List']
def __init__(self, *args):
super(TestImplem, self).__init__(*args)
self.data = list(args)
2013-03-13 20:38:10 +00:00
@java_method('()Ljava/util/Iterator;')
def iterator(self):
it = TestImplemIterator(self)
return it
2013-03-13 20:38:10 +00:00
@java_method('()Ljava/lang/String;')
def toString(self):
return repr(self)
2013-03-13 20:38:10 +00:00
@java_method('()I')
def size(self):
return len(self.data)
2013-03-13 20:38:10 +00:00
@java_method('(I)Ljava/lang/Object;')
def get(self, index):
return self.data[index]
2013-03-13 20:38:10 +00:00
@java_method('(ILjava/lang/Object;)Ljava/lang/Object;')
def set(self, index, obj):
old_object = self.data[index]
self.data[index] = obj
return old_object
2013-03-13 20:38:10 +00:00
@java_method('()[Ljava/lang/Object;')
def toArray(self):
return self.data
2013-03-13 20:38:10 +00:00
@java_method('()Ljava/util/ListIterator;')
def listIterator(self):
it = TestImplemIterator(self)
return it
2013-03-13 20:38:10 +00:00
@java_method('(I)Ljava/util/ListIterator;',
name='ListIterator')
def listIteratorI(self, index):
it = TestImplemIterator(self, index)
return it
print '2: instanciate the class, with some data'
a = TestImplem(*range(10))
print a
print dir(a)
2013-03-13 18:13:08 +00:00
print 'tries to get a ListIterator'
iterator = a.listIterator()
print 'iterator is', iterator
while iterator.hasNext():
print 'at index', iterator.index, 'value is', iterator.next()
print '3: Do cast to a collection'
a2 = cast('java/util/Collection', a.j_self)
print a2
print '4: Try few method on the collection'
Collections = autoclass('java.util.Collections')
#print Collections.enumeration(a)
#print Collections.enumeration(a)
ret = Collections.max(a)
print "reverse"
print Collections.reverse(a)
print a.data
print "before swap"
print Collections.swap(a, 2, 3)
print "after swap"
print a.data
print "rotate"
print Collections.rotate(a, 5)
print a.data
print 'Order of data before shuffle()', a.data
print Collections.shuffle(a)
print 'Order of data after shuffle()', a.data
# XXX We have issues for methosd with multiple signature
2013-03-13 18:13:08 +00:00
print '-> Collections.max(a)'
print Collections.max(a2)
2013-03-13 20:38:10 +00:00
#print '-> Collections.shuffle(a)'
#print Collections.shuffle(a2)