#include "test.h" void dictionary_candidates(struct ct *t) { char many[512], item[8]; char *p; Dictreq req; Dictres res; Hmap *saved; Lang *lang; Str key; int i; lang = getlang(LangJP); saved = lang->dict; lang->dict = hmapalloc(1); key = mkstr("かな"); hmapset(&lang->dict, &key, " 候補1 かな 候補2 ", strlen(" 候補1 かな 候補2 ")); memset(&req, 0, sizeof req); req.key = key; req.pre = mkstr("preedit-one"); req.lang = LangJP; dictlookup(&req, &res); if(!CT_EQ_INT(t, 2, res.nkouho)) goto cleanup; CT_EQ_INT(t, 0, scmp(&req.pre, &res.key)); checkstr(t, "candidate 1", "候補1", &res.kouho[0]); checkstr(t, "candidate 2", "候補2", &res.kouho[1]); key = mkstr("key"); p = many; for(i = 0; i < Maxkouho+1; i++){ snprint(item, sizeof item, "c%02d", i); if(i > 0) *p++ = ' '; memmove(p, item, strlen(item)); p += strlen(item); } *p = '\0'; hmapset(&lang->dict, &key, many, strlen(many)); req.key = key; req.pre = mkstr("preedit-two"); dictlookup(&req, &res); if(!CT_EQ_INT(t, Maxkouho, res.nkouho)) goto cleanup; CT_EQ_INT(t, 0, scmp(&req.pre, &res.key)); checkstr(t, "first capped candidate", "c00", &res.kouho[0]); checkstr(t, "last capped candidate", "c31", &res.kouho[31]); cleanup: hmapfree(lang->dict); lang->dict = saved; }