#ifndef _TESTING_HELPERS_H_ #define _TESTING_HELPERS_H_ #include #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(len, ucl_list_length(state, list)->integer); \ } while(0) #define TEST_ASSERT_NIL(obj) \ TEST_ASSERT_LIST_LEN(obj, 0) #define TEST_ASSERT_T(obj) \ do { \ TEST_ASSERT_OBJ_SYMBOL(obj); \ TEST_ASSERT_EQUAL_STRING(obj->symbol, "t"); \ } while(0) #endif