Implement test which tries function with diferent params and expected results
A six-fold nesting is not a way to go. Enumerating all possible combinations can be achieved in two loops, no matter how many arrays are contributing:

bool next_combination(int * combination, int * limits, int size) {
    for (int index = 0; index &lt; size; ++index) {
        combination[index] += 1;
        if (combination[index] &lt; limits[index]) {
            return true;
        }
        combination[index] = 0;
    }
    return false;
}

...

int limits[] = { countof(EXPIRY_TEST), countof(STRIKE_TEST), /*etc*/ };
int combination[countof(limits)] = 0;

do {
    result = function(EXPIRY_TEST[combination[0], STRIKE_TEST[combination[1], /*etc*/);
while (next_combination(combination, limits, countof(combination)));

Size of array is better be computed in a type-agnostic way:

#define countof(name) (sizeof(name) / sizeof(name[0]))

The expected results are totally disconnected from the argument sets. It would be very hard to make additional cases.
You must report which test case failed.