Skip to content

getArrayLength on Object in ClassWithEnumTest parametrized test generation #623

Closed
@sofurihafe

Description

@sofurihafe

Description

getArrayLength cannot get array length treating array as a non-array object.

To Reproduce

  1. Enable parametrized test generation for samples,
  2. Run ClassWithEnumTest.

Actual behavior

Generated not parametrized test looks like this:

public class ClassWithEnumGeneratedTest {
    ///region Test suites for executable org.utbot.examples.enums.ClassWithEnum$StatusEnum.values
    
    ///region
    
    @Test
    public void testValues1() throws ClassNotFoundException  {
        java.lang.Object[] actual = ClassWithEnum.StatusEnum.values();
        
        java.lang.Object[] expected = createArray("org.utbot.examples.enums.ClassWithEnum$StatusEnum", 2);
        ClassWithEnum.StatusEnum statusEnum = ClassWithEnum.StatusEnum.READY;
        expected[0] = ((Object) statusEnum);
        ClassWithEnum.StatusEnum statusEnum1 = ClassWithEnum.StatusEnum.ERROR;
        expected[1] = ((Object) statusEnum1);
        
        int expectedSize = expected.length;
        assertEquals(expectedSize, actual.length);
        assertTrue(deepEquals(expected, actual));
    }
    ///endregion
    
    ///endregion
    
    ///region Data providers and utils methods
    
    <...>

    ///endregion
}

Generated parametrized test looks like this:

public class ClassWithEnumGeneratedTest {
    ///region Test suites for executable org.utbot.examples.enums.ClassWithEnum$StatusEnum.values
    
    ///region Parameterized test for method values()
    
    @ParameterizedTest
    @MethodSource("provideDataForValues")
    public void parameterizedTestsForValues(Object expectedResult) {
        java.lang.Object[] actual = ClassWithEnum.StatusEnum.values();
        
        if (expectedResult == null) {
            assertNull(actual);
        } else {
            
            int expectedResultSize = getArrayLength(expectedResult);
            assertEquals(expectedResultSize, actual.length);
            assertTrue(deepEquals(expectedResult, actual));
        }
    }
    ///endregion
    
    ///endregion
    
    ///region Data providers and utils methods
    
    public static java.util.ArrayList<org.junit.jupiter.params.provider.Arguments> provideDataForValues() throws ClassNotFoundException  {
        java.util.ArrayList<org.junit.jupiter.params.provider.Arguments> argList = new java.util.ArrayList<org.junit.jupiter.params.provider.Arguments>();
        
        {
            java.lang.Object[] statusEnumArray = createArray("org.utbot.examples.enums.ClassWithEnum$StatusEnum", 2);
            ClassWithEnum.StatusEnum statusEnum = ClassWithEnum.StatusEnum.READY;
            statusEnumArray[0] = ((Object) statusEnum);
            ClassWithEnum.StatusEnum statusEnum1 = ClassWithEnum.StatusEnum.ERROR;
            statusEnumArray[1] = ((Object) statusEnum1);
            
            argList.add(org.junit.jupiter.params.provider.Arguments.arguments(statusEnumArray));
        }
        
        return argList;
    }
    
    private static int getArrayLength(Object arr) {
        return java.lang.reflect.Array.getLength(arr);
    }

    <...>

    ///endregion
}

Visual proofs (screenshots, logs, images)

image

Metadata

Metadata

Assignees

Labels

comp-codegenIssue is related to code generatorctg-bugIssue is a bug

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions