#include #include #include #include #include #include #include #include #include #include "camel-test.h" /* TODO: should put utf8 stuff here too */ static struct { char *word; int count; struct { char *word; int type; } splits[5]; } split_tests[] = { { "simple", 1, { { "simple", CAMEL_SEARCH_WORD_SIMPLE } } }, { "two words", 2, { { "two", CAMEL_SEARCH_WORD_SIMPLE }, {"words" , CAMEL_SEARCH_WORD_SIMPLE } } }, { "compl;ex", 1, { { "compl;ex", CAMEL_SEARCH_WORD_COMPLEX } } }, { "compl;ex simple", 2, { { "compl;ex", CAMEL_SEARCH_WORD_COMPLEX} , {"simple", CAMEL_SEARCH_WORD_SIMPLE} } }, { "\"quoted\"", 1, { { "quoted", CAMEL_SEARCH_WORD_SIMPLE } } }, { "\"quoted double\"", 1, { { "quoted double", CAMEL_SEARCH_WORD_COMPLEX } } }, { "\"quoted double\" compl;ex", 2, { { "quoted double", CAMEL_SEARCH_WORD_COMPLEX }, { "compl;ex", CAMEL_SEARCH_WORD_COMPLEX } } }, { "\"quoted double \\\" escaped\"", 1, { { "quoted double \" escaped", CAMEL_SEARCH_WORD_COMPLEX } } }, { "\"quoted\\\"double\" \\\" escaped\\\"", 3, { { "quoted\"double", CAMEL_SEARCH_WORD_COMPLEX }, {"\"", CAMEL_SEARCH_WORD_COMPLEX}, { "escaped\"", CAMEL_SEARCH_WORD_COMPLEX } } }, { "\\\"escaped", 1, { { "\"escaped", CAMEL_SEARCH_WORD_COMPLEX } } }, }; #define SPLIT_LENGTH (sizeof(split_tests)/sizeof(split_tests[0])) static struct { char *word; int count; struct { char *word; int type; } splits[5]; } simple_tests[] = { { "simple", 1, { {"simple", CAMEL_SEARCH_WORD_SIMPLE } } }, { "simpleCaSe", 1, { { "simplecase", CAMEL_SEARCH_WORD_SIMPLE } } }, { "two words", 2, { { "two", CAMEL_SEARCH_WORD_SIMPLE }, { "words", CAMEL_SEARCH_WORD_SIMPLE } } }, { "two wordscAsE", 2, { { "two", CAMEL_SEARCH_WORD_SIMPLE} , { "wordscase", CAMEL_SEARCH_WORD_SIMPLE } } }, { "compl;ex", 2, { { "compl", CAMEL_SEARCH_WORD_SIMPLE }, { "ex", CAMEL_SEARCH_WORD_SIMPLE } } }, { "compl;ex simple", 3, { { "compl", CAMEL_SEARCH_WORD_SIMPLE }, { "ex", CAMEL_SEARCH_WORD_SIMPLE }, { "simple", CAMEL_SEARCH_WORD_SIMPLE } } }, { "\"quoted compl;ex\" simple", 4, { { "quoted", CAMEL_SEARCH_WORD_SIMPLE}, { "compl", CAMEL_SEARCH_WORD_SIMPLE }, { "ex", CAMEL_SEARCH_WORD_SIMPLE }, { "simple", CAMEL_SEARCH_WORD_SIMPLE } } }, { "\\\" \"quoted\"compl;ex\" simple", 4, { { "quoted", CAMEL_SEARCH_WORD_SIMPLE}, { "compl", CAMEL_SEARCH_WORD_SIMPLE }, { "ex", CAMEL_SEARCH_WORD_SIMPLE }, { "simple", CAMEL_SEARCH_WORD_SIMPLE } } }, }; #define SIMPLE_LENGTH (sizeof(simple_tests)/sizeof(simple_tests[0])) int main (int argc, char **argv) { int i, j; struct _camel_search_words *words, *tmp; camel_test_init(argc, argv); camel_test_start("Search splitting"); for (i=0; ilen == split_tests[i].count, "words->len = %d, count = %d", words->len, split_tests[i].count); for (j=0;jlen;j++) { check_msg(strcmp(split_tests[i].splits[j].word, words->words[j]->word) == 0, "'%s' != '%s'", split_tests[i].splits[j].word, words->words[j]->word); check(split_tests[i].splits[j].type == words->words[j]->type); } camel_search_words_free(words); camel_test_pull(); } camel_test_end(); camel_test_start("Search splitting - simple"); for (i=0; ilen == simple_tests[i].count, "words->len = %d, count = %d", words->len, simple_tests[i].count); for (j=0;jlen;j++) { check_msg(strcmp(simple_tests[i].splits[j].word, words->words[j]->word) == 0, "'%s' != '%s'", simple_tests[i].splits[j].word, words->words[j]->word); check(simple_tests[i].splits[j].type == words->words[j]->type); } camel_search_words_free(words); camel_search_words_free(tmp); camel_test_pull(); } camel_test_end(); return 0; }