diff --git a/tests/java-src/org/jnius/ConstructorTest.java b/tests/java-src/org/jnius/ConstructorTest.java new file mode 100644 index 0000000..a09c021 --- /dev/null +++ b/tests/java-src/org/jnius/ConstructorTest.java @@ -0,0 +1,23 @@ +package org.jnius; +import java.lang.Character; + + +public class ConstructorTest { + public int ret; + + public ConstructorTest() { + ret = 753; + } + + public ConstructorTest(int cret) { + ret = cret; + } + + public ConstructorTest(char charet) { + ret = (int) charet; + } + + public ConstructorTest(int cret, char charet) { + ret = cret + (int) charet; + } +} diff --git a/tests/test_constructor.py b/tests/test_constructor.py new file mode 100644 index 0000000..f619155 --- /dev/null +++ b/tests/test_constructor.py @@ -0,0 +1,69 @@ +''' +Test creating an instance of a Java class and fetching its values. +''' + +from __future__ import absolute_import +import unittest +from jnius import autoclass, JavaException + + +class TestConstructor(unittest.TestCase): + ''' + TestCase for using constructors with PyJNIus. + ''' + + def test_constructor_none(self): + ''' + Empty constructor, baked value in the .java file. + ''' + + ConstructorTest = autoclass('org.jnius.ConstructorTest') + inst = ConstructorTest() + self.assertEqual(inst.ret, 753) + self.assertTrue(ConstructorTest.getClass().isInstance(inst)) + + def test_constructor_int(self): + ''' + Constructor expecting int and setting it as public 'ret' property. + ''' + + ConstructorTest = autoclass('org.jnius.ConstructorTest') + inst = ConstructorTest(123) + self.assertEqual(inst.ret, 123) + self.assertTrue(ConstructorTest.getClass().isInstance(inst)) + + def test_constructor_string(self): + ''' + Constructor expecting char, casting it to int and setting it + as public 'ret' property. + ''' + + ConstructorTest = autoclass('org.jnius.ConstructorTest') + inst = ConstructorTest('a') + self.assertEqual(inst.ret, ord('a')) + self.assertTrue(ConstructorTest.getClass().isInstance(inst)) + + def test_constructor_int_string(self): + ''' + Constructor expecting int and char, casting char to int and summing it + as public 'ret' property. + ''' + + ConstructorTest = autoclass('org.jnius.ConstructorTest') + inst = ConstructorTest(3, 'a') + self.assertEqual(inst.ret, 3 + ord('a')) + self.assertTrue(ConstructorTest.getClass().isInstance(inst)) + + def test_constructor_exception(self): + ''' + No such constructor found (no such signature), + should raise JavaException. + ''' + + ConstructorTest = autoclass('org.jnius.ConstructorTest') + with self.assertRaises(JavaException): + ConstructorTest('1.', 2.0, False) + + +if __name__ == '__main__': + unittest.main()