void setup_textfile_invalid_args_tests() { rf_init(LOG_TARGET_FILE, "refuclib.log", LOG_DEBUG, RF_DEFAULT_TS_MBUFF_INITIAL_SIZE, RF_DEFAULT_TS_SBUFF_INITIAL_SIZE); ck_assert(rf_stringx_init_buff(&g_buff, 512, "")); ck_assert(rf_stringx_init_buff(&g_fname, 64, "")); }
void setup_textfile_tests() { rf_init(LOG_TARGET_STDOUT, NULL, LOG_DEBUG, RF_DEFAULT_TS_MBUFF_INITIAL_SIZE, RF_DEFAULT_TS_SBUFF_INITIAL_SIZE); ck_assert(rf_stringx_init_buff(&g_buff, 512, "")); ck_assert(rf_stringx_init_buff(&g_fname, 64, "")); }
}END_TEST START_TEST(test_invalid_stringx_traversal) { static const struct RFstring sub3 = RF_STRING_STATIC_INIT("ain't there"); static const struct RFstring sub4 = RF_STRING_STATIC_INIT("notthere"); struct RFstringx s; struct RFstringx str_buff; struct RFstring res_str_bad; ck_assert(rf_stringx_init_buff(&str_buff, 1024, "")); ck_assert( rf_stringx_init( &s, "中国共産党総書記に習近平氏 新指導部の7人発表") ); ck_assert(RF_FAILURE == rf_stringx_move_after(&s, NULL, &str_buff, RF_STRINGX_ARGUMENT)); ck_assert(RF_FAILURE == rf_stringx_move_after(&s, &sub3, &str_buff, RF_STRINGX_ARGUMENT)); ck_assert(!rf_stringx_move_afterv(&s, NULL, 0, 2, &sub3, &sub4)); ck_assert(!rf_stringx_move_after_pair(&s, NULL, &sub3, &res_str_bad, 0, 2)); ck_assert(!rf_stringx_move_after_pair(&s, &sub4, NULL, &res_str_bad, 0, 2)); rf_stringx_deinit(&s); rf_stringx_deinit(&str_buff); }END_TEST
}END_TEST START_TEST(test_stringx_skip_chars) { struct RFstringx s; unsigned int bytes; unsigned int line_count; static const struct RFstring s1 = RF_STRING_STATIC_INIT(" \t something"); static const struct RFstring chars1 = RF_STRING_STATIC_INIT(" \t"); static const struct RFstring s2 = RF_STRING_STATIC_INIT( " ブ ブ ラ something_else"); static const struct RFstring chars2 = RF_STRING_STATIC_INIT(" ブラ"); static const struct RFstring s3 = RF_STRING_STATIC_INIT( " \n \n \t foo"); static const struct RFstring chars3 = RF_STRING_STATIC_INIT(" \t\n"); static const struct RFstring s4 = RF_STRING_STATIC_INIT( "not skipping \t \n \n"); ck_assert(rf_stringx_init_buff(&s, 1024, "")); ck_assert(rf_stringx_assign(&s, &s1)); ck_assert_int_eq(6, rf_stringx_skip_chars(&s, &chars1, 0, &bytes, 0)); ck_assert_int_eq(6, bytes); ck_assert_rf_str_eq_cstr(&s, "something"); ck_assert(rf_stringx_assign(&s, &s2)); ck_assert_int_eq(7, rf_stringx_skip_chars(&s, &chars2, 0, &bytes, 0)); ck_assert_int_eq(13, bytes); ck_assert_rf_str_eq_cstr(&s, "something_else"); ck_assert(rf_stringx_assign(&s, &s3)); ck_assert_int_eq(8, rf_stringx_skip_chars(&s, &chars3, 0, &bytes, &line_count)); ck_assert_int_eq(8, bytes); ck_assert_int_eq(2, line_count); ck_assert_rf_str_eq_cstr(&s, "foo"); ck_assert(rf_stringx_assign(&s, &s3)); ck_assert_int_eq(3, rf_stringx_skip_chars(&s, &chars3, rf_string_data(&s) + 2, &bytes, &line_count)); ck_assert_int_eq(3, bytes); ck_assert_int_eq(1, line_count); ck_assert_rf_str_eq_cstr(&s," \n \t foo"); ck_assert(rf_stringx_assign(&s, &s3)); ck_assert_int_eq(1, rf_stringx_skip_chars(&s, &chars3, rf_string_data(&s), &bytes, &line_count)); ck_assert_int_eq(1, bytes); ck_assert_int_eq(0, line_count); ck_assert_rf_str_eq_cstr(&s,"\n \n \t foo"); ck_assert(rf_stringx_assign(&s, &s4)); ck_assert_int_eq(0, rf_stringx_skip_chars(&s, &chars3, 0, &bytes, &line_count)); ck_assert_int_eq(0, bytes); ck_assert_int_eq(0, line_count); rf_stringx_deinit(&s); }END_TEST
}END_TEST START_TEST(test_stringx_move_afterv) { unsigned int saved_index; struct RFstringx s; struct RFstringx str_buff; struct RFstring dependent_s; static const struct RFstring sub1 = RF_STRING_STATIC_INIT(","); static const struct RFstring sub2 = RF_STRING_STATIC_INIT("39"); ck_assert(rf_stringx_init_buff(&str_buff, 1024, "")); ck_assert( rf_stringx_init( &s, "Με την κεντρική εκδήλωση, μετά τις 2 το " "μεσημέρι, και την " "πορεία προς την αμερικανική πρεσβεία, " "περίπου μία ώρα " "αργότερα, κορυφώνονται το Σάββατο οι " "εκδηλώσεις για την " "39η επέτειο από την Εξέγερση του " "Πολυτεχνείου. Λόγω των " "εκδηλώσεων, θα ισχύσουν έκτακτες " "κυκλοφοριακές ρυθμίσεις " "έως και το πρωί της Κυριακής." ) ); rf_stringx_move_forward(&s, 96); ck_assert_rf_str_eq_cstr( &s, "περίπου μία ώρα αργότερα, κορυφώνονται το " "Σάββατο οι " "εκδηλώσεις για την 39η επέτειο από την Εξέγερση " "του Πολυτεχνείου. Λόγω των εκδηλώσεων, θα " "ισχύσουν " "έκτακτες κυκλοφοριακές ρυθμίσεις έως και το πρωί " "της Κυριακής." ); rf_stringx_move_back(&s, 46); ck_assert_rf_str_eq_cstr( &s, "και την πορεία προς την αμερικανική πρεσβεία, " "περίπου" " μία ώρα αργότερα, κορυφώνονται το Σάββατο οι " "εκδηλώσεις για την 39η επέτειο από την Εξέγερση " "του Πολυτεχνείου. Λόγω των εκδηλώσεων, θα " "ισχύσουν " "έκτακτες κυκλοφοριακές ρυθμίσεις έως και " "το πρωί " "της Κυριακής." ); saved_index = s.bIndex; ck_assert(rf_stringx_move_afterv(&s, &str_buff, 0, 2, &sub1, &sub2)); ck_assert_rf_str_eq_cstr( &s, " περίπου μία ώρα αργότερα, κορυφώνονται " "το Σάββατο οι" " εκδηλώσεις για την 39η επέτειο από " "την Εξέγερση του " "Πολυτεχνείου. Λόγω των εκδηλώσεων, θα ισχύσουν " "έκτακτες κυκλοφοριακές ρυθμίσεις έως και " "το πρωί της Κυριακής." ); ck_assert_rf_str_eq_cstr( &str_buff, "και την πορεία προς την αμερικανική πρεσβεία" ); /* dependent string */ rf_stringx_move_to_index(&s, saved_index); ck_assert(rf_stringx_move_afterv(&s, &dependent_s, RF_STRING_DEPENDENT, 2, &sub1, &sub2)); ck_assert_rf_str_eq_cstr( &s, " περίπου μία ώρα αργότερα, κορυφώνονται " "το Σάββατο οι" " εκδηλώσεις για την 39η επέτειο από " "την Εξέγερση του " "Πολυτεχνείου. Λόγω των εκδηλώσεων, θα ισχύσουν " "έκτακτες κυκλοφοριακές ρυθμίσεις έως και " "το πρωί της Κυριακής." ); ck_assert_rf_str_eq_cstr( &dependent_s, "και την πορεία προς την αμερικανική πρεσβεία" ); rf_stringx_deinit(&s); rf_stringx_deinit(&str_buff); }END_TEST