diff --git a/bin/nl/jssl/autounit/ManualTest.class b/bin/nl/jssl/autounit/ManualTest.class deleted file mode 100644 index 6dcf979..0000000 Binary files a/bin/nl/jssl/autounit/ManualTest.class and /dev/null differ diff --git a/bin/nl/jssl/autounit/PrimtiveTypeTests.class b/bin/nl/jssl/autounit/PrimtiveTypeTests.class index bf336c0..c9498b4 100644 Binary files a/bin/nl/jssl/autounit/PrimtiveTypeTests.class and b/bin/nl/jssl/autounit/PrimtiveTypeTests.class differ diff --git a/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class b/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class index 3ea4ca2..dfa38c5 100644 Binary files a/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class and b/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class differ diff --git a/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class b/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class index f705cf6..f32dd9b 100644 Binary files a/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class and b/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class differ diff --git a/bin/nl/jssl/autounit/testclasses/IntArguments.class b/bin/nl/jssl/autounit/testclasses/IntArguments.class index ab7bc5a..d3b23ca 100644 Binary files a/bin/nl/jssl/autounit/testclasses/IntArguments.class and b/bin/nl/jssl/autounit/testclasses/IntArguments.class differ diff --git a/nl.jssl.autounit.testclasses.FloatArguments.xml b/nl.jssl.autounit.testclasses.FloatArguments.xml index 7cd0e0b..397f4cc 100644 --- a/nl.jssl.autounit.testclasses.FloatArguments.xml +++ b/nl.jssl.autounit.testclasses.FloatArguments.xml @@ -5,7 +5,7 @@ - -7.5912475E37 + -Infinity -2147483648 diff --git a/nl.jssl.autounit.testclasses.IntArguments.xml b/nl.jssl.autounit.testclasses.IntArguments.xml index 35f1a54..3d74d3e 100644 --- a/nl.jssl.autounit.testclasses.IntArguments.xml +++ b/nl.jssl.autounit.testclasses.IntArguments.xml @@ -1,34 +1,36 @@ - - public java.lang.String evenOrUneven(int arg1) - - - - - -819817314 - - even - - - - -916902647 - - uneven - - - - public int randomOther(int arg1) - -1762850486 + -2147483648 0 + + public java.lang.String evenOrUneven(int arg1,int arg2) + + + + + -2147483648 + -2147483648 + + even + + + + -1 + -1 + + uneven + + + + \ No newline at end of file diff --git a/src/nl/jssl/autounit/inputs/CombinedInputSetFactory.java b/src/nl/jssl/autounit/inputs/CombinedInputSetFactory.java index b007ccf..de733d4 100644 --- a/src/nl/jssl/autounit/inputs/CombinedInputSetFactory.java +++ b/src/nl/jssl/autounit/inputs/CombinedInputSetFactory.java @@ -28,24 +28,25 @@ public class CombinedInputSetFactory { } else { List allPossibleArguments = new ArrayList<>(); - for (SingleTypeInputs inputs : inputSetsForAllArguments) { - // make list of all permutations of first argument values - List permutatedInputs = Permutator.permute(inputs); - int index = 0; - for (Object variable : permutatedInputs) { - // all lists ("columns") are combined into "rows" - if (index >= allPossibleArguments.size()) { - ArgumentsForSingleCall a = new ArgumentsForSingleCall(); - a.add(variable); - allPossibleArguments.add(a); - } else { - ArgumentsForSingleCall argumentsForSingleCall = allPossibleArguments.get(index); - argumentsForSingleCall.add(variable); - } - index++; - } - } +// for (SingleTypeInputs inputs : inputSetsForAllArguments) { +// // make list of all permutations of first argument values +// List permutatedInputs = Permutator.permute(inputs); +// int index = 0; +// for (Object variable : permutatedInputs) { +// // all lists ("columns") are combined into "rows" +// if (index >= allPossibleArguments.size()) { +// ArgumentsForSingleCall a = new ArgumentsForSingleCall(); +// a.add(variable); +// allPossibleArguments.add(a); +// } else { +// ArgumentsForSingleCall argumentsForSingleCall = allPossibleArguments.get(index); +// argumentsForSingleCall.add(variable); +// } +// index++; +// } +// } // the row view + return allPossibleArguments; } diff --git a/src/nl/jssl/autounit/inputs/IntegerInputsFactory.java b/src/nl/jssl/autounit/inputs/IntegerInputsFactory.java index 9b282bd..2014b1d 100644 --- a/src/nl/jssl/autounit/inputs/IntegerInputsFactory.java +++ b/src/nl/jssl/autounit/inputs/IntegerInputsFactory.java @@ -4,15 +4,13 @@ public class IntegerInputsFactory implements InputsFactory { public SingleTypeInputs getInputs(Class testTarget) { SingleTypeInputs inputs = new SingleTypeInputs(); - for (int i = 0; i < 1000; i++) { - inputs.add((int) ((2 * Math.random() - 2) * Integer.MAX_VALUE)); - } +// for (int i = 0; i < 2; i++) { +// inputs.add((int) ((2 * Math.random() - 2) * Integer.MAX_VALUE)); +// } inputs.add(Integer.MIN_VALUE); - inputs.add(-2); inputs.add(-1); inputs.add(0); inputs.add(1); - inputs.add(2); inputs.add(Integer.MAX_VALUE); return inputs; } diff --git a/src/nl/jssl/autounit/utils/Permuter.java b/src/nl/jssl/autounit/utils/Permuter.java new file mode 100644 index 0000000..03c65dc --- /dev/null +++ b/src/nl/jssl/autounit/utils/Permuter.java @@ -0,0 +1,72 @@ +package nl.jssl.autounit.utils; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public class Permuter { + + public static List permute(List> elements) { + if (elements.size() > 2) { + return permute(elements.get(0), elements.subList(1, elements.size() - 1)); + } else if (elements.size() == 2) { + return permutePairs(elements.get(0), elements.get(1)); + } else + throw new IllegalArgumentException("need at least 2"); + } + + private static List permute(List list, List> elements) { + if (elements.size() > 2) { + return permute(elements.get(0), elements.subList(1, elements.size() - 1)); + } else { + return permutePairs(elements.get(0), elements.get(1)); + } + } + + private static List permutePairs(List list1, List list2) { + List pairs = new ArrayList<>(); + for (Object element1 : list1) { + for (Object element2 : list2) { + pairs.add(new Tuple(element1, element2)); + } + } + return pairs; + } + + public static class Tuple implements Iterable { + public final Object element1; + public final Object element2; + + public Tuple(Object element1, Object element2) { + super(); + this.element1 = element1; + this.element2 = element2; + } + + @Override + public Iterator iterator() { + List list = new ArrayList<>(); + add(element1, list); + add(element2, list); + return list.iterator(); + } + + private void add(Object element, List list) { + if (!(element instanceof Tuple)) { + list.add(element); + } else { + Tuple pair = (Tuple) element; + add(pair.element1, list); + add(pair.element2, list); + } + } + @Override + public String toString() { + String string=""; + for (Object o:this){ + string+=o.toString()+","; + } + return string; + } + } +} diff --git a/testclasses/nl/jssl/autounit/testclasses/IntArguments.java b/testclasses/nl/jssl/autounit/testclasses/IntArguments.java index 7d27a35..522f65a 100644 --- a/testclasses/nl/jssl/autounit/testclasses/IntArguments.java +++ b/testclasses/nl/jssl/autounit/testclasses/IntArguments.java @@ -1,8 +1,8 @@ package nl.jssl.autounit.testclasses; public class IntArguments { - public String evenOrUneven(int number) { - if (number % 2 == 0) + public String evenOrUneven(int number, int number2) { + if ((number+number2)/2 % 2 == 0) return "even"; else return "uneven"; diff --git a/tst/nl/jssl/autounit/ManualTest.java b/tst/nl/jssl/autounit/ManualTest.java deleted file mode 100644 index 69c396b..0000000 --- a/tst/nl/jssl/autounit/ManualTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package nl.jssl.autounit; -import junit.framework.Assert; - -import nl.jssl.autounit.testclasses.IntArguments; - -import org.junit.Test; - -public class ManualTest { - @Test - public void testEven() { - Assert.assertEquals("even", new IntArguments().evenOrUneven(2)); - } - - @Test - public void testUneven() { - Assert.assertEquals("uneven", new IntArguments().evenOrUneven(3)); - } - -} diff --git a/tst/nl/jssl/autounit/PrimtiveTypeTests.java b/tst/nl/jssl/autounit/PrimtiveTypeTests.java index e0e89d0..acfb9bb 100644 --- a/tst/nl/jssl/autounit/PrimtiveTypeTests.java +++ b/tst/nl/jssl/autounit/PrimtiveTypeTests.java @@ -27,7 +27,7 @@ public class PrimtiveTypeTests { public void testIntegerArgument() { Map results = new AutoTester().record(IntArguments.class); Set keys = results.keySet(); - assertTrue(keys.contains("public java.lang.String evenOrUneven(int arg1)")); + assertTrue(keys.contains("public java.lang.String evenOrUneven(int arg1,int arg2)")); MethodCallResults mcr = results.values().iterator().next(); System.out.println(mcr.getCoverageResult().getLineCounter().getMissedCount() + " missed lines"); System.out.println(mcr.getReport()); diff --git a/tst/nl/jssl/autounit/util/PermuterTests.java b/tst/nl/jssl/autounit/util/PermuterTests.java new file mode 100644 index 0000000..2b68f43 --- /dev/null +++ b/tst/nl/jssl/autounit/util/PermuterTests.java @@ -0,0 +1,31 @@ +package nl.jssl.autounit.util; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + +import nl.jssl.autounit.utils.Permuter; +import nl.jssl.autounit.utils.Permuter.Tuple; + +import org.junit.Test; + +public class PermuterTests { + @Test + public void test(){ + List integers=new ArrayList<>(); + integers.add(1); + integers.add(2); + List strings=new ArrayList<>(); + strings.add("A"); + strings.add("B"); + List> outer=new ArrayList<>(); + outer.add(integers); + outer.add(strings); + List permuted = Permuter.permute(outer); + assertEquals("1,A,",permuted.get(0).toString()); + assertEquals("1,B,",permuted.get(1).toString()); + assertEquals("2,A,",permuted.get(2).toString()); + assertEquals("2,B,",permuted.get(3).toString()); + } +}