Merge remote-tracking branch 'upstream/master'

Conflicts:
	src/bitwriter.c
This commit is contained in:
Dan Hirsch 2012-07-27 15:51:11 -07:00
commit 2c7c9820e2
5 changed files with 58 additions and 2 deletions

View file

@ -104,6 +104,7 @@ void h_bit_writer_free(HBitWriter* w) {
g_free(w);
}
#ifdef INCLUDE_TESTS
// TESTS BELOW HERE
typedef struct {
unsigned long long data;
@ -134,3 +135,43 @@ void run_bitwriter_test(bitwriter_test_elem data[], char flags) {
g_check_cmpulonglong ((unsigned long long)h_read_bits(&input, data[i].nbits, FALSE), ==, data[i].data);
}
}
static void test_bitwriter_ints(void) {
}
static void test_bitwriter_be(void) {
}
static void test_bitwriter_le(void) {
}
static void test_largebits_be(void) {
}
static void test_largebits_le(void) {
}
static void test_offset_largebits_be(void) {
}
static void test_offset_largebits_le(void) {
}
void register_bitwriter_tests(void) {
g_test_add_func("/core/bitwriter/be", test_bitwriter_be);
g_test_add_func("/core/bitwriter/le", test_bitwriter_le);
g_test_add_func("/core/bitwriter/largebits-be", test_largebits_be);
g_test_add_func("/core/bitwriter/largebits-le", test_largebits_le);
g_test_add_func("/core/bitwriter/offset-largebits-be", test_offset_largebits_be);
g_test_add_func("/core/bitwriter/offset-largebits-le", test_offset_largebits_le);
g_test_add_func("/core/bitwriter/ints", test_bitwriter_ints);
}
#endif // #ifdef INCLUDE_TESTS

View file

@ -265,6 +265,10 @@ HParseResult* h_parse(const HParser* parser, const uint8_t* input, size_t length
return res;
}
void h_parse_result_free(HParseResult *result) {
h_delete_arena(result->arena);
}
#ifdef INCLUDE_TESTS
#include "test_suite.h"
@ -427,6 +431,7 @@ static void test_action(void) {
g_check_parse_ok(action_, "ab", 2, "(u0x41 u0x42)");
g_check_parse_ok(action_, "AB", 2, "(u0x41 u0x42)");
g_check_parse_failed(action_, "XX", 2);
}
static void test_not_in(void) {

View file

@ -443,6 +443,11 @@ HParser *h_indirect();
*/
void h_bind_indirect(HParser* indirect, HParser* inner);
/**
* Free the memory allocated to an HParseResult when it is no longer needed.
*/
void h_parse_result_free(HParseResult *result);
// Some debugging aids
/**
* Format token into a compact unambiguous form. Useful for parser test cases.

View file

@ -10,8 +10,11 @@ static HParseResult* parse_action(void *env, HParseState *state) {
if (a->p && a->action) {
HParseResult *tmp = h_do_parse(a->p, state);
//HParsedToken *tok = a->action(h_do_parse(a->p, state));
const HParsedToken *tok = a->action(tmp);
return make_result(state, (HParsedToken*)tok);
if(tmp) {
const HParsedToken *tok = a->action(tmp);
return make_result(state, (HParsedToken*)tok);
} else
return NULL;
} else // either the parser's missing or the action's missing
return NULL;
}

View file

@ -19,6 +19,7 @@
#include "test_suite.h"
extern void register_bitreader_tests();
extern void register_bitwriter_tests();
extern void register_parser_tests();
int main(int argc, char** argv) {
@ -26,6 +27,7 @@ int main(int argc, char** argv) {
// register various test suites...
register_bitreader_tests();
register_bitwriter_tests();
register_parser_tests();
g_test_run();