summaryrefslogtreecommitdiff
path: root/lily-test.h
blob: 18941274641cf4b87dfaf21b35e86472579e13ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef LILY_TEST_H
#define LILY_TEST_H

#include <stddef.h>

/* gives a string like 'some/filename:xxx' */
#define STR_IMP(x) #x
#define STR(x) STR_IMP(x)
/* define SOURCE_PATH_SIZE to strip away the
   leading parts of the full compilation path */
#ifndef SOURCE_PATH_SIZE
#define LILY_LOCATION "" __FILE__ ":" STR(__LINE__)
#else
#define LILY_LOCATION (("" __FILE__ ":" STR(__LINE__)) + SOURCE_PATH_SIZE)
#endif

struct lily_test_result_t {
   int error;
   const char *message;
   const char *location;
};

typedef struct lily_test_result_t lily_test;
#define LILY_SUCCESS (struct lily_test_result_t){ 0, NULL, NULL }

// assertions
#define lily_assert_msg(statement, message) do {			\
      if(!(statement)) {						\
	 return (struct lily_test_result_t){1, (message), LILY_LOCATION}; \
      }									\
   } while(0)

#endif