Skip to content

Commit

Permalink
Adding some assertion macros to improve error messaging
Browse files Browse the repository at this point in the history
Example output:

Wrong uint64 length: Expected 1 but was 3 (ion_binary_test.c:21)
ion_binary_test over (null)
  Value COUNT: 1
  FAILURES: 1
  • Loading branch information
mijamo911 committed Jul 13, 2016
1 parent 5321349 commit dc59846
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 14 deletions.
21 changes: 19 additions & 2 deletions test/ion_assert.h
@@ -1,5 +1,22 @@
#include <ion_debug.h>

static inline iERR assert_equals_int(int expected, int actual) {
return (expected == actual) ? IERR_OK : IERR_INVALID_ARG;
static int ASSERT_BUFFER_SIZE = 1024;

#define ASSERT_ERROR(message, file, line) fprintf(stderr, "%s (%s:%d)", (message), ion_helper_short_filename((file)), (line))

#define ASSERT_EQUALS_INT(expected, actual, message) _assert_equals_int((expected), (actual), (message), __FILE__, __LINE__)

static inline iERR _assert_equals_int(int expected, int actual, char* message, char* file, int line) {
if (expected == actual) {
return IERR_OK;
} else {
char* buffer = calloc(ASSERT_BUFFER_SIZE, sizeof(char));
if (message != NULL) {
snprintf(buffer, ASSERT_BUFFER_SIZE, "%s: Expected %i but was %i", message, expected, actual);
} else {
snprintf(buffer, ASSERT_BUFFER_SIZE, "Expected %i but was %i", message, expected, actual);
}
ASSERT_ERROR(buffer, file, line);
return IERR_INVALID_ARG;
}
}
24 changes: 12 additions & 12 deletions test/ion_binary_test.c
Expand Up @@ -17,24 +17,24 @@ iERR ion_binary_test() {
iERR test_ion_binary_len_uint_64() {
iENTER;

IONCHECK(assert_equals_int(0, ion_binary_len_uint_64(0LL)));
IONCHECK(assert_equals_int(1, ion_binary_len_uint_64(1LL)));
IONCHECK(assert_equals_int(1, ion_binary_len_uint_64(255LL)));
IONCHECK(assert_equals_int(2, ion_binary_len_uint_64(256LL)));
IONCHECK(ASSERT_EQUALS_INT(0, ion_binary_len_uint_64(0LL), "Wrong uint64 length"));
IONCHECK(ASSERT_EQUALS_INT(1, ion_binary_len_uint_64(1LL), "Wrong uint64 length"));
IONCHECK(ASSERT_EQUALS_INT(1, ion_binary_len_uint_64(255LL), "Wrong uint64 length"));
IONCHECK(ASSERT_EQUALS_INT(2, ion_binary_len_uint_64(256LL), "Wrong uint64 length"));

iRETURN;
}

iERR test_ion_binary_len_int64() {
iENTER;

IONCHECK(assert_equals_int(0, ion_binary_len_int64(0LL)));
IONCHECK(assert_equals_int(1, ion_binary_len_int64(1LL)));
IONCHECK(assert_equals_int(1, ion_binary_len_int64(-1LL)));
IONCHECK(assert_equals_int(2, ion_binary_len_int64(255LL)));
IONCHECK(assert_equals_int(2, ion_binary_len_int64(-255LL)));
IONCHECK(assert_equals_int(2, ion_binary_len_int64(256LL)));
IONCHECK(assert_equals_int(2, ion_binary_len_int64(-256LL)));
IONCHECK(ASSERT_EQUALS_INT(0, ion_binary_len_int64(0LL), "Wrong int64 length"));
IONCHECK(ASSERT_EQUALS_INT(1, ion_binary_len_int64(1LL), "Wrong int64 length"));
IONCHECK(ASSERT_EQUALS_INT(1, ion_binary_len_int64(-1LL), "Wrong int64 length"));
IONCHECK(ASSERT_EQUALS_INT(2, ion_binary_len_int64(255LL), "Wrong int64 length"));
IONCHECK(ASSERT_EQUALS_INT(2, ion_binary_len_int64(-255LL), "Wrong int64 length"));
IONCHECK(ASSERT_EQUALS_INT(2, ion_binary_len_int64(256LL), "Wrong int64 length"));
IONCHECK(ASSERT_EQUALS_INT(2, ion_binary_len_int64(-256LL), "Wrong int64 length"));

iRETURN;
}
}

0 comments on commit dc59846

Please sign in to comment.