Exemplo n.º 1
0
int main(int argc, char *argv[])
{
    int n;

    printf("BorodinDB %s stress tests\n", VERSION);

    for (n = 1; n < argc; n++) {
        if (strcmp(argv[n], "-b") == 0)
            _do_benchmarks = 1;
        if (strcmp(argv[n], "-v") == 0)
            verbose = 1;
    }

    if (verbose)
        printf("\nIn-memory trees---------------------\n");

    test_basic(NULL);

    if (verbose)
        printf("\nFile-backed trees------------------------\n");

    test_basic("qq.boro");

    if (_do_benchmarks) {
        printf("\nIn-memory trees---------------------\n");
        boro_benchmark(NULL);
        printf("\nFile-backed trees------------------------\n");
        boro_benchmark("qq.boro");
    }
    else
        printf("(Run with -b to do benchmarks)\n");

    return test_summary();
}
Exemplo n.º 2
0
int main(int argc, char *argv[])
{
    printf("Borodin stress tests\n");

    if (argc > 1 && strcmp(argv[1], "-b") == 0)
        _do_benchmarks = 1;

    if (verbose)
        printf("\nIn-memory trees---------------------\n");

    test_basic(NULL);

    if (verbose)
        printf("\nFile-backed trees------------------------\n");

    test_basic("qq.qq");

    test_rest();

#if 0
    boroidx_stree_tests();
#endif

    if (_do_benchmarks) {
        printf("\nIn-memory trees---------------------\n");
        brtr_benchmark(NULL);
        printf("\nFile-backed trees------------------------\n");
        brtr_benchmark("qq.qq");
    }
    else
        printf("(Run with -b to do benchmarks)\n");

    return test_summary();
}
Exemplo n.º 3
0
void
test_compile(void)
{
	struct sym_test *st;
	struct compile_env *cenv;
	test_t t;
	int need;

	for (st = next_sym_test(NULL); st; st = next_sym_test(st)) {
		if ((sym != NULL) && strcmp(sym, sym_test_name(st))) {
			continue;
		}
		/* XXX: we really want a sym_test_desc() */
		for (cenv = sym_test_env(st, NULL, &need);
		    cenv != NULL;
		    cenv = sym_test_env(st, cenv, &need)) {
			t = test_start("%s : %c%s", sym_test_name(st),
			    need ? '+' : '-', env_name(cenv));
			if (do_compile(t, st, cenv, need) == 0) {
				test_passed(t);
			}
		}
	}

	if (full_count > 0) {
		test_summary();
	}
}
Exemplo n.º 4
0
//verifies a message with all types included serializes and deserializes
int main()
{
    unsigned message_len;
    int32_t      i = 42;             //integer
    float        f = 0.25;           //float
    const char  *s = "string";       //string
    rtosc_blob_t b = {3,(uint8_t*)s};//blob
    int64_t      h = -125;           //long integer
    uint64_t     t = 22412;          //timetag
    double       d = 0.125;          //double
    const char  *S = "Symbol";       //symbol
    char         c = 25;             //character
    int32_t      r = 0x12345678;     //RGBA
    midi_t       m = {0x12,0x23,     //midi
                      0x34,0x45
                     };
    //true
    //false
    //nil
    //inf

    message_len = rtosc_message(buffer, 1024, "/dest",
                                "[ifsbhtdScrmTFNI]", i,f,s,b.len,b.data,h,t,d,S,c,r,m);

    assert_int_eq(96, message_len,
                  "Generating A Message With All Arg Types", __LINE__);


    rtosc_arg_t arg;
    assert_int_eq(i, rtosc_argument(buffer, 0).i,
                  "Checking 'i' Argument", __LINE__);
    CHECK(f,f,1);
    assert_str_eq(s, rtosc_argument(buffer, 2).s,
                  "Checking 's' Argument", __LINE__);
    CHECK(b.len,b.len,3);
    assert_hex_eq((char*)b.data, (char*)arg.b.data, 3, b.len,
                  "Checking 'b.data' Argument", __LINE__);
    CHECK(h,h,4);
    CHECK(t,t,5);
    CHECK(d,d,6);
    assert_str_eq(S,rtosc_argument(buffer, 7).s,
                  "Checking 'S' Argument", __LINE__);
    assert_char_eq(c,rtosc_argument(buffer, 8).i,
                   "Checking 'c' Argument", __LINE__);
    CHECK(r,i,9);
    CHECK(m,m,10);
    assert_char_eq('T', rtosc_type(buffer,11),
                   "Checking 'T' Argument", __LINE__);
    assert_char_eq('F', rtosc_type(buffer,12),
                   "Checking 'F' Argument", __LINE__);
    assert_char_eq('N', rtosc_type(buffer,13),
                   "Checking 'N' Argument", __LINE__);
    assert_char_eq('I', rtosc_type(buffer,14),
                   "Checking 'I' Argument", __LINE__);
    assert_true(rtosc_valid_message_p(buffer, message_len),
                "Verifying Message Is Valid", __LINE__);

    return test_summary();
}
Exemplo n.º 5
0
//verify that empty strings can be retreived
int main()
{
    size_t length = rtosc_message(buffer, 1024, "/path", "sss", "", "", "");
    // /pat h000 ,sss 0000 0000 0000 0000
    assert_int_eq(28, length, "Build Empty String Based Message", __LINE__);
    assert_non_null(rtosc_argument(buffer, 0).s, "Check Arg 1", __LINE__);
    assert_non_null(rtosc_argument(buffer, 1).s, "Check Arg 2", __LINE__);
    assert_non_null(rtosc_argument(buffer, 2).s, "Check Arg 3", __LINE__);
    return test_summary();
}
Exemplo n.º 6
0
static void sig_alarm (int sig) {
        int do_unlock;
        TEST_SAY0(_C_RED "\nTEST WATCHDOG TRIGGERED\n" _C_CLR);
        /* The lock may already be held */
        do_unlock = mtx_trylock(&test_mtx) == thrd_success;
        test_summary(0/*no-locks*/);
        if (do_unlock)
                TEST_UNLOCK();
	TEST_FAIL("Test timed out (%d tests running)", tests_running_cnt);
        assert(!*"test timeout");
}
Exemplo n.º 7
0
int main()
{
    //Message 1
    assert_int_eq(sizeof(MSG1)-1, len_a = rtosc_message(buffer_a, 256,
                    "/flying-monkey", "s", "bannana"),
            "Creating Simple Message 1", __LINE__);
    assert_hex_eq(MSG1, buffer_a, sizeof(MSG1)-1, len_a,
            "Verifying Content of Message 1", __LINE__);
    assert_int_eq(0, rtosc_bundle_p(buffer_a),
            "Simple Message 1 Is Not A Bundle", __LINE__);

    //Message 2
    assert_int_eq(sizeof(MSG2)-1, len_b = rtosc_message(buffer_b, 256,
                    "/foobar-message", "iT", 42),
            "Creating Simple Message 2", __LINE__);
    assert_hex_eq(MSG2, buffer_b, sizeof(MSG2)-1, len_b,
            "Verifying Content of Message 2", __LINE__);
    assert_int_eq(0, rtosc_bundle_p(buffer_b),
            "Simple Message 2 Is Not A Bundle", __LINE__);

    //Bundle 1
    assert_int_eq(sizeof(RESULT)-1, len_c = rtosc_bundle(buffer_c, 256, 0, 2, buffer_a, buffer_b),
            "Creating Bundle 1", __LINE__);
    assert_int_eq(len_c, rtosc_message_length(buffer_c, len_c),
            "Verifying Bundle 1's Length", __LINE__);
    assert_hex_eq(RESULT, buffer_c, sizeof(RESULT)-1, len_c,
            "Verifying Bundle 1's Content", __LINE__);

    assert_int_eq(1, rtosc_bundle_p(buffer_c),
            "Verifying Bundle 1 Is A Bundle", __LINE__);
    assert_int_eq(2, rtosc_bundle_elements(buffer_c, 256),
            "Verifying Bundle 2 Has Two Messages", __LINE__);

    assert_str_eq("/flying-monkey", rtosc_bundle_fetch(buffer_c, 0),
            "Verifying Message 1 Path", __LINE__);
    assert_str_eq("/foobar-message", rtosc_bundle_fetch(buffer_c, 1),
            "Verifying Message 2 Path", __LINE__);

    //Check minimum bundle size #bundle + time tag
    assert_int_eq(8+8, rtosc_bundle(buffer_c, 256, 1, 0),
            "Verify Minimum Legal Bundle Size", __LINE__);

    //check message length support
    assert_int_eq(8+8, rtosc_message_length(buffer_c, 256),
            "Verify rtosc_message_length() on Minimum Bundle", __LINE__);

    //Verify that timetag can be fetched
    assert_int_eq(1, rtosc_bundle_timetag(buffer_c),
            "Verify rtosc_bundle_timetag() Works", __LINE__);

    return test_summary();
}
Exemplo n.º 8
0
int main()
{
    int tx_port = 0;
    char *source = "test/test_defs.b";

    sys_init(0);
    tx_server(source, "bin/state", &tx_port);
    vol_init(0, "bin/volume");

    char *code = sys_load(source);
    env = env_new(source, code);
    mem_free(code);

    int len = 0;
    char **files = sys_list("test/data", &len);

    vars = vars_new(len);
    rvars = vars_new(len);
    for (int i = 0; i < len; ++i) {
        vars_add(rvars, files[i], 0, NULL);
        vars_add(vars, files[i], 0, NULL);
    }
    vars_add(vars, "___param", 0, NULL);

    test_vars();
    test_load();
    test_param();
    test_clone();
    test_eq();
    test_store();
    test_select();
    test_rename();
    test_extend();
    test_join();
    test_project();
    test_semidiff();
    test_summary();
    test_union();
    test_compound();
    test_call();

    tx_free();
    env_free(env);
    mem_free(files);
    vars_free(vars);
    vars_free(rvars);

    return 0;
}
Exemplo n.º 9
0
int main(int argc, char ** argv )
{
    TestContext tc;
    test_init(argc, argv, &tc);
    
    
    // ADD TESTS HERE
    run(&test_blocking_threads,"Conditional wait and signal",&tc);
    run(&test_get_compress_from_body,"Get read buffer",&tc);
    run(&test_update_players_from_compress,"Update players from compress",&tc);
    run(&test_update_objects_from_compress,"Update objects from compress",&tc);
    // TEST END HERE

    test_summary(&tc);
    return 0;    
}
Exemplo n.º 10
0
int main(int argc, char **argv) {
        const char *tests_to_run = NULL; /* all */
        int test_flags = 0;
        int i, r;
	test_timing_t t_all;

	mtx_init(&test_mtx, mtx_plain);

        test_init();

#ifndef _MSC_VER
        tests_to_run = getenv("TESTS");
#endif

        for (i = 1 ; i < argc ; i++) {
                if (!strncmp(argv[i], "-p", 2) && strlen(argv[i]) > 2)
                        test_concurrent_max = strtod(argv[i]+2, NULL);
                else if (!strcmp(argv[i], "-l"))
                        test_flags |= TEST_F_LOCAL;
                else if (!strcmp(argv[i], "-a"))
                        test_assert_on_fail = 1;
                else if (*argv[i] != '-')
                        tests_to_run = argv[i];
                else {
                        printf("Unknown option: %s\n"
                               "\n"
                               "Usage: %s [options] [<test-match-substr>]\n"
                               "Options:\n"
                               "  -p<N>  Run N tests in parallel\n"
                               "  -l     Only run local tests (no broker needed)\n"
                               "  -a     Assert on failures\n"
                               "\n",
                               argv[0], argv[i]);
                        exit(1);
                }
        }

        test_curr = &tests[0];
        test_curr->state = TEST_PASSED;
        test_curr->start = test_clock();

	TEST_SAY("Tests to run: %s\n", tests_to_run ? tests_to_run : "all");
        TEST_SAY("Test filter: %s\n",
                 (test_flags & TEST_F_LOCAL) ?
                 "local tests only" : "no filter");
        TEST_SAY("Action on test failure: %s\n",
                 test_assert_on_fail ? "assert crash" : "continue other tests");

        test_timeout_set(20);

        TIMING_START(&t_all, "ALL-TESTS");

        run_tests(tests_to_run, test_flags, argc, argv);

        TEST_LOCK();
        while (tests_running_cnt > 0) {
                struct test *test;

                TEST_SAY("%d test(s) running:", tests_running_cnt);
                for (test = tests ; test->name ; test++)
                        if (test->state == TEST_RUNNING)
                                TEST_SAY0(" %s", test->name);
                TEST_SAY0("\n");
                TEST_UNLOCK();

                rd_sleep(1);
                TEST_LOCK();
        }

	TIMING_STOP(&t_all);

        test_curr = &tests[0];
        test_curr->duration = test_clock() - test_curr->start;

        TEST_UNLOCK();

        /* Wait for everything to be cleaned up since broker destroys are
	 * handled in its own thread. */
	test_wait_exit(10);

        r = test_summary(1/*lock*/) ? 1 : 0;

	/* If we havent failed at this point then
	 * there were no threads leaked */
        if (r == 0)
                TEST_SAY("\n============== ALL TESTS PASSED ==============\n");

	return r;
}
Exemplo n.º 11
0
int main(int argc, char *argv[])
{
    int n;

    if (argc > 1 && strcmp(argv[1], "-v") == 0)
        verbose = 1;

    /* loop all tests */
    for (n = 0; rx_tests[n].rx != NULL; n++) {
        struct rx_test *r = &rx_tests[n];

        _do_test(r->rx, r->rx, r->tx, r->r, r->src_line);
    }

    /* + */
    do_test(L"+ 0 (really *)", L"one *world",   L"oneworld is enough", L"oneworld");
    do_test(L"+ 1", L"one +world",              L"oneworld", L"");
    do_test(L"+ 2", L"one +world",              L"one world", L"one world");
    do_test(L"+ 3", L"one +world",              L"one    world", L"one    world");
    do_test(L"+ 4", L"one +world",              L"oneworld is enough", L"");
    do_test(L"+ 5", L"one +world",              L"one world is enough", L"one world");
    do_test(L"+ 6", L"one +world",              L"one    world is enough", L"one    world");
    do_test(L"+ 7", L"one +world",              L"I say oneworld is enough", L"");
    do_test(L"+ 8", L"one +world",              L"I say one world is enough", L"one world");
    do_test(L"+ 9", L"one +world",              L"I say one    world is enough", L"one    world");

    /* escaped chars */
    do_test(L"esc 0 (really ?)", L"ready?",         L"ready!", L"ready");
    do_test(L"esc 1",            L"ready\\?",       L"ready!", L"");
    do_test(L"esc 2",            L"ready\\?",       L"ready?", L"ready?");
    do_test(L"esc 3",            L"triptico.com",   L"tripticoxcom", L"tripticoxcom");
    do_test(L"esc 4",            L"triptico\\.com", L"tripticoxcom", L"");
    do_test(L"esc 5",            L"triptico\\.com", L"triptico.com", L"triptico.com");
    do_test(L"esc 6",            L"\n",             L"string without newlines", L"");
    do_test(L"esc 7",            L"\n",             L"I'm\nbroken", L"\n");

    /* square bracket sets */
    do_test(L"[] 0", L"[^a-c]",     L"z", L"z");
    do_test(L"[] 1", L"[^a-cdzx]",  L"z", L"");
    do_test(L"[] 2", L"[a-c]",      L"z", L"");
    do_test(L"[] 3", L"[a-cdzx]",   L"z", L"z");
    do_test(L"[] 4", L"[a-c]",      L"b", L"b");
    do_test(L"[] 5", L"[abc]",      L"b", L"b");
    do_test(L"[] 6", L"[abc]",      L"d", L"");

    do_test(L"[] and * 0", L"[a-z][a-z]*",  L"1234 string 456", L"string");
    do_test(L"[] and * 1", L"[a-z][a-z]*:", L"1234 string key: value 456", L"key:");
    do_test(L"[] and * 2", L"[a-c]*de",     L"abcde", L"abcde");

    do_test(L"[] and + 0", L"[a-z]+",       L"1234 string 456", L"string");
    do_test(L"[] and + 1", L"[a-z]+:",      L"1234 string key: value 456", L"key:");

    /* alternate strings */
    do_test(L"Alt strings 0", L"(abc|def)1", L"try abf1 now", L"");
    do_test(L"Alt strings 1", L"(abc|def)1", L"try def1 now", L"def1");
    do_test(L"Alt strings 2", L"(abc|def)1", L"try abc1 now", L"abc1");

    /* substrings */
    do_test(L"Substrs and * 0", L"Rem(ark)* comment", L"Rem comment", L"Rem comment");
    do_test(L"Substrs and * 1", L"Rem(ark)* comment", L"Remarkark comment", L"Remarkark comment");
    do_test(L"Substrs and * 2", L"Rem(ark)* comment", L"Remark comment", L"Remark comment");
    do_test(L"Substrs and * 3", L"Rem(ark)* comment", L"<!-- Rem comment -->", L"Rem comment");
    do_test(L"Substrs and ? 0", L"Rem(ark)? comment", L"Rem comment", L"Rem comment");
    do_test(L"Substrs and ? 1", L"Rem(ark)? comment", L"Remark comment", L"Remark comment");

    do_test(L"More sets 0", L"'[^']*'", L"I have here a 'string' between quotes", L"'string'");
    do_test(L"More sets 1", L"'[^']*'", L"I have here a '' between quotes", L"''");
    do_test(L"More sets 2", L"[a-z][a-z]* *: *[1-9][0-9]*", L"key:15 # comment", L"key:15");
    do_test(L"More sets 3", L"[a-z][a-z]* *: *[1-9][0-9]*", L"key : 123456 # comment", L"key : 123456");
    do_test(L"More sets 4", L"[a-z][a-z]* *: *[1-9][0-9]*", L"k: 6000", L"k: 6000");
    do_test(L"More sets 5", L"[a-z][a-z]* *: *[1-9][0-9]*", L"key: 1", L"key: 1");
    do_test(L"More sets 6", L"[1-9][0-9]*", L"6000", L"6000");

    do_test(L"Brace matches 1 (like ?)", L"https{0,1}://",  L"http://triptico.com", L"http://");
    do_test(L"Brace matches 2 (like ?)", L"https{0,1}://",  L"https://triptico.com", L"https://");
    do_test(L"Brace matches 3 (like *)", L"a{0,}bc",        L"aaabc", L"aaabc");
    do_test(L"Brace matches 4 (like +)", L"one {1,}world",  L"oneworld", L"");
    do_test(L"Brace matches 5 (like +)", L"one {1,}world",  L"one world", L"one world");
    do_test(L"Brace matches 6 (like +)", L"one {1,}world",  L"one    world", L"one    world");

    do_test(L"Brace matches 11", L"a.{0,5}c",               L"abc", L"abc");
    do_test(L"Brace matches 12", L"a.{0,5}c",               L"abcdec", L"abc");
    do_test(L"Brace matches 13", L"a.{0,5}c",               L"abcdecfghic", L"abc");

    do_test(L"Brace matches 20", L".{5}",                   L"abcdefghijklmnopqrs", L"abcde");

    do_test(L"More * at the end", L"a*", L"", L"");

    return test_summary();
}
Exemplo n.º 12
0
int main()
{
    //clean buffer
    memset(buffer1, 0xc3, sizeof(buffer1));

    //generate liblo message 1
    size_t len = 128;
    lo_message message = lo_message_new();
    assert_non_null(message, "Generating A Liblo Message 1 (int/float)", __LINE__);
    lo_message_add_float(message, 24.0);
    lo_message_add_int32(message, 42);
    lo_message_serialise(message, "/path", buffer1, &len);

    assert_str_eq("/path", buffer1, "Verifying Path From Message 1", __LINE__);
    assert_f32_eq(24.0f, rtosc_argument(buffer1, 0).f,
            "Verifying Float From Message 1", __LINE__);
    assert_int_eq(42, rtosc_argument(buffer1, 1).i,
            "Verifying Int From Message 1", __LINE__);
    assert_int_eq(20, rtosc_message_length(buffer1, 128),
            "Verifying Length From Message 1", __LINE__);


    //Message 2
    size_t len2 = rtosc_message(buffer2, 1024, "/li", "bb", 4, buffer1, 4, buffer1);
    assert_int_eq(24, len2, "Generate A Rtosc Message 2 (bb)", __LINE__);
    lo_message msg2 = lo_message_deserialise((void*)buffer2, len2, &result_var);
    if(assert_non_null(msg2, "Deserialize Message 2 To Liblo", __LINE__))
        printf("# Liblo Did Not Accept the Rtosc Message [error '%d']\n", result_var);

    //Message 3
    size_t len3 = rtosc_message(buffer3+4, 2048, "/close-ui", "");
    assert_int_eq(16, len3, "Generate A Rtosc Message 3 ()", __LINE__);
    lo_message msg3 = lo_message_deserialise((void*)(buffer3+4), len3, &result_var);
    if(assert_non_null(msg2, "Deserialize Message 3 To Liblo", __LINE__))
        printf("#Liblo Did Not Accept the Rtosc Message [error '%d']\n", result_var);

    //Bundle 4
    size_t len4 = rtosc_bundle(buffer4, 2048, 0xdeadbeefcafebaad, 3, buffer1, buffer2, buffer3+4);
    assert_int_eq(88, len4, "Generate A Bundle 4", __LINE__);

    //Bundle 5
    lo_timetag time;
    time.sec  = 0xdeadbeef;
    time.frac = 0xcafebaad;
    lo_bundle ms4 = lo_bundle_new(time);
    lo_bundle_add_message(ms4, "/path",     message);
    lo_bundle_add_message(ms4, "/li",       msg2);
    lo_bundle_add_message(ms4, "/close-ui", msg3);
    size_t len5 = 2048;
    lo_bundle_serialise(ms4,(void*)buffer5, &len5);

    //Verify 4 == 5
    assert_non_null(ms4, "Generate A Liblo Bundle 5", __LINE__);
    assert_hex_eq(buffer5, buffer4, len5, len4,
            "Verify Liblo Style Bundles", __LINE__);

    //Cleanup
    lo_message_free(message);
    lo_message_free(msg2);
    lo_message_free(msg3);
    lo_bundle_free(ms4);

    return test_summary();
}
Exemplo n.º 13
0
int main()
{
    //Check the normal path fragment matching used for the C++ layer
    assert_int_eq(1<<0, prm("/",          ""),
            "Check Simple Empty Path",           __LINE__);
    assert_int_eq(1<<1, prm("19",         ""),
            "Check Basic Enum Matching",         __LINE__);
    assert_int_eq(1<<2, prm("19",         "ff", 1.0, 2.0),
            "Check Enum+Args Matching",          __LINE__);
    assert_int_eq(0<<3, prm("pat",        ""),
            "Check Partial Path Failure",        __LINE__);
    assert_int_eq(1<<3, prm("path",       ""),
            "Check Full Path Match",             __LINE__);
    assert_int_eq(0<<3, prm("paths",      ""),
            "Check Overfull Path Failure",       __LINE__);
    assert_int_eq(1<<4, prm("path123/",   "ff", 1.0, 2.0),
            "Check Composite Path",              __LINE__);
    assert_int_eq(1<<5, prm("path0asdf",  ""),
            "Check Embedded Enum",               __LINE__);
    assert_int_eq(1<<6, prm("foobar23/",  ""),
            "Check Another Enum",                __LINE__);
    assert_int_eq(0<<6, prm("foobar123/", ""),
            "Check Enum Too Large Failure",      __LINE__);
    assert_int_eq(1<<6, prm("foobar122/", ""),
            "Check Enum Edge Case",              __LINE__);
    assert_int_eq(1<<7, prm("blam/",      ""),
            "Check Subpath Match",               __LINE__);
    assert_int_eq(1<<7, prm("blam/blam",  ""),
            "Check Partial Match Of Full Path",  __LINE__);
    assert_int_eq(0<<7, prm("blam",       ""),
            "Check Subpath Missing '/' Failure", __LINE__);
    assert_int_eq(1<<9, prm("bfnpar1",    "c"),
            "Check Optional Arg Case 1",         __LINE__);
    assert_int_eq(1<<9, prm("bfnpar1",    ""),
            "Check Optional Arg Case 2",         __LINE__);
    assert_int_eq(1<<10,prm("zoo",        ""),
            "Check PseudoWild Case 1",           __LINE__);
    assert_int_eq(1<<10,prm("zam",        ""),
            "Check PseudoWild Case 2",           __LINE__);
    assert_int_eq(1<<10,prm("zit",        ""),
            "Check PseudoWild Case 3",           __LINE__);
    assert_int_eq(0<<10,prm("zap",        ""),
            "Check PseudoWild Case 4",           __LINE__);
    assert_int_eq(1<<11,prm("flam/args",  ""),
            "MultiPath Case 1",                  __LINE__);
    assert_int_eq(1<<11,prm("flam/bugs",  ""),
            "MultiPath Case 2",                  __LINE__);
    assert_int_eq(0<<11,prm("flam/error",  ""),
            "MultiPath Case 3",                  __LINE__);


    printf("\n# Suite 2 On Standard Based Matching Alg.\n");
    //Check the standard path matching algorithm
    assert_true(rmp("foobar", "foobar"),  "Check Literal Equality",   __LINE__);
    assert_false(rmp("foocar", "foobar"), "Check Literal Inequality", __LINE__);

    assert_true(rmp("foobar",  "?[A-z]?bar"), "Check Char Pattern Equality", __LINE__);
    assert_false(rmp("foobar",  "?[!A-z]?bar"), "Check Char Pattern Inequality", __LINE__);

    assert_true(rmp("baz", "*"), "Check Trivial Wildcard", __LINE__);
    assert_true(rmp("baz", "ba*"), "Check Wildcard Partial Equality", __LINE__);
    assert_false(rmp("baz", "bb*"), "Check Wildcard Partial Inequality", __LINE__);
    assert_false(rmp("baz", "ba*z"), "Check Invalid Wildcard Partial Inequality", __LINE__);

    assert_true(rmp("lizard52", "lizard#53"), "Check Enum Equality", __LINE__);
    assert_false(rmp("lizard99", "lizard#53"), "Check Enum Inequality", __LINE__);
    assert_false(rmp("lizard", "lizard#53"), "Check Enum Inequality", __LINE__);


    const char *rtosc_match_options(const char *pattern, const char **msg);
    //Check additional extension
    const char *ex_msgA = "A";
    const char *ex_msgB = "B";
    const char *ex_msgF = "F";
    assert_true(rtosc_match_options("{A,B,C,D,E}",  &ex_msgA) != NULL,
            "Verify rtosc_match_options (A)", __LINE__);
    assert_true(rtosc_match_options("{A,B,C,D,E}",  &ex_msgB) != NULL,
            "Verify rtosc_match_options (B)", __LINE__);
    assert_false(rtosc_match_options("{A,B,C,D,E}", &ex_msgF) != NULL,
            "Verify rtosc_match_options (F)", __LINE__);

    return test_summary();
}