コード例 #1
0
ファイル: test-marshal.c プロジェクト: bhanug/likewise-open
MU_TEST(marshal, basic_verify_null_failure)
{
    static const unsigned char bytes[] =
    {
        /* -42 */
        0xFF, 0xD6,
        /* 2 */
        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
    };

    LWMsgTypeSpec* type = basic_spec;
    LWMsgBuffer buffer = {0};
    basic_struct *out;

    buffer.base = buffer.cursor = (void*) bytes;
    buffer.end = buffer.base + sizeof(bytes);
    
    MU_ASSERT_EQUAL(
        MU_TYPE_INTEGER,
        lwmsg_data_unmarshal(dcontext, type, &buffer, (void**) (void*) &out),
        LWMSG_STATUS_EOF);
}
コード例 #2
0
/*
    Testing the various runnables introduced with QtDispatch
 */
extern "C" void Qt_runnable_lambda(){
    MU_BEGIN_TEST(Qt_runnable_lambda);
    
    TestRunnable test_run;
    for(int i = 0; i < 5; i++)
        test_run.run(i);
    MU_ASSERT_EQUAL(counter, 1+2+3+4);


    counter = 0;
    iter_block_run = QDispatchMakeIterationRunnable([=](size_t index){
        counter += index;
    });
    
    block_run = QDispatchMakeRunnable([=]{
        counter += 5;
    });
    
    exec_runnables();

    
    MU_END_TEST;
}
コード例 #3
0
ファイル: test-atomic.c プロジェクト: bhanug/likewise-open
MU_TEST(Atomic, InterlockedCompareExchange)
{
    pthread_t threads[EXCHANGE_THREADS];
    EXCHANGE_INFO info[EXCHANGE_THREADS];
    int i;
    LONG volatile lValue = 0;

    for (i = 0; i < EXCHANGE_THREADS; i++)
    {
        info[i].plValue = &lValue;
        info[i].lOldValue = i;
        info[i].lNewValue = i+1;
        pthread_create(&threads[i], NULL, AtomicExchangeThread, &info[i]);
    }

    BarrierOpen();

    for (i = 0; i < EXCHANGE_THREADS; i++)
    {
        pthread_join(threads[i], NULL);
    }

    MU_ASSERT_EQUAL(MU_TYPE_INTEGER, InterlockedRead(&lValue), EXCHANGE_THREADS);
}
コード例 #4
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strstr, mon_strstr_str_vide) {
    const char *str = "" ;
    const char *result ;
    result = mon_strstr(str, "CDEZ") ;
    MU_ASSERT_EQUAL(result, NULL) ;
}
コード例 #5
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strstr, mon_strstr_str_not_found) {
    const char *str = "0123456789" ;
    const char *result ;
    result = mon_strstr(str, "346") ;
    MU_ASSERT_EQUAL(result, NULL) ;
}
コード例 #6
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strlen, strlen_multi0) {
    char str[] = {'A','A','A','A','A','A','\0','A','A','\0'} ;
    MU_ASSERT_EQUAL(mon_strlen(str), 6) ;
}
コード例 #7
0
void group_notify(void* data){
	dispatch_queue_t m = dispatch_get_main_queue();
	dispatch_queue_t c = dispatch_get_current_queue();
	MU_ASSERT_EQUAL(m, c);
	MU_PASS("Great!");
}
コード例 #8
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strncmp, monstrncmp_n_restrict) {
    MU_ASSERT_EQUAL(mon_strncmp("ABCDEF","ABCTYU", 3), 0) ;
}
コード例 #9
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strncmp, mon_strncmp_a_equals_b_vide) {
    MU_ASSERT_EQUAL(mon_strncmp("","", 0), 0) ;
}
コード例 #10
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strlen, strlen_non_ascii) {
    MU_ASSERT_EQUAL(mon_strlen("12345ééé"), 8) ;
}
コード例 #11
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strchr, mon_strchr_c_found) {
    const char *str = "ABCDEF" ;
    const char *result ;
    result = mon_strchr(str, 'D') ;
    MU_ASSERT_EQUAL(result, str+3) ;
}
コード例 #12
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strlen, strlen5) {
    MU_ASSERT_EQUAL(mon_strlen("12345"), 5) ;
}
コード例 #13
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strcat, mon_strcat_a_b_vide) {
    char *result ;
    strcpy(dest, "PREM") ;
    result = mon_strcat(dest, "") ;
    MU_ASSERT_EQUAL(strcmp(result,"PREM"), 0) ;
}
コード例 #14
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strcat, mon_strcat_a_vide_et_b) {
    char *result ;
    strcpy(dest, "") ;
    result = mon_strcat(dest, "IJKLM") ;
    MU_ASSERT_EQUAL(strcmp(result,"IJKLM"), 0) ;
}
コード例 #15
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strstr, mon_strstr_needle_vide) {
    const char *str = "0123456789" ;
    const char *result ;
    result = mon_strstr(str, "") ;
    MU_ASSERT_EQUAL(result, str) ;
}
コード例 #16
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strstr, mon_strstr_found_ends) {
    const char *str = "0123456789" ;
    const char *result ;
    result = mon_strstr(str, "789") ;
    MU_ASSERT_EQUAL(result, str+7) ;
}
コード例 #17
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strchr, mon_strchr_c_not_found) {
    const char *str = "ABCDEF" ;
    const char *result ;
    result = mon_strchr(str, 'G') ;
    MU_ASSERT_EQUAL(result, NULL) ;
}
コード例 #18
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strcmp, mon_strcmp_a_equals_b_non_vide) {
    MU_ASSERT_EQUAL(mon_strcmp("UIO","UIO"), 0) ;
}
コード例 #19
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strchr, mon_strchr_c_first_found) {
    const char *str = "ABCDECFG" ;
    const char *result ;
    result = mon_strchr(str, 'C') ;
    MU_ASSERT_EQUAL(result, str+2) ;
}
コード例 #20
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strncmp, mon_strncmp_a_equals_b_n_too_large) {
    MU_ASSERT_EQUAL(mon_strncmp("","", 6), 0) ;
}
コード例 #21
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strlen, strlen0) {
    MU_ASSERT_EQUAL(mon_strlen(""), 0) ;
}
コード例 #22
0
ファイル: main.c プロジェクト: nerdyprog/asr4_part1
MU_TEST(mon_strchr, mon_strchr_empty_string) {
    const char *str = "" ;
    const char *result ;
    result = mon_strchr(str, 'C') ;
    MU_ASSERT_EQUAL(result, NULL) ;
}
コード例 #23
0
MU_TEST(stress, parallel)
{
    Data data;
    pthread_t threads[NUM_THREADS];
    int i;
    LWMsgContext* context = NULL;
    LWMsgProtocol* protocol = NULL;
    LWMsgPeer* client = NULL;
    LWMsgPeer* server = NULL;
    CounterRequest request;
    CounterReply* reply;
    LWMsgCall* call;
    LWMsgParams in = LWMSG_PARAMS_INITIALIZER;
    LWMsgParams out = LWMSG_PARAMS_INITIALIZER;
    LWMsgTime timeout = {1, 0};

    MU_TRY(lwmsg_context_new(NULL, &context));
    lwmsg_context_set_log_function(context, lwmsg_test_log_function, NULL);

    MU_TRY(lwmsg_protocol_new(context, &protocol));
    MU_TRY(lwmsg_protocol_add_protocol_spec(protocol, counterprotocol_spec));

    MU_TRY(lwmsg_peer_new(context, protocol, &server));
    MU_TRY(lwmsg_peer_add_dispatch_spec(server, counter_dispatch));
    MU_TRY(lwmsg_peer_add_listen_endpoint(server, LWMSG_CONNECTION_MODE_LOCAL, TEST_ENDPOINT, 0600));
    MU_TRY(lwmsg_peer_set_max_listen_clients(server, MAX_CLIENTS));
    MU_TRY(lwmsg_peer_set_timeout(server, LWMSG_TIMEOUT_IDLE, &timeout));
    MU_TRY(lwmsg_peer_start_listen(server));

    MU_TRY(lwmsg_peer_new(context, protocol, &client));
    MU_TRY(lwmsg_peer_add_connect_endpoint(client, LWMSG_CONNECTION_MODE_LOCAL, TEST_ENDPOINT));

    request.counter = 0;

    MU_TRY(lwmsg_peer_acquire_call(client, &call));
    in.tag = COUNTER_OPEN;
    in.data = &request;

    MU_TRY(lwmsg_call_dispatch(call, &in, &out, NULL, NULL));
    
    MU_ASSERT_EQUAL(MU_TYPE_INTEGER, out.tag, COUNTER_OPEN_SUCCESS);
    lwmsg_call_release(call);

    data.client = client;
    data.handle = out.data;
    data.iters = NUM_ITERS;
    data.go = 0;
    
    pthread_mutex_init(&data.lock, NULL);
    pthread_cond_init(&data.event, NULL);

    pthread_mutex_lock(&data.lock);
    for (i = 0; i < NUM_THREADS; i++)
    {
        pthread_create(&threads[i], NULL, add_thread, &data);
    }
    data.go = 1;
    pthread_cond_broadcast(&data.event);
    pthread_mutex_unlock(&data.lock);

    for (i = 0; i < NUM_THREADS; i++)
    {
        pthread_join(threads[i], NULL);
    }

    MU_TRY(lwmsg_peer_acquire_call(client, &call));
    in.tag = COUNTER_READ;
    in.data = data.handle;

    MU_TRY(lwmsg_call_dispatch(call, &in, &out, NULL, NULL));
    
    MU_ASSERT_EQUAL(MU_TYPE_INTEGER, out.tag, COUNTER_READ_SUCCESS);
    reply = out.data;

    MU_ASSERT_EQUAL(MU_TYPE_INTEGER, reply->counter, NUM_THREADS * NUM_ITERS);

    lwmsg_call_destroy_params(call, &out);
    lwmsg_call_release(call);
    
    MU_TRY(lwmsg_peer_acquire_call(client, &call));
    in.tag = COUNTER_CLOSE;
    in.data = data.handle;

    MU_TRY(lwmsg_call_dispatch(call, &in, &out, NULL, NULL));
    
    MU_ASSERT_EQUAL(MU_TYPE_INTEGER, out.tag, COUNTER_CLOSE_SUCCESS);

    lwmsg_call_destroy_params(call, &out);
    lwmsg_call_release(call);

    MU_TRY(lwmsg_peer_disconnect(client));
    lwmsg_peer_delete(client);

    MU_TRY(lwmsg_peer_stop_listen(server));
    lwmsg_peer_delete(server);

    pthread_mutex_destroy(&data.lock);
    pthread_cond_destroy(&data.event);
}