// ---------------------------------------------------------------- static void lrec_reader_csvex_free(void* pvstate) { lrec_reader_csvex_state_t* pstate = pvstate; for (lhmslve_t* pe = pstate->pheader_keepers->phead; pe != NULL; pe = pe->pnext) { header_keeper_t* pheader_keeper = pe->pvvalue; header_keeper_free(pheader_keeper); } pfr_free(pstate->pfr); }
// ---------------------------------------------------------------- static char* test_empty() { byte_reader_t* pbr = string_byte_reader_alloc(); int ok = pbr->popen_func(pbr, NULL, ""); mu_assert_lf(ok == TRUE); peek_file_reader_t* pfr = pfr_alloc(pbr, 7); mu_assert_lf(pfr_peek_char(pfr) == (char)EOF); // char defaults to unsigned on some platforms mu_assert_lf(pfr_read_char(pfr) == (char)EOF); pbr->pclose_func(pbr, NULL); pfr_free(pfr); return NULL; }
// ---------------------------------------------------------------- static void lrec_reader_stdio_csv_free(lrec_reader_t* preader) { lrec_reader_stdio_csv_state_t* pstate = preader->pvstate; for (lhmslve_t* pe = pstate->pheader_keepers->phead; pe != NULL; pe = pe->pnext) { header_keeper_t* pheader_keeper = pe->pvvalue; header_keeper_free(pheader_keeper); } lhmslv_free(pstate->pheader_keepers); pfr_free(pstate->pfr); parse_trie_free(pstate->putf8_bom_parse_trie); parse_trie_free(pstate->pno_dquote_parse_trie); parse_trie_free(pstate->pdquote_parse_trie); rslls_free(pstate->pfields); stdio_byte_reader_free(pstate->pbr); sb_free(pstate->psb); free(pstate->ifs_eof); free(pstate->dquote_irs); free(pstate->dquote_irs2); free(pstate->dquote_ifs); free(pstate); free(preader); }
// ---------------------------------------------------------------- static char* test_non_empty() { byte_reader_t* pbr = string_byte_reader_alloc(); int ok = pbr->popen_func(pbr, NULL, "ab,cde\n" "123,4567\n" ); mu_assert_lf(ok == TRUE); peek_file_reader_t* pfr = pfr_alloc(pbr, 7); pfr_print(pfr); mu_assert_lf(pfr_peek_char(pfr) == 'a'); pfr_print(pfr); mu_assert_lf(pfr_read_char(pfr) == 'a'); pfr_print(pfr); mu_assert_lf(pfr_peek_char(pfr) == 'b'); pfr_print(pfr); mu_assert_lf(pfr_read_char(pfr) == 'b'); pfr_print(pfr); mu_assert_lf(pfr_peek_char(pfr) == ','); pfr_print(pfr); mu_assert_lf(pfr_peek_char(pfr) == ','); pfr_print(pfr); mu_assert_lf(pfr_read_char(pfr) == ','); pfr_print(pfr); pfr_buffer_by(pfr, 5); pfr_print(pfr); pfr_advance_by(pfr, 5); pfr_print(pfr); mu_assert_lf(pfr_read_char(pfr) == '2'); pfr_print(pfr); mu_assert_lf(pfr_peek_char(pfr) == '3'); pfr_print(pfr); mu_assert_lf(pfr_peek_char(pfr) == '3'); pfr_print(pfr); mu_assert_lf(pfr_read_char(pfr) == '3'); pfr_print(pfr); pfr_buffer_by(pfr, 5); pfr_print(pfr); pfr_advance_by(pfr, 5); pfr_print(pfr); mu_assert_lf(pfr_read_char(pfr) == '\n'); pbr->pclose_func(pbr, NULL); pfr_free(pfr); return NULL; }