From a14b5f57d5a17f88328d21e98ef47cde59f4fdfd Mon Sep 17 00:00:00 2001 From: Matthew Hague <matthew.hague@rhul.ac.uk> Date: Wed, 11 Nov 2020 13:28:20 +0000 Subject: [PATCH] Support passing null parameters to code tester call --- .../uk/ac/rhul/cs/javatester/CodeTester.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/uk/ac/rhul/cs/javatester/CodeTester.java b/src/main/java/uk/ac/rhul/cs/javatester/CodeTester.java index 53f9b16..d6968a9 100644 --- a/src/main/java/uk/ac/rhul/cs/javatester/CodeTester.java +++ b/src/main/java/uk/ac/rhul/cs/javatester/CodeTester.java @@ -255,9 +255,11 @@ public class CodeTester { String className, Object... params) throws BaseTester.FailedTestException { - Class<?>[] parameterTypes - = Stream.of(params).map(p -> p.getClass()) - .toArray(Class<?>[]::new); + + Class<?>[] parameterTypes = Stream.of(params).map( + p -> p != null ? p.getClass() : NullType.class + ).toArray(Class<?>[]::new); + try { Class<?> klass = loadClass(className); Constructor<?> constructor @@ -637,7 +639,10 @@ public class CodeTester { * dependencies.. */ private boolean isAssignable(Class<?> k1, Class<?> k2) { - return boxClass(k1).isAssignableFrom(boxClass(k2)); + if (k2 == NullType.class) + return true; + else + return boxClass(k1).isAssignableFrom(boxClass(k2)); } /** @@ -994,4 +999,9 @@ public class CodeTester { else return logIdealizer.apply(output); } + + /** + * A class to represent a null argument which can be any object type + */ + private class NullType { } } -- GitLab