From 4a0ee3ee01fef573a9748cf7cbe57677f99a98d0 Mon Sep 17 00:00:00 2001 From: Jim Date: Fri, 12 Jun 2020 10:45:33 -0400 Subject: [PATCH] constructor unit tests --- tests/java-src/org/jnius/VariablePassing.java | 15 +++ tests/test_pass_by_reference_or_value.py | 109 +++++++++++++++++- 2 files changed, 120 insertions(+), 4 deletions(-) diff --git a/tests/java-src/org/jnius/VariablePassing.java b/tests/java-src/org/jnius/VariablePassing.java index 6ca1725..3047c95 100644 --- a/tests/java-src/org/jnius/VariablePassing.java +++ b/tests/java-src/org/jnius/VariablePassing.java @@ -2,6 +2,21 @@ package org.jnius; public class VariablePassing { + public VariablePassing() { + + } + + public VariablePassing(int[] numbers) { + squareNumbers(numbers); + } + + public VariablePassing(int[] numbers1, int[] numbers2, int[] numbers3, int[] numbers4) { + squareNumbers(numbers1); + squareNumbers(numbers2); + squareNumbers(numbers3); + squareNumbers(numbers4); + } + private static void squareNumbers(int[] numbers) { for (int i = 0; i < numbers.length; i++) { numbers[i] = i * i; diff --git a/tests/test_pass_by_reference_or_value.py b/tests/test_pass_by_reference_or_value.py index c63dc38..b70d36b 100644 --- a/tests/test_pass_by_reference_or_value.py +++ b/tests/test_pass_by_reference_or_value.py @@ -14,9 +14,8 @@ class PassByReferenceOrValueTest(unittest.TestCase): for n, c in zip(numbers, changed): self._verify(n, c) - def test_single_param(self): + def test_single_param_static(self): VariablePassing = autoclass('org.jnius.VariablePassing') - variablePassing = VariablePassing() # passed by reference (default), numbers should change numbers = list(range(10)) @@ -33,6 +32,10 @@ class PassByReferenceOrValueTest(unittest.TestCase): VariablePassing.singleParamStatic(numbers, pass_by_reference=False) self._verify(numbers, False) + def test_single_param(self): + VariablePassing = autoclass('org.jnius.VariablePassing') + variablePassing = VariablePassing() + # passed by reference (default), numbers should change numbers = list(range(10)) variablePassing.singleParam(numbers) @@ -48,9 +51,8 @@ class PassByReferenceOrValueTest(unittest.TestCase): variablePassing.singleParam(numbers, pass_by_reference=False) self._verify(numbers, False) - def test_multiple_params(self): + def test_multiple_params_static(self): VariablePassing = autoclass('org.jnius.VariablePassing') - variablePassing = VariablePassing() # passed by reference (default), all numbers should change numbers = [list(range(10)) for _ in range(4)] @@ -88,3 +90,102 @@ class PassByReferenceOrValueTest(unittest.TestCase): changed = (False, True, False, True) VariablePassing.multipleParamsStatic(*numbers, pass_by_reference=changed) self._verify_all(numbers, changed) + + def test_multiple_params(self): + VariablePassing = autoclass('org.jnius.VariablePassing') + variablePassing = VariablePassing() + + # passed by reference (default), all numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing.multipleParams(*numbers) + self._verify_all(numbers, [True] * 4) + + # passed by reference, all numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing.multipleParams(*numbers, pass_by_reference=True) + self._verify_all(numbers, [True] * 4) + + # passed by value, no numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing.multipleParams(*numbers, pass_by_reference=False) + self._verify_all(numbers, [False] * 4) + + # only the first set of numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing.multipleParams(*numbers, pass_by_reference=[True, False]) + self._verify_all(numbers, [True, False, False, False]) + + # only the first set of numbers should not change + numbers = [list(range(10)) for _ in range(4)] + variablePassing.multipleParams(*numbers, pass_by_reference=[False, True]) + self._verify_all(numbers, [False, True, True, True]) + + # only the odd sets of numbers should change + numbers = [list(range(10)) for _ in range(4)] + changed = (True, False, True, False) + variablePassing.multipleParams(*numbers, pass_by_reference=changed) + self._verify_all(numbers, changed) + + # only the even sets of numbers should change + numbers = [list(range(10)) for _ in range(4)] + changed = (False, True, False, True) + variablePassing.multipleParams(*numbers, pass_by_reference=changed) + self._verify_all(numbers, changed) + + def test_contructor_single_param(self): + VariablePassing = autoclass('org.jnius.VariablePassing') + + # passed by reference (default), numbers should change + numbers = list(range(10)) + variablePassing = VariablePassing(numbers) + self._verify(numbers, True) + + # passed by reference, numbers should change + numbers = list(range(10)) + variablePassing = VariablePassing(numbers, pass_by_reference=True) + self._verify(numbers, True) + + # passed by value, numbers should not change + numbers = list(range(10)) + variablePassing = VariablePassing(numbers, pass_by_reference=False) + self._verify(numbers, False) + + def test_contructor_multiple_params(self): + VariablePassing = autoclass('org.jnius.VariablePassing') + + # passed by reference (default), all numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing = VariablePassing(*numbers) + self._verify_all(numbers, [True] * 4) + + # passed by reference, all numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing = VariablePassing(*numbers, pass_by_reference=True) + self._verify_all(numbers, [True] * 4) + + # passed by value, no numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing = VariablePassing(*numbers, pass_by_reference=False) + self._verify_all(numbers, [False] * 4) + + # only the first set of numbers should change + numbers = [list(range(10)) for _ in range(4)] + variablePassing = VariablePassing(*numbers, pass_by_reference=[True, False]) + self._verify_all(numbers, [True, False, False, False]) + + # only the first set of numbers should not change + numbers = [list(range(10)) for _ in range(4)] + variablePassing = VariablePassing(*numbers, pass_by_reference=[False, True]) + self._verify_all(numbers, [False, True, True, True]) + + # only the odd sets of numbers should change + numbers = [list(range(10)) for _ in range(4)] + changed = (True, False, True, False) + variablePassing = VariablePassing(*numbers, pass_by_reference=changed) + self._verify_all(numbers, changed) + + # only the even sets of numbers should change + numbers = [list(range(10)) for _ in range(4)] + changed = (False, True, False, True) + variablePassing = VariablePassing(*numbers, pass_by_reference=changed) + self._verify_all(numbers, changed)