• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* ==========================================
2     Unity Project - A Test Framework for C
3     Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4     [Released under MIT License. Please refer to license.txt for details]
5 ========================================== */
6 
7 #include <setjmp.h>
8 #include <stdio.h>
9 #include "unity.h"
10 
putcharSpy(int c)11 void putcharSpy(int c) { (void)putchar(c);} // include passthrough for linking tests
12 
13 #define TEST_CASE(...)
14 
15 #define EXPECT_ABORT_BEGIN \
16     if (TEST_PROTECT())    \
17     {
18 
19 #define VERIFY_FAILS_END                                                       \
20     }                                                                          \
21     Unity.CurrentTestFailed = (Unity.CurrentTestFailed != 0) ? 0 : 1;          \
22     if (Unity.CurrentTestFailed == 1) {                                        \
23       SetToOneMeanWeAlreadyCheckedThisGuy = 1;                                 \
24       UnityPrintNumberUnsigned(Unity.CurrentTestLineNumber);                   \
25       UNITY_OUTPUT_CHAR(':');                                                  \
26       UnityPrint(Unity.CurrentTestName);                                       \
27       UnityPrint(":FAIL: [[[[ Test Should Have Failed But Did Not ]]]]");      \
28       UNITY_OUTPUT_CHAR('\n');                                                 \
29     }
30 
31 #define VERIFY_IGNORES_END                                                     \
32     }                                                                          \
33     Unity.CurrentTestFailed = (Unity.CurrentTestIgnored != 0) ? 0 : 1;         \
34     Unity.CurrentTestIgnored = 0;                                              \
35     if (Unity.CurrentTestFailed == 1) {                                        \
36       SetToOneMeanWeAlreadyCheckedThisGuy = 1;                                 \
37       UnityPrintNumberUnsigned(Unity.CurrentTestLineNumber);                   \
38       UNITY_OUTPUT_CHAR(':');                                                  \
39       UnityPrint(Unity.CurrentTestName);                                       \
40       UnityPrint(":FAIL: [[[[ Test Should Have Ignored But Did Not ]]]]");     \
41       UNITY_OUTPUT_CHAR('\n');                                                 \
42     }
43 
44 int SetToOneToFailInTearDown;
45 int SetToOneMeanWeAlreadyCheckedThisGuy;
46 
setUp(void)47 void setUp(void)
48 {
49   SetToOneToFailInTearDown = 0;
50   SetToOneMeanWeAlreadyCheckedThisGuy = 0;
51 }
52 
tearDown(void)53 void tearDown(void)
54 {
55   if (SetToOneToFailInTearDown == 1)
56     TEST_FAIL_MESSAGE("<= Failed in tearDown");
57   if ((SetToOneMeanWeAlreadyCheckedThisGuy == 0) && (Unity.CurrentTestFailed > 0))
58   {
59     UnityPrint(": [[[[ Test Should Have Passed But Did Not ]]]]");
60     UNITY_OUTPUT_CHAR('\n');
61   }
62 }
63 
64 TEST_CASE(0)
65 TEST_CASE(44)
66 TEST_CASE((90)+9)
test_TheseShouldAllPass(int Num)67 void test_TheseShouldAllPass(int Num)
68 {
69     TEST_ASSERT_TRUE(Num < 100);
70 }
71 
72 TEST_CASE(3)
73 TEST_CASE(77)
74 TEST_CASE( (99) + 1 - (1))
test_TheseShouldAllFail(int Num)75 void test_TheseShouldAllFail(int Num)
76 {
77     EXPECT_ABORT_BEGIN
78     TEST_ASSERT_TRUE(Num > 100);
79     VERIFY_FAILS_END
80 }
81 
82 TEST_CASE(1)
83 TEST_CASE(44)
84 TEST_CASE(99)
85 TEST_CASE(98)
test_TheseAreEveryOther(int Num)86 void test_TheseAreEveryOther(int Num)
87 {
88     if (Num & 1)
89     {
90         EXPECT_ABORT_BEGIN
91         TEST_ASSERT_TRUE(Num > 100);
92         VERIFY_FAILS_END
93     }
94     else
95     {
96         TEST_ASSERT_TRUE(Num < 100);
97     }
98 }
99 
test_NormalPassesStillWork(void)100 void test_NormalPassesStillWork(void)
101 {
102     TEST_ASSERT_TRUE(1);
103 }
104 
test_NormalFailsStillWork(void)105 void test_NormalFailsStillWork(void)
106 {
107     EXPECT_ABORT_BEGIN
108     TEST_ASSERT_TRUE(0);
109     VERIFY_FAILS_END
110 }
111