#ifndef bddtest_h
#define bddtest_h

void bddtest_suite(const char* name);
int bddtest_test(const char*, int, const char*, int);
void bddtest_start(const char*);
void bddtest_end();
int bddtest_summary();

#define SUITE(x) { bddtest_suite(x); }
#define TEST(x) { if (!bddtest_test(__FILE__, __LINE__, #x, (x))) return false;  }

#define IT(x) { bddtest_start(x); }
#define END_IT { bddtest_end();return true;}

#define FINISH { return bddtest_summary(); }

#define IS_TRUE(x) TEST(x)
#define IS_FALSE(x) TEST(!(x))
#define IS_EQUAL(x, y) TEST(x==y)
#define IS_NOT_EQUAL(x, y) TEST(x!=y)

#endif
