diff options
Diffstat (limited to 'FreeRTOS-Plus/Test/CMock/test/system/test_interactions/all_plugins_coexist.yml')
-rw-r--r-- | FreeRTOS-Plus/Test/CMock/test/system/test_interactions/all_plugins_coexist.yml | 460 |
1 files changed, 460 insertions, 0 deletions
diff --git a/FreeRTOS-Plus/Test/CMock/test/system/test_interactions/all_plugins_coexist.yml b/FreeRTOS-Plus/Test/CMock/test/system/test_interactions/all_plugins_coexist.yml new file mode 100644 index 000000000..f1c4e38a4 --- /dev/null +++ b/FreeRTOS-Plus/Test/CMock/test/system/test_interactions/all_plugins_coexist.yml @@ -0,0 +1,460 @@ +--- +:cmock: + :enforce_strict_ordering: 1 + :plugins: + - :array + - :cexception + - :ignore + - :callback + - :return_thru_ptr + - :ignore_arg + - :expect_any_args + :callback_after_arg_check: true + :callback_include_count: false + :treat_externs: :include + :treat_inlines: :include + +:systest: + :types: | + typedef struct _POINT_T { + int x; + int y; + } POINT_T; + + :mockable: | + #include "CException.h" + extern void foo(POINT_T* a); + POINT_T* bar(void); + void fooa(POINT_T a[]); + void foos(const char * a); + const char * bars(void); + void no_pointers(int a, const char* b); + int mixed(int a, int* b, int c); + void no_args(void); + + :source: + :header: | + #include "CException.h" + void function_a(void); + void function_b(void); + void function_c(void); + int function_d(void); + void function_e(void); + int function_f(void); + + :code: | + void function_a(void) + { + foo(bar()); + } + + void function_b(void) { + fooa(bar()); + } + + void function_c(void) { + CEXCEPTION_T e; + Try { + foos(bars()); + } Catch(e) { foos("err"); } + } + + int function_d(void) { + int test_list[] = { 1, 2, 3, 4, 5 }; + no_pointers(1, "silly"); + return mixed(6, test_list, 7); + } + + void function_e(void) { + foos("Hello"); + foos("Tuna"); + foos("Oranges"); + } + + int function_f(void) { + int a = 1; + int b = 2; + int c; + POINT_T* pt = bar(); + c = pt->x; + c = mixed(a, &b, c); + return b + c; + } + + :tests: + :common: | + #include "CException.h" + void setUp(void) {} + void tearDown(void) {} + void my_foo_callback(POINT_T* a) { TEST_ASSERT_EQUAL_INT(2, a->x); } + int my_mixed_callback(int a, int* b, int c) { return a + *b + c; } + + :units: + - :pass: TRUE + :should: 'handle the situation where we pass nulls to pointers' + :code: | + test() + { + bar_ExpectAndReturn(NULL); + foo_Expect(NULL); + + function_a(); + } + + - :pass: FALSE + :should: 'handle the situation where we expected nulls to pointers but did not get that' + :code: | + test() + { + POINT_T pt = {1, 2}; + bar_ExpectAndReturn(&pt); + foo_Expect(NULL); + + function_a(); + } + + - :pass: FALSE + :should: 'handle the situation where we did not expect nulls to pointers but got null' + :code: | + test() + { + POINT_T ex = {1, 2}; + bar_ExpectAndReturn(NULL); + foo_Expect(&ex); + + function_a(); + } + + - :pass: FALSE + :should: 'handle the situation where we pass single object with expect and it is wrong' + :code: | + test() + { + POINT_T pt = {1, 2}; + POINT_T ex = {1, 3}; + bar_ExpectAndReturn(&pt); + foo_Expect(&ex); + + function_a(); + } + + - :pass: TRUE + :should: 'handle the situation where we pass single object with expect and use array handler' + :code: | + test() + { + POINT_T pt = {1, 2}; + POINT_T ex = {1, 2}; + bar_ExpectAndReturn(&pt); + foo_ExpectWithArray(&ex, 1); + + function_a(); + } + + - :pass: FALSE + :should: 'handle the situation where we pass single object with expect and use array handler and it is wrong' + :code: | + test() + { + POINT_T pt = {1, 2}; + POINT_T ex = {1, 3}; + bar_ExpectAndReturn(&pt); + foo_ExpectWithArray(&ex, 1); + + function_a(); + } + + - :pass: TRUE + :should: 'handle the situation where we pass multiple objects with expect and use array handler' + :code: | + test() + { + POINT_T pt[] = {{1, 2}, {3, 4}, {5, 6}}; + POINT_T ex[] = {{1, 2}, {3, 4}, {5, 6}}; + bar_ExpectAndReturn(pt); + foo_ExpectWithArray(ex, 3); + + function_a(); + } + + - :pass: FALSE + :should: 'handle the situation where we pass multiple objects with expect and use array handler and it is wrong at end' + :code: | + test() + { + POINT_T pt[] = {{1, 2}, {3, 4}, {5, 6}}; + POINT_T ex[] = {{1, 2}, {3, 4}, {5, 9}}; + bar_ExpectAndReturn(pt); + foo_ExpectWithArray(ex, 3); + + function_a(); + } + + - :pass: TRUE + :should: 'handle the situation where we pass single array element with expect' + :code: | + test() + { + POINT_T pt = {1, 2}; + POINT_T ex = {1, 2}; + bar_ExpectAndReturn(&pt); + fooa_Expect(&ex); + + function_b(); + } + + - :pass: TRUE + :should: 'handle standard c string as null terminated and not do crappy memory compares of a byte, passing' + :code: | + test() + { + const char* retval = "This is a\0 silly string"; + bars_ExpectAndReturn((char*)retval); + foos_Expect("This is a\0 wacky string"); + + function_c(); + } + + - :pass: FALSE + :should: 'handle standard c string as null terminated and not do crappy memory compares of a byte, finding failures' + :code: | + test() + { + const char* retval = "This is a silly string"; + bars_ExpectAndReturn((char*)retval); + foos_Expect("This is a wacky string"); + + function_c(); + } + + - :pass: TRUE + :should: 'handle creating array expects when we have mixed arguments for single object' + :code: | + test() + { + int expect_list[] = { 1, 9 }; + no_pointers_Expect(1, "silly"); + mixed_ExpectAndReturn(6, expect_list, 7, 13); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: FALSE + :should: 'handle creating array expects when we have mixed arguments and handle failures for single object' + :code: | + test() + { + int expect_list[] = { 9, 1 }; + no_pointers_Expect(1, "silly"); + mixed_ExpectAndReturn(6, expect_list, 7, 13); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: TRUE + :should: 'handle creating array expects when we have mixed arguments for multiple objects' + :code: | + test() + { + int expect_list[] = { 1, 2, 3, 4, 6 }; + no_pointers_Expect(1, "silly"); + mixed_ExpectWithArrayAndReturn(6, expect_list, 4, 7, 13); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: FALSE + :should: 'handle creating array expects when we have mixed arguments and handle failures for multiple objects' + :code: | + test() + { + int expect_list[] = { 1, 2, 3, 4, 6 }; + no_pointers_Expect(1, "silly"); + mixed_ExpectWithArrayAndReturn(6, expect_list, 5, 7, 13); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: TRUE + :should: 'handle an exception being caught' + :code: | + test() + { + const char* retval = "This is a\0 silly string"; + bars_ExpectAndReturn((char*)retval); + foos_ExpectAndThrow("This is a\0 wacky string", 55); + foos_Expect("err"); + + function_c(); + } + + - :pass: FALSE + :should: 'handle an exception being caught but still catch following errors' + :code: | + test() + { + const char* retval = "This is a\0 silly string"; + bars_ExpectAndReturn((char*)retval); + foos_ExpectAndThrow("This is a\0 wacky string", 55); + foos_Expect("wrong error"); + + function_c(); + } + + - :pass: FALSE + :should: 'fail strict ordering problems even though we would otherwise have passed' + :code: | + test() + { + int expect_list[] = { 1, 2, 3, 4, 6 }; + mixed_ExpectWithArrayAndReturn(6, expect_list, 4, 7, 13); + no_pointers_Expect(1, "silly"); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: TRUE + :should: 'that we can properly ignore last function but the other will work properly' + :code: | + test() + { + int expect_list[] = { 1, 2, 3, 4, 6 }; + mixed_ExpectWithArrayAndReturn(6, expect_list, 4, 7, 13); + no_pointers_Ignore(); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: TRUE + :should: 'that we can properly ignore first function but the other will work properly' + :code: | + test() + { + mixed_IgnoreAndReturn(13); + no_pointers_Expect(1, "silly"); + + TEST_ASSERT_EQUAL(13, function_d()); + } + + - :pass: TRUE + :should: 'that we just have to ignore a call once because we are not counting calls' + :code: | + test() + { + foos_Ignore(); + + function_e(); + } + + - :pass: TRUE + :should: 'that we can use a callback and an expect' + :code: | + test() + { + POINT_T pt1 = {2, 3}; + POINT_T pt2 = {2, 3}; + bar_ExpectAndReturn(&pt1); + foo_Expect(&pt2); + foo_StubWithCallback((CMOCK_foo_CALLBACK)my_foo_callback); + + function_a(); + } + + - :pass: FALSE + :should: 'that we can fail even when using a callback if we want to expect call but did not and we are checking that' + :code: | + test() + { + POINT_T pt = {2, 3}; + bar_ExpectAndReturn(&pt); + foo_StubWithCallback((CMOCK_foo_CALLBACK)my_foo_callback); + + function_a(); + } + + - :pass: FALSE + :should: 'that we can fail even when using a callback if args are wrong and we are checking those' + :code: | + test() + { + POINT_T pt1 = {2, 3}; + POINT_T pt2 = {1, 3}; + bar_ExpectAndReturn(&pt1); + foo_Expect(&pt2); + foo_StubWithCallback((CMOCK_foo_CALLBACK)my_foo_callback); + + function_a(); + } + + - :pass: FALSE + :should: 'that we can fail from the callback itself' + :code: | + test() + { + POINT_T pt = {3, 3}; + bar_ExpectAndReturn(&pt); + foo_Expect(&pt); + foo_StubWithCallback((CMOCK_foo_CALLBACK)my_foo_callback); + + function_a(); + } + + - :pass: TRUE + :should: 'that a callback return value overrides the one from ExpectAndReturn' + :code: | + test() + { + int b = 2; + POINT_T pt1 = {3, 4}; + bar_ExpectAndReturn(&pt1); + mixed_StubWithCallback((CMOCK_mixed_CALLBACK)my_mixed_callback); + mixed_ExpectAndReturn(1,&b,3,100); + + TEST_ASSERT_EQUAL(8, function_f()); + } + + - :pass: TRUE + :should: 'that a callback return value overrides the one from ExpectAndReturn AND ReturnThruPtr still works' + :code: | + test() + { + int b_in = 2; + int b_out = 3; + POINT_T pt1 = {3, 4}; + bar_ExpectAndReturn(&pt1); + mixed_StubWithCallback((CMOCK_mixed_CALLBACK)my_mixed_callback); + mixed_ExpectAndReturn(1,&b_in,3,100); + mixed_ReturnThruPtr_b(&b_out); + + TEST_ASSERT_EQUAL(9, function_f()); // (a=1, bin=2, c=pt.x=3, bout=3, sum=9) + } + + - :pass: TRUE + :should: 'that a callback return value overrides the one from ExpectAnyArgs' + :code: | + test() + { + POINT_T pt1 = {5, 4}; + bar_ExpectAndReturn(&pt1); + mixed_StubWithCallback((CMOCK_mixed_CALLBACK)my_mixed_callback); + mixed_ExpectAnyArgsAndReturn(100); + + TEST_ASSERT_EQUAL(10, function_f()); // (a=1, bin=2, c=pt.x=5, bout=2, sum=10) + } + + - :pass: TRUE + :should: 'that a callback return value overrides the one from ExpectAnyArgs AND ReturnThruPtr still works' + :code: | + test() + { + int b_out = 3; + POINT_T pt1 = {5, 4}; + bar_ExpectAndReturn(&pt1); + mixed_StubWithCallback((CMOCK_mixed_CALLBACK)my_mixed_callback); + mixed_ExpectAnyArgsAndReturn(100); + mixed_ReturnThruPtr_b(&b_out); + + TEST_ASSERT_EQUAL(11, function_f()); // (a=1, bin=2, c=pt.x=5, bout=3, sum=11) + } + +... |