Files
uclisp/test/testing_helpers.h
Max Regan c3e1fad491 Automatically gc during evaluation + perf improvements
Still ~25x slower than Python when calculating fib 27
2022-11-29 23:40:50 -05:00

64 lines
2.8 KiB
C

#ifndef _TESTING_HELPERS_H_
#define _TESTING_HELPERS_H_
#include <unity.h>
#include "uclisp.h"
#include "utility.h"
#define TEST_ASSERT_OBJ_ERROR(obj) \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_ERROR, (obj)->type, "Expected error type")
#define TEST_ASSERT_OBJ_SYMBOL(obj) \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_SYMBOL, (obj)->type, "Expected symbol type")
#define TEST_ASSERT_OBJ_SYMBOL_V(obj, value) \
do { \
TEST_ASSERT_NOT_NULL(obj); \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_SYMBOL, (obj)->type, "Expected symbol type"); \
TEST_ASSERT_EQUAL_STRING((obj)->symbol, value); \
} while (0)
#define TEST_ASSERT_OBJ_STRING(obj) \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_STRING, (obj)->type, "Expected string type")
#define TEST_ASSERT_OBJ_STRING_V(obj, value) \
do { \
TEST_ASSERT_NOT_NULL(obj); \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_STRING, (obj)->type, "Expected string type"); \
TEST_ASSERT_EQUAL_STRING((obj)->string, value); \
} while (0)
#define TEST_ASSERT_OBJ_INT(obj) \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_INT, (obj)->type, "Expected int type")
#define TEST_ASSERT_OBJ_INT_V(obj, value) \
do { \
TEST_ASSERT_NOT_NULL(obj); \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_INT, (obj)->type, "Expected int type"); \
TEST_ASSERT_EQUAL(value, (obj)->integer); \
} while (0)
#define TEST_ASSERT_OBJ_LIST(obj) \
TEST_ASSERT_EQUAL_MESSAGE(UCL_TYPE_CELL, (obj)->type, "Expected cell type")
#define TEST_ASSERT_LIST_LEN(list, len) \
do { \
TEST_ASSERT_OBJ_LIST(list); \
TEST_ASSERT_EQUAL_MESSAGE(len, ucl_list_length_int(list), "Unexpected list length"); \
} while(0)
#define TEST_ASSERT_NIL(obj) \
do { \
TEST_ASSERT_OBJ_LIST(obj); \
TEST_ASSERT_LIST_LEN(obj, 0); \
} while(0)
#define TEST_ASSERT_T(obj) \
do { \
TEST_ASSERT_OBJ_SYMBOL(obj); \
TEST_ASSERT_EQUAL_STRING((obj)->symbol, "t"); \
} while(0)
#endif