README.md
1Unity Test ![CI](https://github.com/ThrowTheSwitch/Unity/workflows/CI/badge.svg)
2==========
3__Copyright (c) 2007 - 2021 Unity Project by Mike Karlesky, Mark VanderVoord, and Greg Williams__
4
5Welcome to the Unity Test Project, one of the main projects of ThrowTheSwitch.org. Unity Test is a
6unit testing framework built for C, with a focus on working with embedded toolchains.
7
8This project is made to test code targetting microcontrollers big and small. The core project is a
9single C file and a pair of headers, allowing it to the added to your existing build setup without
10too much headache. You may use any compiler you wish, and may use most existing build systems
11including make, cmake, etc. If you'd like to leave the hard work to us, you might be interested
12in Ceedling, a build tool also by ThrowTheSwitch.org.
13
14If you're new to Unity, we encourage you to tour the [getting started guide](docs/UnityGettingStartedGuide.md)
15
16Getting Started
17===============
18The [docs](docs/) folder contains a [getting started guide](docs/UnityGettingStartedGuide.md)
19and much more tips about using Unity.
20
21Unity Assertion Summary
22=======================
23For the full list, see [UnityAssertionsReference.md](docs/UnityAssertionsReference.md).
24
25Basic Validity Tests
26--------------------
27
28 TEST_ASSERT_TRUE(condition)
29
30Evaluates whatever code is in condition and fails if it evaluates to false
31
32 TEST_ASSERT_FALSE(condition)
33
34Evaluates whatever code is in condition and fails if it evaluates to true
35
36 TEST_ASSERT(condition)
37
38Another way of calling `TEST_ASSERT_TRUE`
39
40 TEST_ASSERT_UNLESS(condition)
41
42Another way of calling `TEST_ASSERT_FALSE`
43
44 TEST_FAIL()
45 TEST_FAIL_MESSAGE(message)
46
47This test is automatically marked as a failure. The message is output stating why.
48
49Numerical Assertions: Integers
50------------------------------
51
52 TEST_ASSERT_EQUAL_INT(expected, actual)
53 TEST_ASSERT_EQUAL_INT8(expected, actual)
54 TEST_ASSERT_EQUAL_INT16(expected, actual)
55 TEST_ASSERT_EQUAL_INT32(expected, actual)
56 TEST_ASSERT_EQUAL_INT64(expected, actual)
57
58Compare two integers for equality and display errors as signed integers. A cast will be performed
59to your natural integer size so often this can just be used. When you need to specify the exact size,
60like when comparing arrays, you can use a specific version:
61
62 TEST_ASSERT_EQUAL_UINT(expected, actual)
63 TEST_ASSERT_EQUAL_UINT8(expected, actual)
64 TEST_ASSERT_EQUAL_UINT16(expected, actual)
65 TEST_ASSERT_EQUAL_UINT32(expected, actual)
66 TEST_ASSERT_EQUAL_UINT64(expected, actual)
67
68Compare two integers for equality and display errors as unsigned integers. Like INT, there are
69variants for different sizes also.
70
71 TEST_ASSERT_EQUAL_HEX(expected, actual)
72 TEST_ASSERT_EQUAL_HEX8(expected, actual)
73 TEST_ASSERT_EQUAL_HEX16(expected, actual)
74 TEST_ASSERT_EQUAL_HEX32(expected, actual)
75 TEST_ASSERT_EQUAL_HEX64(expected, actual)
76
77Compares two integers for equality and display errors as hexadecimal. Like the other integer comparisons,
78you can specify the size... here the size will also effect how many nibbles are shown (for example, `HEX16`
79will show 4 nibbles).
80
81 TEST_ASSERT_EQUAL(expected, actual)
82
83Another way of calling TEST_ASSERT_EQUAL_INT
84
85 TEST_ASSERT_INT_WITHIN(delta, expected, actual)
86
87Asserts that the actual value is within plus or minus delta of the expected value. This also comes in
88size specific variants.
89
90
91 TEST_ASSERT_GREATER_THAN(threshold, actual)
92
93Asserts that the actual value is greater than the threshold. This also comes in size specific variants.
94
95
96 TEST_ASSERT_LESS_THAN(threshold, actual)
97
98Asserts that the actual value is less than the threshold. This also comes in size specific variants.
99
100
101Arrays
102------
103
104 _ARRAY
105
106You can append `_ARRAY` to any of these macros to make an array comparison of that type. Here you will
107need to care a bit more about the actual size of the value being checked. You will also specify an
108additional argument which is the number of elements to compare. For example:
109
110 TEST_ASSERT_EQUAL_HEX8_ARRAY(expected, actual, elements)
111
112 _EACH_EQUAL
113
114Another array comparison option is to check that EVERY element of an array is equal to a single expected
115value. You do this by specifying the EACH_EQUAL macro. For example:
116
117 TEST_ASSERT_EACH_EQUAL_INT32(expected, actual, elements)
118
119Numerical Assertions: Bitwise
120-----------------------------
121
122 TEST_ASSERT_BITS(mask, expected, actual)
123
124Use an integer mask to specify which bits should be compared between two other integers. High bits in the mask are compared, low bits ignored.
125
126 TEST_ASSERT_BITS_HIGH(mask, actual)
127
128Use an integer mask to specify which bits should be inspected to determine if they are all set high. High bits in the mask are compared, low bits ignored.
129
130 TEST_ASSERT_BITS_LOW(mask, actual)
131
132Use an integer mask to specify which bits should be inspected to determine if they are all set low. High bits in the mask are compared, low bits ignored.
133
134 TEST_ASSERT_BIT_HIGH(bit, actual)
135
136Test a single bit and verify that it is high. The bit is specified 0-31 for a 32-bit integer.
137
138 TEST_ASSERT_BIT_LOW(bit, actual)
139
140Test a single bit and verify that it is low. The bit is specified 0-31 for a 32-bit integer.
141
142Numerical Assertions: Floats
143----------------------------
144
145 TEST_ASSERT_FLOAT_WITHIN(delta, expected, actual)
146
147Asserts that the actual value is within plus or minus delta of the expected value.
148
149 TEST_ASSERT_EQUAL_FLOAT(expected, actual)
150 TEST_ASSERT_EQUAL_DOUBLE(expected, actual)
151
152Asserts that two floating point values are "equal" within a small % delta of the expected value.
153
154String Assertions
155-----------------
156
157 TEST_ASSERT_EQUAL_STRING(expected, actual)
158
159Compare two null-terminate strings. Fail if any character is different or if the lengths are different.
160
161 TEST_ASSERT_EQUAL_STRING_LEN(expected, actual, len)
162
163Compare two strings. Fail if any character is different, stop comparing after len characters.
164
165 TEST_ASSERT_EQUAL_STRING_MESSAGE(expected, actual, message)
166
167Compare two null-terminate strings. Fail if any character is different or if the lengths are different. Output a custom message on failure.
168
169 TEST_ASSERT_EQUAL_STRING_LEN_MESSAGE(expected, actual, len, message)
170
171Compare two strings. Fail if any character is different, stop comparing after len characters. Output a custom message on failure.
172
173Pointer Assertions
174------------------
175
176Most pointer operations can be performed by simply using the integer comparisons above. However, a couple of special cases are added for clarity.
177
178 TEST_ASSERT_NULL(pointer)
179
180Fails if the pointer is not equal to NULL
181
182 TEST_ASSERT_NOT_NULL(pointer)
183
184Fails if the pointer is equal to NULL
185
186Memory Assertions
187-----------------
188
189 TEST_ASSERT_EQUAL_MEMORY(expected, actual, len)
190
191Compare two blocks of memory. This is a good generic assertion for types that can't be coerced into acting like
192standard types... but since it's a memory compare, you have to be careful that your data types are packed.
193
194\_MESSAGE
195---------
196
197you can append \_MESSAGE to any of the macros to make them take an additional argument. This argument
198is a string that will be printed at the end of the failure strings. This is useful for specifying more
199information about the problem.
200
201