61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
|
import unittest
|
||
|
from test import test_support
|
||
|
|
||
|
if test_support.is_jython:
|
||
|
from java.util import Random
|
||
|
from javatests import PySetInJavaTest
|
||
|
|
||
|
class SetTestCase(unittest.TestCase):
|
||
|
|
||
|
def test_binops(self):
|
||
|
class Foo(object):
|
||
|
__rsub__ = lambda self, other: 'rsub'
|
||
|
__ror__ = lambda self, other: 'ror'
|
||
|
__rand__ = lambda self, other: 'rand'
|
||
|
__rxor__ = lambda self, other: 'rxor'
|
||
|
foo = Foo()
|
||
|
s = set()
|
||
|
self.assertEqual(s - foo, 'rsub')
|
||
|
self.assertEqual(s | foo, 'ror')
|
||
|
self.assertEqual(s & foo, 'rand')
|
||
|
self.assertEqual(s ^ foo, 'rxor')
|
||
|
|
||
|
|
||
|
class SetInJavaTestCase(unittest.TestCase):
|
||
|
|
||
|
"""Tests for derived dict behaviour"""
|
||
|
|
||
|
def test_using_PySet_as_Java_Set(self):
|
||
|
PySetInJavaTest.testPySetAsJavaSet()
|
||
|
|
||
|
def test_accessing_items_added_in_java(self):
|
||
|
s = PySetInJavaTest.createPySetContainingJavaObjects()
|
||
|
for v in s:
|
||
|
self.assert_(v in s)
|
||
|
if isinstance(v, unicode):
|
||
|
self.assertEquals("value", v)
|
||
|
else:
|
||
|
# Should be a java.util.Random; ensure we can call it
|
||
|
v.nextInt()
|
||
|
|
||
|
def test_java_accessing_items_added_in_python(self):
|
||
|
# Test a type that should be coerced into a Java type, a Java
|
||
|
# instance that should be wrapped, and a Python instance that
|
||
|
# should pass through as itself with str, Random and tuple
|
||
|
# respectively.
|
||
|
s = set(["value", Random(), ("tuple", "of", "stuff")])
|
||
|
PySetInJavaTest.accessAndRemovePySetItems(s)
|
||
|
# Check that the Java removal affected the underlying set
|
||
|
self.assertEquals(0, len(s))
|
||
|
|
||
|
|
||
|
def test_main():
|
||
|
tests = [SetTestCase]
|
||
|
if test_support.is_jython:
|
||
|
tests.append(SetInJavaTestCase)
|
||
|
test_support.run_unittest(*tests)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
test_main()
|