umock-c icon indicating copy to clipboard operation
umock-c copied to clipboard

Allow conditional function chaining on STRICT_EXPECTED_CALL

Open mattdurak opened this issue 2 years ago • 0 comments

Current code might do something like this:

static void setup(int* optional_value)
{
    if (optional_value != NULL)
    {
        STRICT_EXPECTED_CALL(foo(IGNORED_ARG))
            .CopyOutArgumentBuffer_result(optional_value, sizeof(optional_value));
    }
    else
    {
        STRICT_EXPECTED_CALL(foo(IGNORED_ARG));
    }
}

Would be nice to reduce that to something like:

static void setup(int* optional_value)
{
    STRICT_EXPECTED_CALL(foo(IGNORED_ARG))
        .If(optional_value != NULL)
        .CopyOutArgumentBuffer_result(optional_value, sizeof(optional_value));
    // perhaps needs .EndIf()
}

Alternatively, something like this could work:

static void setup(int* optional_value)
{
    HELPER_TO_GET_TYPE x = STRICT_EXPECTED_CALL(foo(IGNORED_ARG));
    if (optional_value != NULL)
    {
        x.CopyOutArgumentBuffer_result(optional_value, sizeof(optional_value));
    }
}

Or maybe:

static void setup(int* optional_value)
{
    STRICT_EXPECTED_CALL(foo(IGNORED_ARG)).SaveExpectation(x);
    if (optional_value != NULL)
    {
        x.CopyOutArgumentBuffer_result(optional_value, sizeof(optional_value));
    }
}

mattdurak avatar Aug 11 '23 17:08 mattdurak