Skip to content

Unneeded variable creation for final Enum state #2020

Open
@alisevych

Description

@alisevych

Description

There is used Enum variable duplication in the test generated by Symbolic engine.

To Reproduce

  1. Run the 'utbot' project in IntelliJ Idea 2022.3 Ultimate
  2. Install plugin built from unit-test-bot/rc2023.3 branch
  3. Use plugin to generate tests for enums/ClassWithEnum
  4. Open the generated test

Expected behavior

No unneeded variables are expected to be created.

Actual behavior

There is unneeded variable finalStatusEnum create after assertion.
It contains the same value as statusEnum used in the test.

Visual proofs (screenshots, logs, images)

    ///region SYMBOLIC EXECUTION: SUCCESSFUL EXECUTIONS for method changeMutableField(enums.ClassWithEnum.StatusEnum)

    /**
     * @utbot.classUnderTest {@link ClassWithEnum}
     * @utbot.methodUnderTest {@link ClassWithEnum#changeMutableField(StatusEnum)}
     * @utbot.executesCondition {@code (statusEnum == StatusEnum.READY): True}
     * @utbot.returnsFrom {@code return StatusEnum.READY.mutableInt;}
     */
    @Test
    public void testChangeMutableField_StatusEnumEqualsStatusEnumREADY() {
        ClassWithEnum classWithEnum = new ClassWithEnum();
        StatusEnum statusEnum = StatusEnum.READY;

        int actual = classWithEnum.changeMutableField(statusEnum);

        assertEquals(2, actual);

        StatusEnum finalStatusEnum = statusEnum;

    }

Environment

Windows 10 Pro
IntelliJ IDEA 2022.3.3 Ultimate
IntelliJ project, JDK 17

Additional context

There were workarounds for Enums already made, but it happens to be the issue in the engine.

Metadata

Metadata

Assignees

No one assigned

    Labels

    comp-symbolic-engineIssue is related to the symbolic execution enginectg-bugIssue is a bug

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions