コード例 #1
0
END_TEST

/* Interning not entirely sorted out yet. Not sure
 * how it will all work */
/* UPDATE: Interning now based on a global khash table */
START_TEST (test_symbol_intern)
{
    XR a = xr_sym("identical");
    XR b = xr_sym("identical");

    fail_unless(a == b);
}
コード例 #2
0
ファイル: symbol.c プロジェクト: nrhtr/elixr
XR xr_sym_n(const char *str, size_t len)
{
    char buf[64];
    strncpy(buf, str, 64);
    buf[len] = '\0';

    return xr_sym(buf);
}
コード例 #3
0
END_TEST

START_TEST (test_symbol_string)
{
    XR sym = xr_sym("symbol");
    XR str = send(sym, s_string);

    fail_unless(qsend(str, "eq", xr_str("symbol")) == VAL_TRUE);
}
コード例 #4
0
int main(int argc, char **argv)
{
    xr_init();

    bool eval = false;
    bool verbose = false;

    int c;
    while ((c = getopt(argc, argv, "ev")) != -1) {
        switch (c) {
        case 'e':
            eval = true;
            break;
        case 'v':
            verbose = true;
            break;
        }
    }

    XR obj_list;

    if (optind < argc) {
        char *file = argv[optind];
        obj_list = xr_parse_dump_file(file);
    } else {
        obj_list = xr_parse_dump_from_stdin();
    }

    if (verbose)
        log("# Objs: %ld\n", xrListLen(obj_list));
    
    XR root_mt = xrMTable(root);
    assert(root_mt);
    
    /* Lookup the "init" method */
    XR init_m = xrClosureAt(send(root_mt, s_at, xr_sym("init")), 0);

    if (verbose)
        qsend(init_m, "show");

    if (!eval) {
        FILE *fp = fopen("blahtestsymfile", "w");
        qsend(root, "pack", fp);
        fclose(fp);
        return 0;
    }

    if (verbose)
        log("##############\nRunning VM\n##############\n");

    xr_run_method(init_m);

    return 0;
}
コード例 #5
0
END_TEST

/*
START_TEST (test_symbol_pack_unpack)
{
    XR foo = xr_sym("foo");
    FILE *fp = fopen("test_symbol_pack.tmp", "w");
    qsend(
}
END_TEST
*/

START_TEST (test_symbol_literal)
{
	XR sym = xr_sym("symbol");
	XR lit = send(sym, s_literal);

	fail_unless(qsend(lit, "eq", xr_str(":symbol")) == VAL_TRUE);
}