gitout

A static git page generator
git clone https://git.bracken.jp/gitout.git
Log | Files | Refs | README | LICENSE

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!"); }