unit.h
1 /* unit.c API unit tests driver
2  *
3  * Copyright (C) 2006-2020 wolfSSL Inc.
4  *
5  * This file is part of wolfSSL.
6  *
7  * wolfSSL is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * wolfSSL is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
20  */
21 
22 
23 #ifndef CyaSSL_UNIT_H
24 #define CyaSSL_UNIT_H
25 
26 #include <wolfssl/ssl.h>
27 #include <wolfssl/test.h> /* thread and tcp stuff */
28 
29 #ifdef WOLFSSL_FORCE_MALLOC_FAIL_TEST
30 #define XABORT()
31 #else
32 #define XABORT() abort()
33 #endif
34 
35 #ifndef WOLFSSL_PASSTHRU_ERR
36 #define Fail(description, result) do { \
37  printf("\nERROR - %s line %d failed with:", __FILE__, __LINE__); \
38  printf("\n expected: "); printf description; \
39  printf("\n result: "); printf result; printf("\n\n"); \
40  XABORT(); \
41 } while(0)
42 #else
43 #define Fail(description, result) do { \
44  printf("\nERROR - %s line %d failed with:", __FILE__, __LINE__); \
45  printf("\n expected: ");printf description; \
46  printf("\n result: "); printf result; printf("\n\n"); \
47 } while (0)
48 #endif
49 
50 #define Assert(test, description, result) if (!(test)) Fail(description, result)
51 
52 #define AssertTrue(x) Assert( (x), ("%s is true", #x), (#x " => FALSE"))
53 #define AssertFalse(x) Assert(!(x), ("%s is false", #x), (#x " => TRUE"))
54 #define AssertNotNull(x) Assert( (x), ("%s is not null", #x), (#x " => NULL"))
55 
56 #define AssertNull(x) do { \
57  void* _x = (void *) (x); \
58  \
59  Assert(!_x, ("%s is null", #x), (#x " => %p", _x)); \
60 } while(0)
61 
62 #define AssertInt(x, y, op, er) do { \
63  int _x = (int)x; \
64  int _y = (int)y; \
65  \
66  Assert(_x op _y, ("%s " #op " %s", #x, #y), ("%d " #er " %d", _x, _y)); \
67 } while(0)
68 
69 #define AssertIntEQ(x, y) AssertInt(x, y, ==, !=)
70 #define AssertIntNE(x, y) AssertInt(x, y, !=, ==)
71 #define AssertIntGT(x, y) AssertInt(x, y, >, <=)
72 #define AssertIntLT(x, y) AssertInt(x, y, <, >=)
73 #define AssertIntGE(x, y) AssertInt(x, y, >=, <)
74 #define AssertIntLE(x, y) AssertInt(x, y, <=, >)
75 
76 #define AssertStr(x, y, op, er) do { \
77  const char* _x = x; \
78  const char* _y = y; \
79  int _z = (_x && _y) ? strcmp(_x, _y) : -1; \
80  \
81  Assert(_z op 0, ("%s " #op " %s", #x, #y), \
82  ("\"%s\" " #er " \"%s\"", _x, _y));\
83 } while(0)
84 
85 #define AssertStrEQ(x, y) AssertStr(x, y, ==, !=)
86 #define AssertStrNE(x, y) AssertStr(x, y, !=, ==)
87 #define AssertStrGT(x, y) AssertStr(x, y, >, <=)
88 #define AssertStrLT(x, y) AssertStr(x, y, <, >=)
89 #define AssertStrGE(x, y) AssertStr(x, y, >=, <)
90 #define AssertStrLE(x, y) AssertStr(x, y, <=, >)
91 
92 #define AssertPtr(x, y, op, er) do { \
93  void* _x = (void*)x; \
94  void* _y = (void*)y; \
95  Assert(_x op _y, ("%s " #op " %s", #x, #y), ("%p " #er " %p", _x, _y)); \
96 } while(0)
97 
98 #define AssertPtrEq(x, y) AssertPtr(x, y, ==, !=)
99 #define AssertPtrNE(x, y) AssertPtr(x, y, !=, ==)
100 #define AssertPtrGT(x, y) AssertPtr(x, y, >, <=)
101 #define AssertPtrLT(x, y) AssertPtr(x, y, <, >=)
102 #define AssertPtrGE(x, y) AssertPtr(x, y, >=, <)
103 #define AssertPtrLE(x, y) AssertPtr(x, y, <=, >)
104 
105 
106 void ApiTest(void);
107 int SuiteTest(int argc, char** argv);
108 int HashTest(void);
109 void SrpTest(void);
110 
111 
112 #endif /* CyaSSL_UNIT_H */
Header file containing key wolfSSL API.