1290001Sglebius//- Copyright (c) 2010 James Grenning and Contributed to Unity Project
2290001Sglebius/* ==========================================
3290001Sglebius    Unity Project - A Test Framework for C
4290001Sglebius    Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
5290001Sglebius    [Released under MIT License. Please refer to license.txt for details]
6290001Sglebius========================================== */
7290001Sglebius
8290001Sglebius#ifndef UNITY_FIXTURE_H_
9290001Sglebius#define UNITY_FIXTURE_H_
10290001Sglebius
11290001Sglebius#include "unity.h"
12290001Sglebius#include "unity_internals.h"
13290001Sglebius#include "unity_fixture_malloc_overrides.h"
14290001Sglebius#include "unity_fixture_internals.h"
15290001Sglebius
16290001Sglebiusint UnityMain(int argc, const char* argv[], void (*runAllTests)(void));
17290001Sglebius
18290001Sglebius
19290001Sglebius#define TEST_GROUP(group)\
20290001Sglebius    static const char* TEST_GROUP_##group = #group
21290001Sglebius
22290001Sglebius#define TEST_SETUP(group) void TEST_##group##_SETUP(void);\
23290001Sglebius    void TEST_##group##_SETUP(void)
24290001Sglebius
25290001Sglebius#define TEST_TEAR_DOWN(group) void TEST_##group##_TEAR_DOWN(void);\
26290001Sglebius    void TEST_##group##_TEAR_DOWN(void)
27290001Sglebius
28290001Sglebius
29290001Sglebius#define TEST(group, name) \
30290001Sglebius    void TEST_##group##_##name##_(void);\
31290001Sglebius    void TEST_##group##_##name##_run(void);\
32290001Sglebius    void TEST_##group##_##name##_run(void)\
33290001Sglebius    {\
34290001Sglebius        UnityTestRunner(TEST_##group##_SETUP,\
35290001Sglebius            TEST_##group##_##name##_,\
36290001Sglebius            TEST_##group##_TEAR_DOWN,\
37290001Sglebius            "TEST(" #group ", " #name ")",\
38290001Sglebius            TEST_GROUP_##group, #name,\
39290001Sglebius            __FILE__, __LINE__);\
40290001Sglebius    }\
41290001Sglebius    void  TEST_##group##_##name##_(void)
42290001Sglebius
43290001Sglebius#define IGNORE_TEST(group, name) \
44290001Sglebius    void TEST_##group##_##name##_(void);\
45290001Sglebius    void TEST_##group##_##name##_run(void);\
46290001Sglebius    void TEST_##group##_##name##_run(void)\
47290001Sglebius    {\
48290001Sglebius        UnityIgnoreTest("IGNORE_TEST(" #group ", " #name ")");\
49290001Sglebius    }\
50290001Sglebius    void TEST_##group##_##name##_(void)
51290001Sglebius
52290001Sglebius#define DECLARE_TEST_CASE(group, name) \
53290001Sglebius    void TEST_##group##_##name##_run(void)
54290001Sglebius
55290001Sglebius#define RUN_TEST_CASE(group, name) \
56290001Sglebius    { DECLARE_TEST_CASE(group, name);\
57290001Sglebius      TEST_##group##_##name##_run(); }
58290001Sglebius
59290001Sglebius//This goes at the bottom of each test file or in a separate c file
60290001Sglebius#define TEST_GROUP_RUNNER(group)\
61290001Sglebius    void TEST_##group##_GROUP_RUNNER_runAll(void);\
62290001Sglebius    void TEST_##group##_GROUP_RUNNER(void);\
63290001Sglebius    void TEST_##group##_GROUP_RUNNER(void)\
64290001Sglebius    {\
65290001Sglebius        TEST_##group##_GROUP_RUNNER_runAll();\
66290001Sglebius    }\
67290001Sglebius    void TEST_##group##_GROUP_RUNNER_runAll(void)
68290001Sglebius
69290001Sglebius//Call this from main
70290001Sglebius#define RUN_TEST_GROUP(group)\
71290001Sglebius    { void TEST_##group##_GROUP_RUNNER(void);\
72290001Sglebius      TEST_##group##_GROUP_RUNNER(); }
73290001Sglebius
74290001Sglebius//CppUTest Compatibility Macros
75290001Sglebius#define UT_PTR_SET(ptr, newPointerValue)               UnityPointer_Set((void**)&ptr, (void*)newPointerValue)
76290001Sglebius#define TEST_ASSERT_POINTERS_EQUAL(expected, actual)   TEST_ASSERT_EQUAL_PTR(expected, actual)
77290001Sglebius#define TEST_ASSERT_BYTES_EQUAL(expected, actual)      TEST_ASSERT_EQUAL_HEX8(0xff & (expected), 0xff & (actual))
78290001Sglebius#define FAIL(message)                                  TEST_FAIL((message))
79290001Sglebius#define CHECK(condition)                               TEST_ASSERT_TRUE((condition))
80290001Sglebius#define LONGS_EQUAL(expected, actual)                  TEST_ASSERT_EQUAL_INT((expected), (actual))
81290001Sglebius#define STRCMP_EQUAL(expected, actual)                 TEST_ASSERT_EQUAL_STRING((expected), (actual))
82290001Sglebius#define DOUBLES_EQUAL(expected, actual, delta)         TEST_ASSERT_FLOAT_WITHIN(((expected), (actual), (delta))
83290001Sglebius
84290001Sglebiusvoid UnityMalloc_MakeMallocFailAfterCount(int count);
85290001Sglebius
86290001Sglebius#endif /* UNITY_FIXTURE_H_ */
87