@@ -31,6 +31,7 @@ DEALINGS IN THE SOFTWARE.
31
31
#include < string>
32
32
#include < vector>
33
33
#include < iostream>
34
+ #include < cstring>
34
35
35
36
namespace ftest
36
37
{
@@ -163,6 +164,19 @@ class TestDriver
163
164
std::vector<Test*> m_tests;
164
165
};
165
166
167
+ inline bool string_eq (const char * a, const char * b)
168
+ {
169
+ // Two nulls are equal
170
+ if (!a) return (!b);
171
+ if (!b) return (!a);
172
+ return !(std::strcmp (a, b));
173
+ }
174
+
175
+ inline bool string_neq (const char * a, const char * b)
176
+ {
177
+ return !(string_eq (a, b));
178
+ }
179
+
166
180
#ifdef F_TEST_NO_MAIN
167
181
extern TestDriver testdriver;
168
182
#else
@@ -201,13 +215,26 @@ do { \
201
215
} \
202
216
} while (false )
203
217
218
+ #define FTEST_EXPECT_BOOL_FUNC (a, b, bool_function ) \
219
+ do { \
220
+ if (!(bool_function (a, b))) { \
221
+ std::cout << __FILE__ << " :" << __LINE__ << " : Failure\n " ; \
222
+ status = ftest::Failed; \
223
+ } \
224
+ } while (false )
225
+
226
+
204
227
#define EXPECT_EQ (a, b ) FTEST_EXPECT_PREDICATE(a, b, ==)
205
228
#define EXPECT_NE (a, b ) FTEST_EXPECT_PREDICATE(a, b, !=)
206
229
#define EXPECT_LT (a, b ) FTEST_EXPECT_PREDICATE(a, b, <)
207
230
#define EXPECT_LE (a, b ) FTEST_EXPECT_PREDICATE(a, b, <=)
208
231
#define EXPECT_GT (a, b ) FTEST_EXPECT_PREDICATE(a, b, >)
209
232
#define EXPECT_GE (a, b ) FTEST_EXPECT_PREDICATE(a, b, >=)
210
233
234
+ // C-String asserts:
235
+ #define EXPECT_STREQ (a, b ) FTEST_EXPECT_BOOL_FUNC(a, b, ftest::string_eq)
236
+ #define EXPECT_STRNE (a, b ) FTEST_EXPECT_BOOL_FUNC(a, b, ftest::string_neq)
237
+
211
238
#define TEST (f_test_case_name, f_test_name ) \
212
239
class F_TEST_ ##f_test_case_name##f_test_name : public ftest::Test \
213
240
{ \
0 commit comments