summaryrefslogtreecommitdiff
path: root/FreeRTOS-Plus/Test/CMock/test/system/test_interactions/out_of_memory.yml
blob: ed7bed5c1a1e30435ecf9a6105a76371a19faa07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
---
:cmock:
  :plugins: []
  :treat_as:
    custom_type: INT

:systest:
  :types: |
    typedef struct _BIG_FAT_STRUCT_T
    {
      char bytes[512];
    } BIG_FAT_STRUCT_T;

  :mockable: |
    void foo(BIG_FAT_STRUCT_T a);

  :source:
    :header: |
      void   function_a(void);
      void   function_b(void);

    :code: |
      void function_a(void)
      {
        BIG_FAT_STRUCT_T stuff = { { 8, 0 } };
        foo(stuff);
      }

      void function_b(void)
      {
        BIG_FAT_STRUCT_T stuff1 = { { 9, 1, 0 } };
        BIG_FAT_STRUCT_T stuff2 = { { 9, 2, 0 } };
        foo(stuff1);
        foo(stuff2);
      }

  :tests:
    :common: |
      void setUp(void) {}
      void tearDown(void) {}

    :units:
    - :pass: TRUE
      :should: 'successfully should be able to run function a because it only takes half the memory'
      :code: |
        test()
        {
          BIG_FAT_STRUCT_T expected = { { 8, 0 } };
          foo_Expect(expected);
          function_a();
        }

    - :pass: FALSE
      :should: 'should error out because we do not have eough memory to handle two of these structures'
      :code: |
        test()
        {
          BIG_FAT_STRUCT_T expected1 = { { 9, 1, 0 } };
          BIG_FAT_STRUCT_T expected2 = { { 9, 2, 0 } };
          foo_Expect(expected1);
          foo_Expect(expected2);
          function_b();
        }

...