Skip to content

"pointer to pointer to function" weird behaviour [C standard test] #331

@belous-dp

Description

@belous-dp
Collaborator

Description
Genereted regression test for function with pointer to pointer to function as a parameter fails.

To Reproduce
Steps to reproduce the behavior:

  1. Open the 'c-example/lib/pointers/function_pointers.c" file
  2. Generate tests for the 'pointerToPointer' function:
char pointerToPointer(int (**f)(int), char x) {
    if (f[0](5) == 4) {
        return x;
    } else {
        return 'z';
    }
}

Generated tests

TEST(regression, pointerToPointer_test_1)
{
    // Construct input
    pointerToPointer_f_arg f[10];
    for (int i = 0; i < 10; i ++) {
        f[i] = *_pointerToPointer_f_stub;
    }
    char x = 'c';



    // Expected output
    char expected = 'z';

    // Trigger the function
    char actual = pointerToPointer(f, x);

    // Check results
    EXPECT_EQ(expected, actual);
}

TEST(regression, pointerToPointer_test_2)
{
    // Construct input
    pointerToPointer_f_arg f[10];
    for (int i = 0; i < 10; i ++) {
        f[i] = *_pointerToPointer_f_stub;
    }
    char x = 'b';



    // Expected output
    char expected = 'b';

    // Trigger the function
    char actual = pointerToPointer(f, x);

    // Check results
    EXPECT_EQ(expected, actual);
}

The second regression test fails:

Expected equality of these values:
  expected
    Which is: 'b' (98, 0x62)
  actual
    Which is: 'z' (122, 0x7A)

Comments
Also creating array of 10 identical items and accessing only first of them looks strange and superfluously.

Environment
UTBotCpp version 2022.7.0.

Activity

moved this to Todo in UTBot C/C++on Jul 19, 2022
tyuldashev

tyuldashev commented on Sep 6, 2022

@tyuldashev
Collaborator

Another sample is array-sort.c. UTBot generates number of tests, but two from regression suite fail during execution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @tyuldashev@belous-dp

        Issue actions

          "pointer to pointer to function" weird behaviour [C standard test] · Issue #331 · UnitTestBot/UTBotCpp