diff --git a/.classpath b/.classpath
deleted file mode 100644
index de71593..0000000
--- a/.classpath
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3ae2f4d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+/build
+/nl.jssl.autounit.testclasses.BooleanArguments.xml
+/nl.jssl.autounit.testclasses.ByteArguments.xml
+/nl.jssl.autounit.testclasses.FloatArguments.xml
+/nl.jssl.autounit.testclasses.IntArguments.xml
+/nl.jssl.autounit.testclasses.SomeBean.xml
+/nl.jssl.autounit.testclasses.StringArguments.xml
+/bin
+/.settings
+/.gradle
+/.project
+/.classpath
diff --git a/.project b/.project
deleted file mode 100644
index 0d83f04..0000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- autounit
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 8634861..0000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,95 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
-org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
-org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
-org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
-org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
-org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
-org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
-org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.7
diff --git a/bin/.gitignore b/bin/.gitignore
deleted file mode 100644
index 998e0dd..0000000
--- a/bin/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/nl
diff --git a/bin/nl/jssl/autounit/AutoTester.class b/bin/nl/jssl/autounit/AutoTester.class
deleted file mode 100644
index 41ef729..0000000
Binary files a/bin/nl/jssl/autounit/AutoTester.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/Configuration.class b/bin/nl/jssl/autounit/Configuration.class
deleted file mode 100644
index bd5b49e..0000000
Binary files a/bin/nl/jssl/autounit/Configuration.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/CoverageAnalyser.class b/bin/nl/jssl/autounit/CoverageAnalyser.class
deleted file mode 100644
index 4f39d4b..0000000
Binary files a/bin/nl/jssl/autounit/CoverageAnalyser.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/ExecutionException.class b/bin/nl/jssl/autounit/ExecutionException.class
deleted file mode 100644
index 8169f8b..0000000
Binary files a/bin/nl/jssl/autounit/ExecutionException.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/InAndOutput.class b/bin/nl/jssl/autounit/InAndOutput.class
deleted file mode 100644
index 7c2abec..0000000
Binary files a/bin/nl/jssl/autounit/InAndOutput.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/InvocationResult.class b/bin/nl/jssl/autounit/InvocationResult.class
deleted file mode 100644
index a1b3320..0000000
Binary files a/bin/nl/jssl/autounit/InvocationResult.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/MethodCallResults.class b/bin/nl/jssl/autounit/MethodCallResults.class
deleted file mode 100644
index 1556c99..0000000
Binary files a/bin/nl/jssl/autounit/MethodCallResults.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/MethodcallExecutor.class b/bin/nl/jssl/autounit/MethodcallExecutor.class
deleted file mode 100644
index fa13f86..0000000
Binary files a/bin/nl/jssl/autounit/MethodcallExecutor.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/Player.class b/bin/nl/jssl/autounit/Player.class
deleted file mode 100644
index 221b5d9..0000000
Binary files a/bin/nl/jssl/autounit/Player.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/PrimtiveTypeTests.class b/bin/nl/jssl/autounit/PrimtiveTypeTests.class
deleted file mode 100644
index c9498b4..0000000
Binary files a/bin/nl/jssl/autounit/PrimtiveTypeTests.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/Recorder.class b/bin/nl/jssl/autounit/Recorder.class
deleted file mode 100644
index 30d934a..0000000
Binary files a/bin/nl/jssl/autounit/Recorder.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/ResultsWriter.class b/bin/nl/jssl/autounit/ResultsWriter.class
deleted file mode 100644
index ec4c1b7..0000000
Binary files a/bin/nl/jssl/autounit/ResultsWriter.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/StringTypeTests.class b/bin/nl/jssl/autounit/StringTypeTests.class
deleted file mode 100644
index 9ccc6e9..0000000
Binary files a/bin/nl/jssl/autounit/StringTypeTests.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/ArgumentsForSingleCall.class b/bin/nl/jssl/autounit/inputs/ArgumentsForSingleCall.class
deleted file mode 100644
index 8c5860d..0000000
Binary files a/bin/nl/jssl/autounit/inputs/ArgumentsForSingleCall.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/BooleanInputsFactory.class b/bin/nl/jssl/autounit/inputs/BooleanInputsFactory.class
deleted file mode 100644
index b1a861c..0000000
Binary files a/bin/nl/jssl/autounit/inputs/BooleanInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/ByteInputsFactory.class b/bin/nl/jssl/autounit/inputs/ByteInputsFactory.class
deleted file mode 100644
index bf3a109..0000000
Binary files a/bin/nl/jssl/autounit/inputs/ByteInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class b/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class
deleted file mode 100644
index 06c8dcb..0000000
Binary files a/bin/nl/jssl/autounit/inputs/CombinedInputSetFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/DoubleInputsFactory.class b/bin/nl/jssl/autounit/inputs/DoubleInputsFactory.class
deleted file mode 100644
index 6880abd..0000000
Binary files a/bin/nl/jssl/autounit/inputs/DoubleInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/FloatInputsFactory.class b/bin/nl/jssl/autounit/inputs/FloatInputsFactory.class
deleted file mode 100644
index a6d0f56..0000000
Binary files a/bin/nl/jssl/autounit/inputs/FloatInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/InputsFactory.class b/bin/nl/jssl/autounit/inputs/InputsFactory.class
deleted file mode 100644
index 8c47d97..0000000
Binary files a/bin/nl/jssl/autounit/inputs/InputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class b/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class
deleted file mode 100644
index f32dd9b..0000000
Binary files a/bin/nl/jssl/autounit/inputs/IntegerInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/LongInputsFactory.class b/bin/nl/jssl/autounit/inputs/LongInputsFactory.class
deleted file mode 100644
index 8391c4f..0000000
Binary files a/bin/nl/jssl/autounit/inputs/LongInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/MocksFactory.class b/bin/nl/jssl/autounit/inputs/MocksFactory.class
deleted file mode 100644
index 4ecdfe7..0000000
Binary files a/bin/nl/jssl/autounit/inputs/MocksFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/SingleTypeInputs.class b/bin/nl/jssl/autounit/inputs/SingleTypeInputs.class
deleted file mode 100644
index 338332e..0000000
Binary files a/bin/nl/jssl/autounit/inputs/SingleTypeInputs.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inputs/StringInputsFactory.class b/bin/nl/jssl/autounit/inputs/StringInputsFactory.class
deleted file mode 100644
index c8f14bb..0000000
Binary files a/bin/nl/jssl/autounit/inputs/StringInputsFactory.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/inspect/ConstantpoolReaderTest.class b/bin/nl/jssl/autounit/inspect/ConstantpoolReaderTest.class
deleted file mode 100644
index 9b269ae..0000000
Binary files a/bin/nl/jssl/autounit/inspect/ConstantpoolReaderTest.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/BooleanArguments.class b/bin/nl/jssl/autounit/testclasses/BooleanArguments.class
deleted file mode 100644
index 342052e..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/BooleanArguments.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/ByteArguments.class b/bin/nl/jssl/autounit/testclasses/ByteArguments.class
deleted file mode 100644
index af5a18b..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/ByteArguments.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/FloatArguments.class b/bin/nl/jssl/autounit/testclasses/FloatArguments.class
deleted file mode 100644
index 5a1afe3..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/FloatArguments.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/IntArguments.class b/bin/nl/jssl/autounit/testclasses/IntArguments.class
deleted file mode 100644
index d3b23ca..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/IntArguments.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/MethodSignatureMaker.class b/bin/nl/jssl/autounit/testclasses/MethodSignatureMaker.class
deleted file mode 100644
index af23300..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/MethodSignatureMaker.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/MyMethod.class b/bin/nl/jssl/autounit/testclasses/MyMethod.class
deleted file mode 100644
index 5759cf2..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/MyMethod.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/testclasses/StringArguments.class b/bin/nl/jssl/autounit/testclasses/StringArguments.class
deleted file mode 100644
index facc8ef..0000000
Binary files a/bin/nl/jssl/autounit/testclasses/StringArguments.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/utils/ArgumentsConverter.class b/bin/nl/jssl/autounit/utils/ArgumentsConverter.class
deleted file mode 100644
index 7db3401..0000000
Binary files a/bin/nl/jssl/autounit/utils/ArgumentsConverter.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/utils/ConstantpoolReader.class b/bin/nl/jssl/autounit/utils/ConstantpoolReader.class
deleted file mode 100644
index 1dc3161..0000000
Binary files a/bin/nl/jssl/autounit/utils/ConstantpoolReader.class and /dev/null differ
diff --git a/bin/nl/jssl/autounit/utils/SilentObjectCreator.class b/bin/nl/jssl/autounit/utils/SilentObjectCreator.class
deleted file mode 100644
index 82171f8..0000000
Binary files a/bin/nl/jssl/autounit/utils/SilentObjectCreator.class and /dev/null differ
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..65d6678
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'java'
+apply plugin: 'eclipse'
+
+repositories{
+ mavenCentral()
+}
+
+sourceCompatibility = "1.6"
+targetCompatibility = "1.6"
+
+sourceSets {
+ test {
+ java {
+ srcDir 'src/test/testclasses'
+ }
+ }
+}
+
+task wrapper{
+}
+
+dependencies{
+ compile 'javassist:javassist:3.12.1.GA'
+ compile 'com.thoughtworks.xstream:xstream:1.4.7'
+ compile 'org.mockito:mockito-all:1.9.5'
+ testCompile 'junit:junit:4.11'
+ testCompile 'org.jacoco:org.jacoco.core:0.7.1.201405082137'
+
+}
diff --git a/nl.jssl.autounit.testclasses.BooleanArguments.xml b/nl.jssl.autounit.testclasses.BooleanArguments.xml
deleted file mode 100644
index c6ed3ef..0000000
--- a/nl.jssl.autounit.testclasses.BooleanArguments.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
\ No newline at end of file
diff --git a/nl.jssl.autounit.testclasses.ByteArguments.xml b/nl.jssl.autounit.testclasses.ByteArguments.xml
deleted file mode 100644
index 8499087..0000000
--- a/nl.jssl.autounit.testclasses.ByteArguments.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
\ No newline at end of file
diff --git a/nl.jssl.autounit.testclasses.FloatArguments.xml b/nl.jssl.autounit.testclasses.FloatArguments.xml
deleted file mode 100644
index 979b8f4..0000000
--- a/nl.jssl.autounit.testclasses.FloatArguments.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
\ No newline at end of file
diff --git a/nl.jssl.autounit.testclasses.IntArguments.xml b/nl.jssl.autounit.testclasses.IntArguments.xml
deleted file mode 100644
index 85818e6..0000000
--- a/nl.jssl.autounit.testclasses.IntArguments.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
\ No newline at end of file
diff --git a/src/nl/jssl/autounit/AutoTester.java b/src/main/java/nl/jssl/autounit/AutoTester.java
similarity index 88%
rename from src/nl/jssl/autounit/AutoTester.java
rename to src/main/java/nl/jssl/autounit/AutoTester.java
index 42c1d28..c39b8bc 100644
--- a/src/nl/jssl/autounit/AutoTester.java
+++ b/src/main/java/nl/jssl/autounit/AutoTester.java
@@ -1,7 +1,6 @@
package nl.jssl.autounit;
import java.io.FileInputStream;
-import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Map;
@@ -14,7 +13,7 @@ import java.util.Map;
public class AutoTester {
ResultsWriter resultsWriter = new ResultsWriter();
- public Map record(Class instance) {
+ public Map record(Class> instance) {
Map results = new Recorder(instance).record();
resultsWriter.write(instance.getName(), results);
return results;
@@ -35,7 +34,7 @@ public class AutoTester {
Map results = (Map) objectInputStream.readObject();
objectInputStream.close();
return results;
- } catch (IOException | ClassNotFoundException e) {
+ } catch (Exception e) {
throw new RuntimeException(e);
}
}
diff --git a/src/nl/jssl/autounit/Configuration.java b/src/main/java/nl/jssl/autounit/Configuration.java
similarity index 90%
rename from src/nl/jssl/autounit/Configuration.java
rename to src/main/java/nl/jssl/autounit/Configuration.java
index d308a99..5bccde3 100644
--- a/src/nl/jssl/autounit/Configuration.java
+++ b/src/main/java/nl/jssl/autounit/Configuration.java
@@ -3,6 +3,10 @@ package nl.jssl.autounit;
import javassist.ClassPool;
import javassist.NotFoundException;
+/**
+ * TODO make configurable
+ *
+ */
public class Configuration {
public static ClassPool getClassPool() {
ClassPool classPool = new ClassPool();
diff --git a/src/nl/jssl/autounit/CoverageAnalyser.java b/src/main/java/nl/jssl/autounit/CoverageAnalyser.java
similarity index 99%
rename from src/nl/jssl/autounit/CoverageAnalyser.java
rename to src/main/java/nl/jssl/autounit/CoverageAnalyser.java
index 199eba3..debecd9 100644
--- a/src/nl/jssl/autounit/CoverageAnalyser.java
+++ b/src/main/java/nl/jssl/autounit/CoverageAnalyser.java
@@ -21,6 +21,7 @@ public class CoverageAnalyser {
private IRuntime runtime;
private RuntimeData data = new RuntimeData();
+ @SuppressWarnings("unchecked")
public T instrument(Class testTarget) {
try {
String targetName = testTarget.getName();
diff --git a/src/nl/jssl/autounit/ExecutionException.java b/src/main/java/nl/jssl/autounit/ExecutionException.java
similarity index 100%
rename from src/nl/jssl/autounit/ExecutionException.java
rename to src/main/java/nl/jssl/autounit/ExecutionException.java
diff --git a/src/nl/jssl/autounit/InAndOutput.java b/src/main/java/nl/jssl/autounit/InAndOutput.java
similarity index 100%
rename from src/nl/jssl/autounit/InAndOutput.java
rename to src/main/java/nl/jssl/autounit/InAndOutput.java
diff --git a/src/nl/jssl/autounit/MethodCallResults.java b/src/main/java/nl/jssl/autounit/MethodCallResults.java
similarity index 100%
rename from src/nl/jssl/autounit/MethodCallResults.java
rename to src/main/java/nl/jssl/autounit/MethodCallResults.java
diff --git a/src/nl/jssl/autounit/MethodcallExecutor.java b/src/main/java/nl/jssl/autounit/MethodcallExecutor.java
similarity index 75%
rename from src/nl/jssl/autounit/MethodcallExecutor.java
rename to src/main/java/nl/jssl/autounit/MethodcallExecutor.java
index 6af41b7..2d87e25 100644
--- a/src/nl/jssl/autounit/MethodcallExecutor.java
+++ b/src/main/java/nl/jssl/autounit/MethodcallExecutor.java
@@ -3,7 +3,6 @@ package nl.jssl.autounit;
import java.lang.reflect.Method;
import java.util.List;
-import nl.jssl.autounit.inputs.ArgumentsForSingleCall;
import nl.jssl.autounit.utils.Permuter.Tuple;
/**
@@ -39,16 +38,24 @@ public class MethodcallExecutor {
break;
}
}
- if (previous == null) {
- result.setCoverageResult(lastInvocationResult.coverage);
- } else {
- result.setCoverageResult(previous.coverage);
+ if (lastInvocationResult != null) {
+ if (previous == null) {
+ result.setCoverageResult(lastInvocationResult.coverage);
+ } else {
+ result.setCoverageResult(previous.coverage);
+ }
}
return result;
}
private InvocationResult analyseMethodCall(Method m, Tuple input) {
- return coverageAnalyser.analyse(instrumentedTestTarget, m, input.toArray());
+ Object[] argumentarray = input.toArray();
+ for (int i = 0; i < argumentarray.length; i++) {
+ if (argumentarray[i].toString().equals("autounit:[NULL]")) {
+ argumentarray[i] = null;
+ }
+ }
+ return coverageAnalyser.analyse(instrumentedTestTarget, m, argumentarray);
}
public MethodCallResults getResult() {
diff --git a/src/nl/jssl/autounit/Player.java b/src/main/java/nl/jssl/autounit/Player.java
similarity index 100%
rename from src/nl/jssl/autounit/Player.java
rename to src/main/java/nl/jssl/autounit/Player.java
diff --git a/src/nl/jssl/autounit/Recorder.java b/src/main/java/nl/jssl/autounit/Recorder.java
similarity index 89%
rename from src/nl/jssl/autounit/Recorder.java
rename to src/main/java/nl/jssl/autounit/Recorder.java
index 648317c..489bcc3 100644
--- a/src/nl/jssl/autounit/Recorder.java
+++ b/src/main/java/nl/jssl/autounit/Recorder.java
@@ -7,8 +7,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import nl.jssl.autounit.inputs.ArgumentsForSingleCall;
-import nl.jssl.autounit.inputs.CombinedInputSetFactory;
+import nl.jssl.autounit.inputs.MethodcallArgumentsFactory;
import nl.jssl.autounit.utils.Permuter.Tuple;
public class Recorder {
@@ -43,7 +42,7 @@ public class Recorder {
}
private MethodCallResults recordMethod(Method m) {
- List inputSet = new CombinedInputSetFactory().getInputs(testTarget, m);
+ List inputSet = new MethodcallArgumentsFactory().getInputs(testTarget, m);
MethodcallExecutor methodcallExecutor = new MethodcallExecutor(testTarget, m);
methodcallExecutor.execute(inputSet);
return methodcallExecutor.getResult();
diff --git a/src/nl/jssl/autounit/ResultsWriter.java b/src/main/java/nl/jssl/autounit/ResultsWriter.java
similarity index 74%
rename from src/nl/jssl/autounit/ResultsWriter.java
rename to src/main/java/nl/jssl/autounit/ResultsWriter.java
index eed21c5..93802c0 100644
--- a/src/nl/jssl/autounit/ResultsWriter.java
+++ b/src/main/java/nl/jssl/autounit/ResultsWriter.java
@@ -4,8 +4,8 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Map;
-import nl.jssl.autounit.inputs.ArgumentsForSingleCall;
-import nl.jssl.autounit.utils.ArgumentsConverter;
+import nl.jssl.autounit.utils.Permuter.Tuple;
+import nl.jssl.autounit.utils.XStreamArgumentsConverter;
import com.thoughtworks.xstream.XStream;
@@ -19,8 +19,9 @@ public class ResultsWriter {
private void setup() {
xstream.alias("case", InAndOutput.class);
xstream.alias("results", MethodCallResults.class);
- xstream.alias("args", ArgumentsForSingleCall.class);
- xstream.registerConverter(new ArgumentsConverter());
+ xstream.alias("args", Tuple.class);
+
+ xstream.registerConverter(new XStreamArgumentsConverter());
}
public void write(String classname, Map results) {
diff --git a/src/main/java/nl/jssl/autounit/inputs/ArgumentsForSingleParameter.java b/src/main/java/nl/jssl/autounit/inputs/ArgumentsForSingleParameter.java
new file mode 100644
index 0000000..16ce684
--- /dev/null
+++ b/src/main/java/nl/jssl/autounit/inputs/ArgumentsForSingleParameter.java
@@ -0,0 +1,10 @@
+package nl.jssl.autounit.inputs;
+
+import java.util.ArrayList;
+
+/**
+ * Meant to keep lists apart. Not to get confused. Might loose its necessity.
+ */
+@SuppressWarnings("serial")
+public class ArgumentsForSingleParameter extends ArrayList {
+}
diff --git a/src/main/java/nl/jssl/autounit/inputs/MethodcallArgumentsFactory.java b/src/main/java/nl/jssl/autounit/inputs/MethodcallArgumentsFactory.java
new file mode 100644
index 0000000..c98ea6c
--- /dev/null
+++ b/src/main/java/nl/jssl/autounit/inputs/MethodcallArgumentsFactory.java
@@ -0,0 +1,94 @@
+package nl.jssl.autounit.inputs;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import nl.jssl.autounit.inputs.objects.ObjectArgumentFactory;
+import nl.jssl.autounit.inputs.objects.StringArgumentFactory;
+import nl.jssl.autounit.inputs.primtives.ArgumentFactory;
+import nl.jssl.autounit.inputs.primtives.BooleanArgumentFactory;
+import nl.jssl.autounit.inputs.primtives.ByteArgumentFactory;
+import nl.jssl.autounit.inputs.primtives.DoubleArgumentFactory;
+import nl.jssl.autounit.inputs.primtives.FloatArgumentFactory;
+import nl.jssl.autounit.inputs.primtives.IntegerArgumentFactory;
+import nl.jssl.autounit.utils.Permuter;
+import nl.jssl.autounit.utils.Permuter.Tuple;
+
+public class MethodcallArgumentsFactory {
+ private final Map, ArgumentFactory>> primitivesFactories;
+
+ public MethodcallArgumentsFactory() {
+ primitivesFactories = new HashMap, ArgumentFactory>>();
+ populateFactories();
+ }
+
+ public List getInputs(Class> testTarget, Method m) {
+ return combine(getArgumentsForAllParameters(testTarget, m));
+ }
+
+ private List combine(List> inputSetsForAllArguments) {
+ int nrOfParameters = inputSetsForAllArguments.size();
+ if (nrOfParameters == 0) {
+ return Collections.emptyList();
+ } else if (nrOfParameters == 1) {
+ // simple case
+ return makeArgumentsForSingleParameterCall(inputSetsForAllArguments);
+ } else {
+ return Permuter.permute(inputSetsForAllArguments);
+ }
+ }
+
+ private List makeArgumentsForSingleParameterCall(List> generatedInputSetsForAllArguments) {
+ List allPossibleArguments = new ArrayList();
+
+ List> generatedInputs = generatedInputSetsForAllArguments.iterator().next();
+
+ for (Object variable : generatedInputs) {
+ Tuple argument = new Tuple(variable);
+ allPossibleArguments.add(argument);
+ }
+ return allPossibleArguments;
+ }
+
+ List> getArgumentsForAllParameters(Class> testTarget, Method m) {
+ List> singleInputSets = new ArrayList>();
+ for (Class> parametertype : m.getParameterTypes()) {
+ List> inputs = tryPrimitives(testTarget, parametertype);
+
+ if (inputs == null) {
+ inputs = new ObjectArgumentFactory().getObjectArgument(testTarget, parametertype);
+ }
+ if (inputs != null) {
+ singleInputSets.add(inputs);
+ }
+ }
+ return singleInputSets;
+ }
+
+ private ArgumentsForSingleParameter> tryPrimitives(Class> testTarget, Class> parametertype) {
+ ArgumentFactory> inputsFactory = primitivesFactories.get(parametertype);
+ if (inputsFactory != null) {
+ return inputsFactory.getInputs(testTarget);
+ } else {
+ return null;
+ }
+ }
+
+ private void populateFactories() {
+ primitivesFactories.put(int.class, new IntegerArgumentFactory());
+ primitivesFactories.put(Integer.class, new IntegerArgumentFactory());
+ primitivesFactories.put(double.class, new DoubleArgumentFactory());
+ primitivesFactories.put(Double.class, new DoubleArgumentFactory());
+ primitivesFactories.put(float.class, new FloatArgumentFactory());
+ primitivesFactories.put(Float.class, new FloatArgumentFactory());
+ primitivesFactories.put(byte.class, new ByteArgumentFactory());
+ primitivesFactories.put(Byte.class, new ByteArgumentFactory());
+ primitivesFactories.put(Boolean.class, new BooleanArgumentFactory());
+ primitivesFactories.put(boolean.class, new BooleanArgumentFactory());
+ primitivesFactories.put(String.class, new StringArgumentFactory());
+ }
+}
diff --git a/src/main/java/nl/jssl/autounit/inputs/objects/ObjectArgumentFactory.java b/src/main/java/nl/jssl/autounit/inputs/objects/ObjectArgumentFactory.java
new file mode 100644
index 0000000..4d688f5
--- /dev/null
+++ b/src/main/java/nl/jssl/autounit/inputs/objects/ObjectArgumentFactory.java
@@ -0,0 +1,55 @@
+package nl.jssl.autounit.inputs.objects;
+
+import java.lang.reflect.Method;
+
+import nl.jssl.autounit.inputs.ArgumentsForSingleParameter;
+import nl.jssl.autounit.inputs.MethodcallArgumentsFactory;
+
+import org.mockito.Mockito;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+/**
+ * Creates arguments if they are objects. Methods that return values are populated like in regular mocking.
+ *
+ */
+public class ObjectArgumentFactory {
+ private MethodcallArgumentsFactory argumentsFactory;
+
+ public ArgumentsForSingleParameter> getObjectArgument(Class> testTarget, Class> parametertype) {
+ ArgumentsForSingleParameter