Ejemplo n.º 1
0
static void
test_To_I64(TestBatchRunner *runner) {
    String *string;

    string = S_get_str("10");
    TEST_TRUE(runner, Str_To_I64(string) == 10, "To_I64");
    DECREF(string);

    string = S_get_str("-10");
    TEST_TRUE(runner, Str_To_I64(string) == -10, "To_I64 negative");
    DECREF(string);

    string = S_get_str("10.");
    TEST_TRUE(runner, Str_To_I64(string) == 10, "To_I64 stops at non-digits");
    DECREF(string);

    string = S_get_str("10A");
    TEST_TRUE(runner, Str_To_I64(string) == 10,
              "To_I64 stops at out-of-range digits");
    DECREF(string);

    string = S_get_str("-JJ");
    TEST_TRUE(runner, Str_BaseX_To_I64(string, 20) == -399,
              "BaseX_To_I64 base 20");
    DECREF(string);
}
Ejemplo n.º 2
0
uint64_t
IxFileNames_extract_gen(String *name) {
    StringIterator *iter = Str_Top(name);

    // Advance past first underscore.  Bail if we run out of string or if we
    // encounter a NULL.
    while (1) {
        int32_t code_point = StrIter_Next(iter);
        if (code_point == STR_OOB) { return 0; }
        else if (code_point == '_') { break; }
    }

    String *num_string = StrIter_crop(iter, NULL);
    uint64_t retval = (uint64_t)Str_BaseX_To_I64(num_string, 36);

    DECREF(num_string);
    DECREF(iter);
    return retval;
}
Ejemplo n.º 3
0
int64_t
Str_To_I64_IMP(String *self) {
    return Str_BaseX_To_I64(self, 10);
}