コード例 #1
0
ファイル: sky_lua_tests.c プロジェクト: fxstein/sky
int test_sky_lua_generate_header() {
    importtmp("tests/fixtures/sky_lua/0/data.json");
    sky_table *table = sky_table_create();
    table->path = bfromcstr("tmp");
    sky_table_open(table);

    struct tagbstring source = bsStatic(
        "function aggregate(event)\n"
        "  label = event:first_name() .. ' ' .. event:last_name()\n"
        "  return event.x + event.y\n"
        "end\n"
    );
    bstring event_decl = NULL;
    bstring event_metatype = NULL;
    bstring init_descriptor_func = NULL;
    int rc = sky_lua_generate_event_info(&source, table->property_file, &event_decl, &event_metatype, &init_descriptor_func);
    mu_assert_int_equals(rc, 0);
    mu_assert_bstring(event_decl,
        "typedef struct {\n"
        "  int64_t ts;\n"
        "  uint32_t timestamp;\n"
        "  uint16_t action_id;\n"
        "  sky_string_t _first_name;\n"
        "  sky_string_t _last_name;\n"
        "  int32_t x;\n"
        "  int32_t y;\n"
        "} sky_lua_event_t;"
    );
    mu_assert_bstring(event_metatype,
        "ffi.metatype('sky_lua_event_t', {\n"
        "  __index = {\n"
        "    first_name = function(event) return ffi.string(event._first_name.data, event._first_name.length) end,\n"
        "    last_name = function(event) return ffi.string(event._last_name.data, event._last_name.length) end,\n"
        "    x = function(event) return event.x end,\n"
        "    y = function(event) return event.y end,\n"
        "  }\n"
        "})\n"
    );
    mu_assert_bstring(init_descriptor_func,
        "function sky_init_descriptor(_descriptor)\n"
        "  descriptor = ffi.cast('sky_data_descriptor_t*', _descriptor)\n"
        "  descriptor:set_data_sz(ffi.sizeof('sky_lua_event_t'));\n"
        "  descriptor:set_ts_offset(ffi.offsetof('sky_lua_event_t', 'ts'));\n"
        "  descriptor:set_timestamp_offset(ffi.offsetof('sky_lua_event_t', 'timestamp'));\n"
        "  descriptor:set_action_id_offset(ffi.offsetof('sky_lua_event_t', 'action_id'));\n"
        "  descriptor:set_property(4, ffi.offsetof('sky_lua_event_t', '_first_name'), 1);\n"
        "  descriptor:set_property(5, ffi.offsetof('sky_lua_event_t', '_last_name'), 1);\n"
        "  descriptor:set_property(2, ffi.offsetof('sky_lua_event_t', 'x'), 2);\n"
        "  descriptor:set_property(3, ffi.offsetof('sky_lua_event_t', 'y'), 2);\n"
        "end\n"
    );
    bdestroy(event_decl);
    bdestroy(event_metatype);
    bdestroy(init_descriptor_func);
    sky_table_free(table);
    return 0;
}
コード例 #2
0
ファイル: message_header_tests.c プロジェクト: emiddleton/sky
int test_sky_message_header_unpack() {
    FILE *file = fopen("tests/fixtures/message_header/0/message", "r");
    sky_message_header *header = sky_message_header_create();
    mu_assert_bool(sky_message_header_unpack(header, file) == 0);
    fclose(file);

    mu_assert_int64_equals(header->version, 1LL);
    mu_assert_bstring(header->name, "eadd");
    mu_assert_bstring(header->table_name, "bar");
    sky_message_header_free(header);
    return 0;
}
コード例 #3
0
ファイル: action_file_tests.c プロジェクト: fxstein/sky
int test_sky_action_file_path() {
    int rc;
    struct tagbstring path = bsStatic("/dev/null");

    sky_action_file *action_file = sky_action_file_create();
    rc = sky_action_file_set_path(action_file, &path);
    mu_assert_int_equals(rc, 0);
    mu_assert_bstring(action_file->path, "/dev/null");
    
    bstring ret;
    rc = sky_action_file_get_path(action_file, &ret);
    mu_assert_int_equals(rc, 0);
    mu_assert_bstring(ret, "/dev/null");

    sky_action_file_free(action_file);
    bdestroy(ret);
    return 0;
}
コード例 #4
0
ファイル: peach_message_tests.c プロジェクト: dasfaha/sky
int test_sky_peach_message_unpack() {
    FILE *file = fopen("tests/fixtures/peach_message/0/message", "r");
    sky_peach_message *message = sky_peach_message_create();
    mu_assert_bool(sky_peach_message_unpack(message, file) == 0);
    fclose(file);

    mu_assert_bstring(message->query, "class Foo{ public Int x; }");
    sky_peach_message_free(message);
    return 0;
}
コード例 #5
0
ファイル: data_file_tests.c プロジェクト: emiddleton/sky
int test_sky_data_file_set_header_path() {
    int rc;
    struct tagbstring path = bsStatic("/dev/null");
    sky_data_file *data_file = sky_data_file_create();
    rc = sky_data_file_set_path(data_file, &path);
    mu_assert_int_equals(rc, 0);
    mu_assert_bstring(data_file->path, "/dev/null");
    sky_data_file_free(data_file);
    return 0;
}
コード例 #6
0
ファイル: eadd_message_tests.c プロジェクト: gitaccount2/sky
int test_sky_add_event_message_unpack() {
    FILE *file = fopen("tests/fixtures/add_event_message/0/message", "r");
    sky_add_event_message *message = sky_add_event_message_create();
    mu_assert_bool(sky_add_event_message_unpack(message, file) == 0);
    fclose(file);

    mu_assert_int_equals(message->object_id, 10);
    mu_assert_int64_equals(message->timestamp, 1000LL);
    mu_assert_bstring(message->action_name, "foo");
    sky_add_event_message_free(message);
    return 0;
}
コード例 #7
0
int test_sky_create_table_message_unpack() {
    FILE *file = fopen("tests/fixtures/create_table_message/0/message", "r");
    sky_create_table_message *message = sky_create_table_message_create();
    message->data_path = bfromcstr("/tmp/data");
    message->table = sky_table_create();
    mu_assert_bool(sky_create_table_message_unpack(message, file) == 0);
    fclose(file);

    mu_assert_bstring(message->table->path, "/tmp/data/foo");
    sky_table_free(message->table);
    sky_create_table_message_free(message);
    return 0;
}