コード例 #1
0
ファイル: test_io_textfile.c プロジェクト: refu-lang/rfbase
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, ""));
}
コード例 #2
0
ファイル: test_io_textfile.c プロジェクト: refu-lang/rfbase
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, ""));
}
コード例 #3
0
}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
コード例 #4
0
}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
コード例 #5
0
}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