25: Add logic for handling float in function calls

This commit is contained in:
Marvin Kaiser
2020-03-04 19:29:24 +01:00
parent 0316a7d4bf
commit 6eb61f905f
6 changed files with 295 additions and 111 deletions

View File

@@ -12,6 +12,16 @@ int argumentTest(char* name, int expected, int result) {
}
}
int argumentTest_f(char* name, int expected, int result) {
if (expected == result) {
succ_f(name, expected, result);
return 0;
} else {
err_f(name, expected, result);
return 1;
}
}
int runFunctionCallTests () {
printf("\nFunction Call Tests \n");
// Checks that parameters are correctly passed from gcc to functions
@@ -36,4 +46,27 @@ int runFunctionCallTests () {
argumentTest("get8(...args)", 8, get8());
argumentTest("get9(...args)", 9, get9());
argumentTest("get10(...args)", 10, get10());
printf("\nFunction Call Tests With Floats \n");
argumentTest_f("farg1(...args)", 1.0, farg1(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg2(...args)", 2.0, farg2(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg3(...args)", 3.0, farg3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg4(...args)", 4.0, farg4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg5(...args)", 5.0, farg5(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg6(...args)", 6.0, farg6(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg7(...args)", 7.0, farg7(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg8(...args)", 8.0, farg8(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg9(...args)", 9.0, farg9(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
argumentTest_f("farg10(...args)", 10.0, farg10(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0));
// Checks that parameters are correctly passed from klang to functions
argumentTest_f("fget1(...args)", 1.0, fget1());
argumentTest_f("fget2(...args)", 2.0, fget2());
argumentTest_f("fget3(...args)", 3.0, fget3());
argumentTest_f("fget4(...args)", 4.0, fget4());
argumentTest_f("fget5(...args)", 5.0, fget5());
argumentTest_f("fget6(...args)", 6.0, fget6());
argumentTest_f("fget7(...args)", 7.0, fget7());
argumentTest_f("fget8(...args)", 8.0, fget8());
argumentTest_f("fget9(...args)", 9.0, fget9());
argumentTest_f("fget10(...args)", 10.0, fget10());
}