You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
6.3 KiB
238 lines
6.3 KiB
---
|
|
:cmock:
|
|
:plugins:
|
|
- 'expect_any_args'
|
|
|
|
:systest:
|
|
:types: |
|
|
|
|
:mockable: |
|
|
int foo(int a);
|
|
void bar(int b);
|
|
|
|
:source:
|
|
:header: |
|
|
int function(int a, int b, int c);
|
|
void func_b(int a);
|
|
:code: |
|
|
int function(int a, int b, int c)
|
|
{
|
|
bar(b);
|
|
return foo(a) + foo(b) + foo(c);
|
|
}
|
|
void func_b(int a)
|
|
{
|
|
bar(a);
|
|
}
|
|
|
|
:tests:
|
|
:common: |
|
|
void setUp(void) {}
|
|
void tearDown(void) {}
|
|
:units:
|
|
- :pass: TRUE
|
|
:should: 'successfully exercise simple ExpectAndReturn mock calls'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_Expect(2);
|
|
foo_ExpectAndReturn(1, 10);
|
|
foo_ExpectAndReturn(2, 20);
|
|
foo_ExpectAndReturn(3, 30);
|
|
TEST_ASSERT_EQUAL(60, function(1, 2, 3));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'ignore foo() call details'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_Expect(4);
|
|
foo_ExpectAnyArgsAndReturn(10);
|
|
foo_ExpectAnyArgsAndReturn(40);
|
|
foo_ExpectAnyArgsAndReturn(80);
|
|
TEST_ASSERT_EQUAL(130, function(3, 4, 3));
|
|
}
|
|
|
|
- :pass: FALSE
|
|
:should: 'ignore foo() call details and notice if we called foo() more times than expected'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_Expect(4);
|
|
foo_ExpectAnyArgsAndReturn(20);
|
|
foo_ExpectAnyArgsAndReturn(30);
|
|
TEST_ASSERT_EQUAL(50, function(3, 4, 9));
|
|
}
|
|
|
|
- :pass: FALSE
|
|
:should: 'ignore foo() call details and notice if we called foo() fewer times than expected'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_Expect(4);
|
|
foo_ExpectAnyArgsAndReturn(20);
|
|
foo_ExpectAnyArgsAndReturn(10);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAnyArgsAndReturn(60);
|
|
TEST_ASSERT_EQUAL(70, function(3, 4, 9));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'ignore bar() and foo() call details'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
TEST_ASSERT_EQUAL(150, function(0, 0, 0));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'be able to handle an expect after ignore calls since we are ignoring args only'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAndReturn(3, 50);
|
|
TEST_ASSERT_EQUAL(150, function(1, 2, 3));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'be able to handle an ignore after an expect call since we are ignoring args only'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAndReturn(1, 50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
TEST_ASSERT_EQUAL(150, function(1, 2, 3));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'be able to handle an ignore within expect calls since we are ignoring args only'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAndReturn(1, 50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAndReturn(3, 50);
|
|
TEST_ASSERT_EQUAL(150, function(1, 2, 3));
|
|
}
|
|
|
|
- :pass: FALSE
|
|
:should: 'be able to detect problems with an expect even when using ignores'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAndReturn(1, 50);
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAndReturn(4, 50);
|
|
TEST_ASSERT_EQUAL(150, function(1, 2, 3));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'be able to handle a lone ExpectAnyArg call'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
func_b(1);
|
|
}
|
|
|
|
- :pass: FALSE
|
|
:should: 'be able to handle a lone ExpectAnyArg call that does not get called'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
}
|
|
|
|
- :pass: FALSE
|
|
:should: 'be able to handle a missing ExpectAnyArg call'
|
|
:code: |
|
|
test()
|
|
{
|
|
func_b(1);
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'ignore foo() calls over multiple mock calls'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAnyArgsAndReturn(50);
|
|
foo_ExpectAnyArgsAndReturn(60);
|
|
foo_ExpectAnyArgsAndReturn(70);
|
|
TEST_ASSERT_EQUAL(180, function(0, 0, 0));
|
|
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAnyArgsAndReturn(30);
|
|
foo_ExpectAnyArgsAndReturn(80);
|
|
foo_ExpectAnyArgsAndReturn(10);
|
|
TEST_ASSERT_EQUAL(120, function(0, 0, 0));
|
|
|
|
bar_ExpectAnyArgs();
|
|
foo_ExpectAnyArgsAndReturn(70);
|
|
foo_ExpectAnyArgsAndReturn(20);
|
|
foo_ExpectAnyArgsAndReturn(20);
|
|
TEST_ASSERT_EQUAL(110, function(0, 0, 0));
|
|
}
|
|
|
|
- :pass: TRUE
|
|
:should: 'have multiple cycles of expects still pass when this plugin enabled'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_Expect(2);
|
|
foo_ExpectAndReturn(1, 50);
|
|
foo_ExpectAndReturn(2, 60);
|
|
foo_ExpectAndReturn(3, 70);
|
|
TEST_ASSERT_EQUAL(180, function(1, 2, 3));
|
|
|
|
bar_Expect(5);
|
|
foo_ExpectAndReturn(4, 30);
|
|
foo_ExpectAndReturn(5, 80);
|
|
foo_ExpectAndReturn(6, 10);
|
|
TEST_ASSERT_EQUAL(120, function(4, 5, 6));
|
|
|
|
bar_Expect(8);
|
|
foo_ExpectAndReturn(7, 70);
|
|
foo_ExpectAndReturn(8, 20);
|
|
foo_ExpectAndReturn(9, 20);
|
|
TEST_ASSERT_EQUAL(110, function(7, 8, 9));
|
|
}
|
|
|
|
- :pass: FALSE
|
|
:should: 'have multiple cycles of expects still fail when this plugin enabled'
|
|
:code: |
|
|
test()
|
|
{
|
|
bar_Expect(2);
|
|
foo_ExpectAndReturn(1, 50);
|
|
foo_ExpectAndReturn(2, 60);
|
|
foo_ExpectAndReturn(3, 70);
|
|
TEST_ASSERT_EQUAL(180, function(1, 2, 3));
|
|
|
|
bar_Expect(5);
|
|
foo_ExpectAndReturn(4, 30);
|
|
foo_ExpectAndReturn(5, 80);
|
|
foo_ExpectAndReturn(6, 10);
|
|
TEST_ASSERT_EQUAL(120, function(4, 5, 6));
|
|
|
|
bar_Expect(8);
|
|
foo_ExpectAndReturn(7, 70);
|
|
foo_ExpectAndReturn(8, 20);
|
|
foo_ExpectAndReturn(9, 20);
|
|
TEST_ASSERT_EQUAL(110, function(0, 8, 9));
|
|
}
|
|
|
|
...
|
|
|