test.c (5537B)
1 /* 2 This is free and unencumbered software released into the public domain. 3 4 Anyone is free to copy, modify, publish, use, compile, sell, or 5 distribute this software, either in source code form or as a compiled 6 binary, for any purpose, commercial or non-commercial, and by any 7 means. 8 9 In jurisdictions that recognize copyright laws, the author or authors 10 of this software dedicate any and all copyright interest in the 11 software to the public domain. We make this dedication for the benefit 12 of the public at large and to the detriment of our heirs and 13 successors. We intend this dedication to be an overt act of 14 relinquishment in perpetuity of all present and future rights to this 15 software under copyright law. 16 17 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR 21 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 22 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23 OTHER DEALINGS IN THE SOFTWARE. 24 25 For more information, please refer to <http://unlicense.org/> 26 */ 27 28 #include "utest.h" 29 30 #ifdef _MSC_VER 31 /* disable 'conditional expression is constant' - our examples below use this! 32 */ 33 #pragma warning(disable : 4127) 34 #endif 35 36 UTEST(c, ASSERT_TRUE) { ASSERT_TRUE(1); } 37 38 UTEST(c, ASSERT_FALSE) { ASSERT_FALSE(0); } 39 40 UTEST(c, ASSERT_EQ) { ASSERT_EQ(1, 1); } 41 42 UTEST(c, ASSERT_NE) { ASSERT_NE(1, 2); } 43 44 UTEST(c, ASSERT_LT) { ASSERT_LT(1, 2); } 45 46 UTEST(c, ASSERT_LE) { 47 ASSERT_LE(1, 1); 48 ASSERT_LE(1, 2); 49 } 50 51 UTEST(c, ASSERT_GT) { ASSERT_GT(2, 1); } 52 53 UTEST(c, ASSERT_GE) { 54 ASSERT_GE(1, 1); 55 ASSERT_GE(2, 1); 56 } 57 58 UTEST(c, ASSERT_STREQ) { ASSERT_STREQ("foo", "foo"); } 59 60 UTEST(c, ASSERT_STRNE) { ASSERT_STRNE("foo", "bar"); } 61 62 UTEST(c, ASSERT_STRNEQ) { ASSERT_STRNEQ("foo", "foobar", strlen("foo")); } 63 64 UTEST(c, ASSERT_STRNNE) { ASSERT_STRNNE("foo", "barfoo", strlen("foo")); } 65 66 UTEST(c, EXPECT_TRUE) { EXPECT_TRUE(1); } 67 68 UTEST(c, EXPECT_FALSE) { EXPECT_FALSE(0); } 69 70 UTEST(c, EXPECT_EQ) { EXPECT_EQ(1, 1); } 71 72 UTEST(c, EXPECT_NE) { EXPECT_NE(1, 2); } 73 74 UTEST(c, EXPECT_LT) { EXPECT_LT(1, 2); } 75 76 UTEST(c, EXPECT_LE) { 77 EXPECT_LE(1, 1); 78 EXPECT_LE(1, 2); 79 } 80 81 UTEST(c, EXPECT_GT) { EXPECT_GT(2, 1); } 82 83 UTEST(c, EXPECT_GE) { 84 EXPECT_GE(1, 1); 85 EXPECT_GE(2, 1); 86 } 87 88 UTEST(c, EXPECT_STREQ) { EXPECT_STREQ("foo", "foo"); } 89 90 UTEST(c, EXPECT_STRNE) { EXPECT_STRNE("foo", "bar"); } 91 92 UTEST(c, EXPECT_STRNEQ) { EXPECT_STRNEQ("foo", "foobar", strlen("foo")); } 93 94 UTEST(c, EXPECT_STRNNE) { EXPECT_STRNNE("foo", "barfoo", strlen("foo")); } 95 96 UTEST(c, no_double_eval) { 97 int i = 0; 98 ASSERT_EQ(i++, 0); 99 ASSERT_EQ(i, 1); 100 } 101 102 struct MyTestF { 103 int foo; 104 }; 105 106 UTEST_F_SETUP(MyTestF) { 107 ASSERT_EQ(0, utest_fixture->foo); 108 utest_fixture->foo = 42; 109 } 110 111 UTEST_F_TEARDOWN(MyTestF) { ASSERT_EQ(13, utest_fixture->foo); } 112 113 UTEST_F(MyTestF, c) { 114 ASSERT_EQ(42, utest_fixture->foo); 115 utest_fixture->foo = 13; 116 } 117 118 UTEST_F(MyTestF, c2) { 119 ASSERT_EQ(42, utest_fixture->foo); 120 utest_fixture->foo = 13; 121 } 122 123 struct MyTestI { 124 size_t foo; 125 size_t bar; 126 }; 127 128 UTEST_I_SETUP(MyTestI) { 129 ASSERT_EQ(0u, utest_fixture->foo); 130 ASSERT_EQ(0u, utest_fixture->bar); 131 utest_fixture->foo = 42; 132 utest_fixture->bar = utest_index; 133 } 134 135 UTEST_I_TEARDOWN(MyTestI) { 136 ASSERT_EQ(13u, utest_fixture->foo); 137 ASSERT_EQ(utest_index, utest_fixture->bar); 138 } 139 140 UTEST_I(MyTestI, c, 2) { 141 ASSERT_GT(2u, utest_fixture->bar); 142 utest_fixture->foo = 13; 143 } 144 145 UTEST_I(MyTestI, c2, 128) { 146 ASSERT_GT(128u, utest_fixture->bar); 147 utest_fixture->foo = 13; 148 } 149 150 UTEST(c, Float) { 151 float a = 1; 152 float b = 2; 153 EXPECT_NE(a, b); 154 ASSERT_NE(a, b); 155 } 156 157 UTEST(c, Double) { 158 double a = 1; 159 double b = 2; 160 EXPECT_NE(a, b); 161 ASSERT_NE(a, b); 162 } 163 164 UTEST(c, LongDouble) { 165 long double a = 1; 166 long double b = 2; 167 EXPECT_NE(a, b); 168 ASSERT_NE(a, b); 169 } 170 171 UTEST(c, Char) { 172 char a = 1; 173 char b = 2; 174 EXPECT_NE(a, b); 175 ASSERT_NE(a, b); 176 } 177 178 UTEST(c, SignedChar) { 179 signed char a = 1; 180 signed char b = 2; 181 EXPECT_NE(a, b); 182 ASSERT_NE(a, b); 183 } 184 185 UTEST(c, UChar) { 186 unsigned char a = 1; 187 unsigned char b = 2; 188 EXPECT_NE(a, b); 189 ASSERT_NE(a, b); 190 } 191 192 UTEST(c, Short) { 193 short a = 1; 194 short b = 2; 195 EXPECT_NE(a, b); 196 ASSERT_NE(a, b); 197 } 198 199 UTEST(c, UShort) { 200 unsigned short a = 1; 201 unsigned short b = 2; 202 EXPECT_NE(a, b); 203 ASSERT_NE(a, b); 204 } 205 206 UTEST(c, Int) { 207 int a = 1; 208 int b = 2; 209 EXPECT_NE(a, b); 210 ASSERT_NE(a, b); 211 } 212 213 UTEST(c, UInt) { 214 unsigned int a = 1; 215 unsigned int b = 2; 216 EXPECT_NE(a, b); 217 ASSERT_NE(a, b); 218 } 219 220 UTEST(c, Long) { 221 long a = 1; 222 long b = 2; 223 EXPECT_NE(a, b); 224 ASSERT_NE(a, b); 225 } 226 227 UTEST(c, ULong) { 228 unsigned long a = 1; 229 unsigned long b = 2; 230 EXPECT_NE(a, b); 231 ASSERT_NE(a, b); 232 } 233 234 #if defined(__clang__) 235 #if __has_warning("-Wunsafe-buffer-usage") 236 #pragma clang diagnostic push 237 #pragma clang diagnostic ignored "-Wunsafe-buffer-usage" 238 #endif 239 #endif 240 241 UTEST(c, Ptr) { 242 char foo = 42; 243 EXPECT_NE(&foo, &foo + 1); 244 } 245 246 UTEST(c, VoidPtr) { 247 void *foo = 0; 248 EXPECT_NE(foo, (char *)foo + 1); 249 } 250 251 static const int data[4] = {42, 13, 6, -53}; 252 253 UTEST(c, Array) { EXPECT_NE(data, data + 1); } 254 255 #if defined(__clang__) 256 #if __has_warning("-Wunsafe-buffer-usage") 257 #pragma clang diagnostic pop 258 #endif 259 #endif 260 261 UTEST(c, Near) { 262 float a = 42.0f; 263 float b = 42.01f; 264 EXPECT_NEAR(a, b, 0.01f); 265 ASSERT_NEAR(a, b, 0.01f); 266 } 267 268 UTEST(c, Todo) { UTEST_SKIP("Not yet implemented!"); }