Description
There are problems with class casting in parametrized test generation.
Seems like the problem is connected with general execution selection.
Suggestion is to generate separated tests in cases like these.
To Reproduce
- Enable parametrized test generation for samples,
- Run
InstanceOfExampleTest.
Actual behavior
testObjectInstanceOfArray
Problem may be with AssertArrayEquals trying to cast boolean array to integer array.
Generated parametrized test looks like this:
public class InstanceOfExampleGeneratedTest {
///region Test suites for executable org.utbot.examples.casts.InstanceOfExample.objectInstanceOfArray
///region Parameterized test for method objectInstanceOfArray(java.lang.Object)
@ParameterizedTest
@MethodSource("provideDataForObjectInstanceOfArray")
public void parameterizedTestsForObjectInstanceOfArray(InstanceOfExample instanceOfExample, Object object, Object expectedResult) {
Object actual = instanceOfExample.objectInstanceOfArray(object);
if (expectedResult == null) {
assertNull(actual);
} else {
int expectedResultSize = getArrayLength(expectedResult);
assertEquals(expectedResultSize, getArrayLength(actual));
assertArrayEquals(((int[]) expectedResult), ((int[]) actual));
}
}
///endregion
///endregion
///region Data providers and utils methods
public static java.util.ArrayList<org.junit.jupiter.params.provider.Arguments> provideDataForObjectInstanceOfArray() {
java.util.ArrayList<org.junit.jupiter.params.provider.Arguments> argList = new java.util.ArrayList<org.junit.jupiter.params.provider.Arguments>();
<...>
{
InstanceOfExample instanceOfExample = new InstanceOfExample();
boolean[] booleanArray = {false};
argList.add(org.junit.jupiter.params.provider.Arguments.arguments(instanceOfExample, booleanArray, booleanArray));
}
<...>
return argList;
}
private static int getArrayLength(Object arr) {
return java.lang.reflect.Array.getLength(arr);
}
///endregion
}
testInstanceOfObjectArray
Problem may be with AssertArrayEquals trying to cast single array to triple array.
Generated parametrized test looks like this:
public class InstanceOfExampleGeneratedTest {
///region Test suites for executable org.utbot.examples.casts.InstanceOfExample.instanceOfObjectArray
///region Parameterized test for method instanceOfObjectArray(java.lang.Object[])
@ParameterizedTest
@MethodSource("provideDataForInstanceOfObjectArray")
public void parameterizedTestsForInstanceOfObjectArray(InstanceOfExample instanceOfExample, java.lang.Object[] objectArray, java.lang.Object[] expectedResult) {
java.lang.Object[] actual = instanceOfExample.instanceOfObjectArray(objectArray);
if (expectedResult == null) {
assertNull(actual);
} else {
int expectedResultSize = expectedResult.length;
assertEquals(expectedResultSize, actual.length);
assertArrayEquals(((int[][][]) expectedResult), ((int[][][]) actual));
}
}
///endregion
///endregion
///region Data providers and utils methods
public static java.util.ArrayList<org.junit.jupiter.params.provider.Arguments> provideDataForInstanceOfObjectArray() {
java.util.ArrayList<org.junit.jupiter.params.provider.Arguments> argList = new java.util.ArrayList<org.junit.jupiter.params.provider.Arguments>();
<...>
{
InstanceOfExample instanceOfExample = new InstanceOfExample();
java.lang.Object[] objectArray = {null, null};
argList.add(org.junit.jupiter.params.provider.Arguments.arguments(instanceOfExample, objectArray, objectArray));
}
return argList;
}
///endregion
}
Visual proofs (screenshots, logs, images)
testObjectInstanceOfArray
Same as the following
testInstanceOfObjectArray

Description
There are problems with class casting in parametrized test generation.
Seems like the problem is connected with general execution selection.
Suggestion is to generate separated tests in cases like these.
To Reproduce
InstanceOfExampleTest.Actual behavior
testObjectInstanceOfArrayProblem may be with
AssertArrayEqualstrying to cast boolean array to integer array.Generated
parametrizedtest looks like this:testInstanceOfObjectArrayProblem may be with AssertArrayEquals trying to cast single array to triple array.
Generated
parametrizedtest looks like this:Visual proofs (screenshots, logs, images)
testObjectInstanceOfArraySame as the following
testInstanceOfObjectArray