/* * write_tests.inc * Luabins Lua-less write API * See copyright notice in luabins.h */ /* Note this file intentionally does not have include guards */ /* * Depends on following symbols: * -- TEST_NAME * -- CALL_NAME * -- BUFFER_NAME * -- INIT_BUFFER * -- DESTROY_BUFFER * -- CHECK_BUFFER * * Defines symbols * -- RUN_GENERATED_TESTS */ TEST (TEST_NAME(TupleSize), { INIT_BUFFER; { unsigned char tuple_size = 0xAB; CALL_NAME(TupleSize)(BUFFER_NAME, tuple_size); CHECK_BUFFER(BUFFER_NAME, "\xAB", 1); } DESTROY_BUFFER; }) /******************************************************************************/ TEST (TEST_NAME(TableHeader), { INIT_BUFFER; { int array_size = 0xAB; int hash_size = 0xCD; CALL_NAME(TableHeader)(BUFFER_NAME, array_size, hash_size); CHECK_BUFFER( BUFFER_NAME, "T" "\xAB\x00\x00\x00" "\xCD\x00\x00\x00", 1 + 4 + 4 ); } DESTROY_BUFFER; }) /******************************************************************************/ TEST (TEST_NAME(Nil), { INIT_BUFFER; { CALL_NAME(Nil)(BUFFER_NAME); CHECK_BUFFER(BUFFER_NAME, "-", 1); } DESTROY_BUFFER; }) /******************************************************************************/ TEST (TEST_NAME(Boolean), { INIT_BUFFER; { CALL_NAME(Boolean)(BUFFER_NAME, 1); CHECK_BUFFER(BUFFER_NAME, "1", 1); CALL_NAME(Boolean)(BUFFER_NAME, 0); CHECK_BUFFER(BUFFER_NAME, "10", 1 + 1); } DESTROY_BUFFER; }) /******************************************************************************/ TEST (TEST_NAME(Number), { INIT_BUFFER; { /* Note number is a double */ CALL_NAME(Number)(BUFFER_NAME, 1.0); CHECK_BUFFER(BUFFER_NAME, "N" "\x00\x00\x00\x00\x00\x00\xF0\x3F", 1 + 8); } DESTROY_BUFFER; }) /******************************************************************************/ TEST (TEST_NAME(Integer), { INIT_BUFFER; { /* Note integer is alsow written as a double */ CALL_NAME(Integer)(BUFFER_NAME, 1); CHECK_BUFFER(BUFFER_NAME, "N" "\x00\x00\x00\x00\x00\x00\xF0\x3F", 1 + 8); } DESTROY_BUFFER; }) /******************************************************************************/ TEST (TEST_NAME(StringEmpty), { INIT_BUFFER; { CALL_NAME(String)(BUFFER_NAME, "", 0); CHECK_BUFFER(BUFFER_NAME, "S" "\x00\x00\x00\x00", 1 + 4); } DESTROY_BUFFER; }) TEST (TEST_NAME(StringSimple), { INIT_BUFFER; { CALL_NAME(String)(BUFFER_NAME, "Luabins", 7); CHECK_BUFFER( BUFFER_NAME, "S" "\x07\x00\x00\x00" "Luabins", 1 + 4 + 7 ); } DESTROY_BUFFER; }) TEST (TEST_NAME(StringEmbeddedZero), { INIT_BUFFER; { CALL_NAME(String)(BUFFER_NAME, "Embedded\0Zero", 13); CHECK_BUFFER( BUFFER_NAME, "S" "\x0D\x00\x00\x00" "Embedded\0Zero", 1 + 4 + 13 ); } DESTROY_BUFFER; }) /******************************************************************************/ #define RUN_GENERATED_TESTS \ TEST_NAME(TupleSize)(); \ TEST_NAME(TableHeader)(); \ TEST_NAME(Nil)(); \ TEST_NAME(Boolean)(); \ TEST_NAME(Number)(); \ TEST_NAME(Integer)(); \ TEST_NAME(StringEmpty)(); \ TEST_NAME(StringSimple)(); \ TEST_NAME(StringEmbeddedZero)();