diff --git a/c/containers/join_bucket_keeper.c b/c/containers/join_bucket_keeper.c index fe54195b0..e9caeeebd 100644 --- a/c/containers/join_bucket_keeper.c +++ b/c/containers/join_bucket_keeper.c @@ -214,7 +214,7 @@ static void join_bucket_keeper_fill(join_bucket_keeper_t* pkeeper) { static void join_bucket_keeper_advance_to(join_bucket_keeper_t* pkeeper, slls_t* pright_field_values, sllv_t** ppbucket_paired, sllv_t** ppbucket_left_unpaired) { - if (pkeeper->pbucket->was_paired) { + if (!pkeeper->pbucket->was_paired) { *ppbucket_left_unpaired = pkeeper->pbucket->precords; } else { sllv_free(pkeeper->pbucket->precords); diff --git a/c/containers/mixutil.c b/c/containers/mixutil.c index 402260491..6c2262f53 100644 --- a/c/containers/mixutil.c +++ b/c/containers/mixutil.c @@ -39,3 +39,17 @@ hss_t* hss_from_slls(slls_t* plist) { hss_add(pset, pe->value); return pset; } + +// ---------------------------------------------------------------- +void lrec_print_list(sllv_t* plist) { + for (sllve_t* pe = plist->phead; pe != NULL; pe = pe->pnext) { + lrec_print(pe->pvdata); + } +} + +void lrec_print_list_with_prefix(sllv_t* plist, char* prefix) { + for (sllve_t* pe = plist->phead; pe != NULL; pe = pe->pnext) { + printf("%s", prefix); + lrec_print(pe->pvdata); + } +} diff --git a/c/containers/mixutil.h b/c/containers/mixutil.h index 61176448d..7ac34adad 100644 --- a/c/containers/mixutil.h +++ b/c/containers/mixutil.h @@ -7,4 +7,6 @@ slls_t* mlr_keys_from_record(lrec_t* prec); slls_t* mlr_selected_values_from_record(lrec_t* prec, slls_t* pselected_field_names); hss_t* hss_from_slls(slls_t* plist); +void lrec_print_list(sllv_t* plist); +void lrec_print_list_with_prefix(sllv_t* plist, char* prefix); #endif // MIXUTIL_H diff --git a/c/containers/test_join_bucket_keeper.c b/c/containers/test_join_bucket_keeper.c index 6b21ce6c2..e8af95b04 100644 --- a/c/containers/test_join_bucket_keeper.c +++ b/c/containers/test_join_bucket_keeper.c @@ -6,6 +6,7 @@ #include "containers/sllv.h" #include "input/lrec_readers.h" #include "containers/join_bucket_keeper.h" +#include "containers/mixutil.h" #ifdef __TEST_JOIN_BUCKET_KEEPER_MAIN__ int tests_run = 0; @@ -35,6 +36,11 @@ static void set_up( *ppreader = preader; } +// xxx temp fix me +//static char* assert_null_list(sllv_t* plist, char* file, int line) { +// mu_assert_lf_spec(plist == NULL, file, line); +//} + // ---------------------------------------------------------------- // xxx cases: // @@ -49,9 +55,6 @@ static void set_up( // * double-key left, right between then > // * double-key left, right between then == then > - - - // ---------------------------------------------------------------- static char* test1() { printf("test1 enter\n"); @@ -69,11 +72,13 @@ static char* test1() { sllv_t* pbucket_paired; sllv_t* pbucket_left_unpaired; - char* rval = "0"; - slls_t* pright_field_values = slls_alloc(); - slls_add_no_free(pright_field_values, rval); + slls_t* pright_field_values = slls_single_no_free("0"); + join_bucket_keeper_emit(pkeeper, pright_field_values, &pbucket_paired, &pbucket_left_unpaired); - printf("match %s:\n", rval); + + printf("match %s:\n", pright_field_values->phead->value); + // xxx fcn for null-and-dump; __FILE__/__LINE__ + // xxx fcn for spec-len-and-dump; __FILE__/__LINE__ mu_assert_lf(pbucket_paired == NULL); mu_assert_lf(pbucket_left_unpaired == NULL); @@ -83,10 +88,8 @@ static char* test1() { mu_assert_lf(pbucket_left_unpaired != NULL); printf("#lunp=%d\n", pbucket_left_unpaired->length); mu_assert_lf(pbucket_left_unpaired->length == 6); - for (sllve_t* pe = pbucket_left_unpaired->phead; pe != NULL; pe = pe->pnext) { - lrec_t* prec = pe->pvdata; - lrec_print(prec); - } + // xxx make a util fcn for this + lrec_print_list_with_prefix(pbucket_left_unpaired, " "); printf("test1 exit\n"); printf("\n"); @@ -104,26 +107,24 @@ static char* test2() { void* pvhandle = NULL; // xxx move these into the jbk obj? context_t* pctx = NULL; // xxx revisit - join_bucket_keeper_t* pkeeper = join_bucket_keeper_alloc_from_reader(preader, pvhandle, pctx, - pleft_field_names); + join_bucket_keeper_t* pkeeper = join_bucket_keeper_alloc_from_reader(preader, pvhandle, pctx, pleft_field_names); sllv_t* pbucket_paired; sllv_t* pbucket_left_unpaired; - char* rval = "6"; - slls_t* pright_field_values = slls_alloc(); - slls_add_no_free(pright_field_values, rval); + slls_t* pright_field_values = slls_single_no_free("6"); + join_bucket_keeper_emit(pkeeper, pright_field_values, &pbucket_paired, &pbucket_left_unpaired); - printf("match %s:\n", rval); + + printf("match %s:\n", pright_field_values->phead->value); mu_assert_lf(pbucket_paired == NULL); + printf(" null\n"); + + printf("unpaired %s:\n", pright_field_values->phead->value); mu_assert_lf(pbucket_left_unpaired != NULL); printf("#lunp=%d\n", pbucket_left_unpaired->length); + lrec_print_list_with_prefix(pbucket_left_unpaired, " "); mu_assert_lf(pbucket_left_unpaired->length == 6); - mu_assert_lf(pbucket_left_unpaired == NULL); - for (sllve_t* pe = pbucket_left_unpaired->phead; pe != NULL; pe = pe->pnext) { - lrec_t* prec = pe->pvdata; - lrec_print(prec); - } printf("test2 exit\n"); printf("\n"); @@ -147,66 +148,66 @@ static char* test3() { sllv_t* pbucket_paired; sllv_t* pbucket_left_unpaired; - slls_t* pright_field_values = slls_alloc(); - slls_add_no_free(pright_field_values, "0"); + slls_t* pright_field_values = slls_single_no_free("0"); + join_bucket_keeper_emit(pkeeper, pright_field_values, &pbucket_paired, &pbucket_left_unpaired); - printf("match 0:\n"); + + printf("match %s:\n", pright_field_values->phead->value); mu_assert_lf(pbucket_paired == NULL); mu_assert_lf(pbucket_left_unpaired == NULL); + printf(" null\n"); + + pright_field_values = slls_single_no_free("1"); - pright_field_values = slls_alloc(); - slls_add_no_free(pright_field_values, "1"); join_bucket_keeper_emit(pkeeper, pright_field_values, &pbucket_paired, &pbucket_left_unpaired); - printf("match 2:\n"); + + printf("match %s:\n", pright_field_values->phead->value); mu_assert_lf(pbucket_paired != NULL); mu_assert_lf(pbucket_paired->length == 2); + lrec_print_list_with_prefix(pbucket_paired, " "); mu_assert_lf(pbucket_left_unpaired == NULL); - for (sllve_t* pe = pbucket_paired->phead; pe != NULL; pe = pe->pnext) { - lrec_t* prec = pe->pvdata; - lrec_print(prec); - } printf("test3 exit\n"); printf("\n"); return 0; } -// ---------------------------------------------------------------- -static char* test4() { - printf("test4 enter\n"); - - slls_t* pleft_field_names; - lrec_reader_t* preader; - set_up(&pleft_field_names, &preader); - - void* pvhandle = NULL; // xxx move these into the jbk obj? - context_t* pctx = NULL; // xxx revisit - - join_bucket_keeper_t* pkeeper = join_bucket_keeper_alloc_from_reader(preader, pvhandle, pctx, - pleft_field_names); - - sllv_t* pbucket_paired; - sllv_t* pbucket_left_unpaired; - - slls_t* pright_field_values = slls_alloc(); - slls_add_no_free(pright_field_values, "2"); - - join_bucket_keeper_emit(pkeeper, pright_field_values, &pbucket_paired, &pbucket_left_unpaired); - mu_assert_lf(pbucket_paired == NULL); - mu_assert_lf(pbucket_left_unpaired != NULL); - mu_assert_lf(pbucket_left_unpaired->length == 2); - - printf("test4 exit\n"); - printf("\n"); - return 0; -} +//// ---------------------------------------------------------------- +//static char* test4() { +// printf("test4 enter\n"); +// +// slls_t* pleft_field_names; +// lrec_reader_t* preader; +// set_up(&pleft_field_names, &preader); +// +// void* pvhandle = NULL; // xxx move these into the jbk obj? +// context_t* pctx = NULL; // xxx revisit +// +// join_bucket_keeper_t* pkeeper = join_bucket_keeper_alloc_from_reader(preader, pvhandle, pctx, +// pleft_field_names); +// +// sllv_t* pbucket_paired; +// sllv_t* pbucket_left_unpaired; +// +// slls_t* pright_field_values = slls_alloc(); +// slls_add_no_free(pright_field_values, "2"); +// +// join_bucket_keeper_emit(pkeeper, pright_field_values, &pbucket_paired, &pbucket_left_unpaired); +// mu_assert_lf(pbucket_paired == NULL); +// mu_assert_lf(pbucket_left_unpaired != NULL); +// mu_assert_lf(pbucket_left_unpaired->length == 2); +// +// printf("test4 exit\n"); +// printf("\n"); +// return 0; +//} // ================================================================ static char * run_all_tests() { mu_run_test(test1); mu_run_test(test2); mu_run_test(test3); - mu_run_test(test4); + // xxx temp mu_run_test(test4); return 0; } diff --git a/c/lib/minunit.h b/c/lib/minunit.h index 17eff2e3b..cf54b6a20 100644 --- a/c/lib/minunit.h +++ b/c/lib/minunit.h @@ -8,6 +8,8 @@ #define MU_STRINGIFY_2(x) #x #define MU_STRINGIFY_1(x) MU_STRINGIFY_2(x) +// xxx temp #define mu_assert_lf_spec(test, file, line) mu_assert(file " line " MU_STRINGIFY_1(line), test) + #define mu_assert_lf(test) mu_assert(__FILE__ " line " MU_STRINGIFY_1(__LINE__), test) #define mu_assert(message, test) do { assertions_run++; if (!(test)) {assertions_failed++; return message;} } while (0)