Compare commits
No commits in common. "47095a868e4aa52732faa54ebb1cd7bb74185659" and "f97f364681cbc69939522f449093496cef8dcc0a" have entirely different histories.
47095a868e
...
f97f364681
File diff suppressed because it is too large
Load Diff
|
@ -201,7 +201,7 @@ easycsv_init_errormsg(const char *fp,
|
||||||
csv->start = clock();
|
csv->start = clock();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
easycsv *csv = malloc(sizeof(easycsv));
|
easycsv *csv = malloc(sizeof *csv);
|
||||||
csv->mode = mode;
|
csv->mode = mode;
|
||||||
csv->_priv = _easycsv_priv_init(fp, mode, error);
|
csv->_priv = _easycsv_priv_init(fp, mode, error);
|
||||||
|
|
||||||
|
@ -687,28 +687,16 @@ _easycsv_priv_init(const char *fp,
|
||||||
const EASYCSV_MODE mode,
|
const EASYCSV_MODE mode,
|
||||||
const EASYCSV_ERRORMSG error)
|
const EASYCSV_ERRORMSG error)
|
||||||
{
|
{
|
||||||
_easycsv *_priv = malloc(sizeof(_easycsv));
|
_easycsv *_priv = malloc(sizeof *_priv);
|
||||||
|
memset(_priv, 0, sizeof(*_priv)); // set all members to NULL or 0
|
||||||
_priv->file = NULL;
|
|
||||||
_priv->temp = NULL;
|
|
||||||
_priv->fp = NULL;
|
|
||||||
_priv->tmpfp = NULL;
|
|
||||||
_priv->rows = 0;
|
|
||||||
_priv->cols = 0;
|
|
||||||
#ifdef EASYCSV_DEBUG
|
|
||||||
_priv->start = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
_priv->error = error;
|
_priv->error = error;
|
||||||
|
|
||||||
/* Open file according to mode */
|
/* Open file according to mode */
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case EASYCSV_R: {
|
case EASYCSV_R:
|
||||||
_priv->file = fopen(fp, "r");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case EASYCSV_W: {
|
case EASYCSV_W: {
|
||||||
_priv->file = fopen(fp, "w");
|
_priv->file = fopen(fp, "r");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
|
@ -716,7 +704,6 @@ _easycsv_priv_init(const char *fp,
|
||||||
_easycsv_priv_free(_priv);
|
_easycsv_priv_free(_priv);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (_priv->file == NULL)
|
if (_priv->file == NULL)
|
||||||
{
|
{
|
||||||
|
@ -730,21 +717,24 @@ _easycsv_priv_init(const char *fp,
|
||||||
/* Allocate memory for char* */
|
/* Allocate memory for char* */
|
||||||
_priv->fp = malloc(stfp + 1); // + 1 for null
|
_priv->fp = malloc(stfp + 1); // + 1 for null
|
||||||
|
|
||||||
strcpy(_priv->fp, fp);
|
strncpy(_priv->fp, fp, stfp);
|
||||||
|
|
||||||
/* Calculate rows and cols if file exists */
|
/* Calculate rows and cols if file exists */
|
||||||
if (access(_priv->fp, F_OK) == 0) {
|
if (access(_priv->fp, F_OK) == 0) {
|
||||||
_priv->rows = _easycsv_rows(_priv, mode);
|
_priv->rows = _easycsv_rows(_priv, mode);
|
||||||
_priv->cols = _easycsv_columns(_priv, mode);
|
_priv->cols = _easycsv_columns(_priv, mode);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
_priv->rows = 0;
|
||||||
|
_priv->cols = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (mode == EASYCSV_W) {
|
if (mode == EASYCSV_W) {
|
||||||
|
|
||||||
/* csv->tmpfp = malloc(16 + stfp + 1); */
|
/* csv->tmpfp = malloc(16 + stfp + 1); */
|
||||||
/* strncpy(csv->tmpfp, prefix, 16); */
|
/* strncpy(csv->tmpfp, prefix, 16); */
|
||||||
|
|
||||||
/* strncat(csv->tmpfp, fp, stfp); */
|
/* strncat(csv->tmpfp, fp, stfp); */
|
||||||
|
|
||||||
do {
|
do {
|
||||||
/* Write to temporary file */
|
/* Write to temporary file */
|
||||||
unsigned int i = 1;
|
unsigned int i = 1;
|
||||||
|
@ -794,7 +784,8 @@ _easycsv_priv_init(const char *fp,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
return _priv;
|
return _priv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -901,7 +892,7 @@ _easycsv_columns(_easycsv *_priv,
|
||||||
3. if >1 column, n commas = n+1 columns
|
3. if >1 column, n commas = n+1 columns
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int col = 1;
|
unsigned int col = 1;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
while ((c = fgetc(_priv->file)) != '\n') {
|
while ((c = fgetc(_priv->file)) != '\n') {
|
||||||
|
|
|
@ -4,59 +4,28 @@
|
||||||
static const char SAMPLE1_PATH[] = "samples/1.csv";
|
static const char SAMPLE1_PATH[] = "samples/1.csv";
|
||||||
static const char SAMPLE2_PATH[] = "samples/2.csv";
|
static const char SAMPLE2_PATH[] = "samples/2.csv";
|
||||||
|
|
||||||
START_TEST(test_easycsv_init_read_1)
|
START_TEST(test_easycsv_init_read)
|
||||||
{
|
{
|
||||||
easycsv *csv = NULL;
|
easycsv *csv = NULL;
|
||||||
csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R);
|
csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R);
|
||||||
ck_assert_ptr_nonnull(csv);
|
ck_assert_ptr_nonnull(csv);
|
||||||
easycsv_free(csv);
|
easycsv_free(csv);
|
||||||
}
|
|
||||||
|
|
||||||
START_TEST(test_easycsv_init_read_2)
|
|
||||||
{
|
|
||||||
easycsv *csv = NULL;
|
|
||||||
csv = easycsv_init(SAMPLE2_PATH, EASYCSV_R);
|
csv = easycsv_init(SAMPLE2_PATH, EASYCSV_R);
|
||||||
ck_assert_ptr_null(csv);
|
ck_assert_ptr_nonnull(csv);
|
||||||
easycsv_free(csv);
|
easycsv_free(csv);
|
||||||
}
|
}
|
||||||
|
|
||||||
START_TEST(test_easycsv_init_write_1)
|
START_TEST(test_easycsv_init_write)
|
||||||
{
|
{
|
||||||
easycsv *csv = NULL;
|
easycsv *csv = NULL;
|
||||||
csv = easycsv_init(SAMPLE1_PATH, EASYCSV_W);
|
csv = easycsv_init(SAMPLE1_PATH, EASYCSV_W);
|
||||||
ck_assert_ptr_nonnull(csv);
|
ck_assert_ptr_nonnull(csv);
|
||||||
easycsv_free(csv);
|
easycsv_free(csv);
|
||||||
}
|
|
||||||
|
|
||||||
START_TEST(test_easycsv_init_write_2)
|
|
||||||
{
|
|
||||||
easycsv *csv = NULL;
|
|
||||||
csv = easycsv_init(SAMPLE2_PATH, EASYCSV_W);
|
csv = easycsv_init(SAMPLE2_PATH, EASYCSV_W);
|
||||||
ck_assert_ptr_nonnull(csv);
|
ck_assert_ptr_nonnull(csv);
|
||||||
easycsv_free(csv);
|
easycsv_free(csv);
|
||||||
}
|
}
|
||||||
|
|
||||||
Suite*
|
|
||||||
easycsv_constructor_suite(void)
|
|
||||||
{
|
|
||||||
Suite *s;
|
|
||||||
TCase *tc_read, *tc_write;
|
|
||||||
|
|
||||||
s = suite_create ("constructor");
|
|
||||||
tc_read = tcase_create ("read mode");
|
|
||||||
tc_write = tcase_create ("write mode");
|
|
||||||
|
|
||||||
tcase_add_test(tc_read, test_easycsv_init_read_1);
|
|
||||||
tcase_add_test(tc_read, test_easycsv_init_read_2);
|
|
||||||
tcase_add_test(tc_write, test_easycsv_init_write_1);
|
|
||||||
tcase_add_test(tc_write, test_easycsv_init_write_2);
|
|
||||||
|
|
||||||
suite_add_tcase(s, tc_read);
|
|
||||||
//suite_add_tcase(s, tc_write);
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
START_TEST(test_easycsv_printcolumns)
|
START_TEST(test_easycsv_printcolumns)
|
||||||
{
|
{
|
||||||
easycsv *csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R);
|
easycsv *csv = easycsv_init(SAMPLE1_PATH, EASYCSV_R);
|
||||||
|
@ -81,24 +50,46 @@ START_TEST(test_easycsv_readcolumnvalue)
|
||||||
easycsv_free(csv);
|
easycsv_free(csv);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Suite*
|
||||||
|
easycsv_constructor_suite(void)
|
||||||
|
{
|
||||||
|
Suite *s;
|
||||||
|
TCase *tc_init;
|
||||||
|
|
||||||
|
s = suite_create ("constructor");
|
||||||
|
tc_init = tcase_create ("basic constructor");
|
||||||
|
|
||||||
|
tcase_add_test(tc_init, test_easycsv_init_read);
|
||||||
|
tcase_add_test(tc_init, test_easycsv_init_write);
|
||||||
|
suite_add_tcase(s, tc_init);
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
Suite*
|
||||||
|
easycsv_print_suite(void)
|
||||||
|
{
|
||||||
|
Suite *s;
|
||||||
|
TCase *tc_col, *tc_row;
|
||||||
|
s = suite_create ("print");
|
||||||
|
tc_col = tcase_create ("columns");
|
||||||
|
tc_row = tcase_create ("rows");
|
||||||
|
tcase_add_test(tc_col, test_easycsv_printcolumns);
|
||||||
|
tcase_add_test(tc_row, test_easycsv_printrows);
|
||||||
|
suite_add_tcase(s, tc_col);
|
||||||
|
suite_add_tcase(s, tc_row);
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
Suite*
|
Suite*
|
||||||
easycsv_read_suite(void)
|
easycsv_read_suite(void)
|
||||||
{
|
{
|
||||||
Suite *s;
|
Suite *s;
|
||||||
TCase *tc_readcolumnvalue, *tc_col, *tc_row;
|
TCase *tc_readcolumnvalue;
|
||||||
s = suite_create ("read");
|
s = suite_create ("read");
|
||||||
tc_readcolumnvalue = tcase_create ("readcolumnvalue");
|
tc_readcolumnvalue = tcase_create ("readcolumnvalue");
|
||||||
tcase_add_test(tc_readcolumnvalue, test_easycsv_readcolumnvalue);
|
tcase_add_test(tc_readcolumnvalue, test_easycsv_readcolumnvalue);
|
||||||
|
|
||||||
tc_col = tcase_create ("columns");
|
|
||||||
tcase_add_test(tc_col, test_easycsv_printcolumns);
|
|
||||||
|
|
||||||
tc_row = tcase_create ("rows");
|
|
||||||
tcase_add_test(tc_row, test_easycsv_printrows);
|
|
||||||
|
|
||||||
suite_add_tcase(s, tc_readcolumnvalue);
|
|
||||||
suite_add_tcase(s, tc_col);
|
|
||||||
suite_add_tcase(s, tc_row);
|
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -110,6 +101,7 @@ main(void)
|
||||||
SRunner *sr;
|
SRunner *sr;
|
||||||
|
|
||||||
sr = srunner_create(easycsv_constructor_suite());
|
sr = srunner_create(easycsv_constructor_suite());
|
||||||
|
srunner_add_suite(sr, easycsv_print_suite());
|
||||||
srunner_add_suite(sr, easycsv_read_suite());
|
srunner_add_suite(sr, easycsv_read_suite());
|
||||||
|
|
||||||
srunner_run_all(sr, CK_VERBOSE);
|
srunner_run_all(sr, CK_VERBOSE);
|
||||||
|
|
Loading…
Reference in New Issue