Skip to content

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

Open
@belous-dp

Description

@belous-dp

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.

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

    Issue actions