Allow libpinyin to build in cross compile mode.
[platform/upstream/libpinyin.git] / tests / tests_helper.h
index af1b38a..431dbc8 100644 (file)
 #ifndef TESTS_HELPER_H
 #define TESTS_HELPER_H
 
-static bool load_phrase_index(FacadePhraseIndex * phrase_index){
+static bool load_phrase_index(const pinyin_table_info_t * phrase_files,
+                              FacadePhraseIndex * phrase_index){
     MemoryChunk * chunk = NULL;
     for (size_t i = 0; i < PHRASE_INDEX_LIBRARY_COUNT; ++i) {
-        const char * binfile = pinyin_phrase_files[i];
-        if (NULL == binfile)
+        const pinyin_table_info_t * table_info = phrase_files + i;
+
+        if (SYSTEM_FILE != table_info->m_file_type)
             continue;
 
+        const char * binfile = table_info->m_system_filename;
+
         gchar * filename = g_build_filename("..", "..", "data",
                                             binfile, NULL);
         chunk = new MemoryChunk;
         bool retval = chunk->load(filename);
         if (!retval) {
             fprintf(stderr, "open %s failed!\n", binfile);
+            delete chunk;
             return false;
         }
 
@@ -44,4 +49,38 @@ static bool load_phrase_index(FacadePhraseIndex * phrase_index){
     return true;
 }
 
+static bool load_phrase_table(const pinyin_table_info_t * phrase_files,
+                              ChewingLargeTable * chewing_table,
+                              PhraseLargeTable2 * phrase_table,
+                              FacadePhraseIndex * phrase_index){
+    for (size_t i = 0; i < PHRASE_INDEX_LIBRARY_COUNT; ++i) {
+        const pinyin_table_info_t * table_info = phrase_files + i;
+
+        if (SYSTEM_FILE != table_info->m_file_type)
+            continue;
+
+        const char * tablename = table_info->m_table_filename;
+
+        gchar * filename = g_build_filename("..", "..", "data",
+                                            tablename, NULL);
+        FILE * tablefile = fopen(filename, "r");
+        if (NULL == tablefile) {
+            fprintf(stderr, "open %s failed!\n", tablename);
+            return false;
+        }
+        g_free(filename);
+
+        if (chewing_table)
+            chewing_table->load_text(tablefile);
+        fseek(tablefile, 0L, SEEK_SET);
+        if (phrase_table)
+            phrase_table->load_text(tablefile);
+        fseek(tablefile, 0L, SEEK_SET);
+        if (phrase_index)
+            phrase_index->load_text(i, tablefile);
+        fclose(tablefile);
+    }
+    return true;
+}
+
 #endif