static void test_Equals(TestBatch *batch) { TestSchema *schema = TestSchema_new(); TestSchema *arch_differs = TestSchema_new(); TestSchema *spec_differs = TestSchema_new(); FullTextType *type = (FullTextType*)Schema_Fetch_Type(spec_differs, (CharBuf*)&content); CaseFolder *case_folder = CaseFolder_new(); ASSERT_TRUE(batch, TestSchema_Equals(schema, (Obj*)schema), "Equals"); FullTextType_Set_Analyzer(type, (Analyzer*)case_folder); ASSERT_FALSE(batch, TestSchema_Equals(schema, (Obj*)spec_differs), "Equals spoiled by differing FieldType"); DECREF(arch_differs->arch); arch_differs->arch = Arch_new(); ASSERT_FALSE(batch, TestSchema_Equals(schema, (Obj*)arch_differs), "Equals spoiled by differing Architecture"); DECREF(schema); DECREF(arch_differs); DECREF(spec_differs); DECREF(case_folder); }
static void test_Dump_Load_and_Equals(TestBatchRunner *runner) { CaseFolder *case_folder = CaseFolder_new(); CaseFolder *other = CaseFolder_new(); Obj *dump = (Obj*)CaseFolder_Dump(case_folder); CaseFolder *clone = (CaseFolder*)CaseFolder_Load(other, dump); TEST_TRUE(runner, CaseFolder_Equals(case_folder, (Obj*)other), "Equals"); TEST_FALSE(runner, CaseFolder_Equals(case_folder, (Obj*)CFISH_TRUE), "Not Equals"); TEST_TRUE(runner, CaseFolder_Equals(case_folder, (Obj*)clone), "Dump => Load round trip"); DECREF(case_folder); DECREF(other); DECREF(dump); DECREF(clone); }
static void test_Dump_Load_and_Equals(TestBatch *batch) { CaseFolder *case_folder = CaseFolder_new(); CaseFolder *other = CaseFolder_new(); Obj *dump = Obj_Dump(case_folder); CaseFolder *clone = (CaseFolder*)Obj_Load(other, dump); ASSERT_TRUE(batch, Obj_Equals(case_folder, (Obj*)other), "Equals"); ASSERT_TRUE(batch, CaseFolder_Dump_Equals(case_folder, (Obj*)dump), "Dump_Equals"); ASSERT_FALSE(batch, Obj_Equals(case_folder, (Obj*)&EMPTY), "Not Equals"); ASSERT_TRUE(batch, Obj_Equals(case_folder, (Obj*)clone), "Dump => Load round trip"); DECREF(case_folder); DECREF(other); DECREF(dump); DECREF(clone); }
static void test_analysis(TestBatchRunner *runner) { CaseFolder *case_folder = CaseFolder_new(); String *source = Str_newf("caPiTal ofFensE"); VArray *wanted = VA_new(1); VA_Push(wanted, (Obj*)Str_newf("capital offense")); TestUtils_test_analyzer(runner, (Analyzer*)case_folder, source, wanted, "lowercase plain text"); DECREF(wanted); DECREF(source); DECREF(case_folder); }
PolyAnalyzer* PolyAnalyzer_init(PolyAnalyzer *self, const CharBuf *language, VArray *analyzers) { Analyzer_init((Analyzer*)self); if (analyzers) { for (uint32_t i = 0, max = VA_Get_Size(analyzers); i < max; i++) { CERTIFY(VA_Fetch(analyzers, i), ANALYZER); } self->analyzers = (VArray*)INCREF(analyzers); } else if (language) { self->analyzers = VA_new(3); VA_Push(self->analyzers, (Obj*)CaseFolder_new()); VA_Push(self->analyzers, (Obj*)RegexTokenizer_new(NULL)); VA_Push(self->analyzers, (Obj*)SnowStemmer_new(language)); } else { THROW(ERR, "Must specify either 'language' or 'analyzers'"); } return self; }
PolyAnalyzer* PolyAnalyzer_init(PolyAnalyzer *self, String *language, Vector *analyzers) { Analyzer_init((Analyzer*)self); PolyAnalyzerIVARS *const ivars = PolyAnalyzer_IVARS(self); if (analyzers) { for (uint32_t i = 0, max = Vec_Get_Size(analyzers); i < max; i++) { CERTIFY(Vec_Fetch(analyzers, i), ANALYZER); } ivars->analyzers = (Vector*)INCREF(analyzers); } else if (language) { ivars->analyzers = Vec_new(3); Vec_Push(ivars->analyzers, (Obj*)CaseFolder_new()); Vec_Push(ivars->analyzers, (Obj*)RegexTokenizer_new(NULL)); Vec_Push(ivars->analyzers, (Obj*)SnowStemmer_new(language)); } else { THROW(ERR, "Must specify either 'language' or 'analyzers'"); } return self; }