Hash* StringType_Dump_IMP(StringType *self) { Hash *dump = StringType_Dump_For_Schema(self); Hash_Store_Utf8(dump, "_class", 6, (Obj*)Str_Clone(StringType_Get_Class_Name(self))); DECREF(Hash_Delete_Utf8(dump, "type", 4)); return dump; }
Hash* NumType_Dump_IMP(NumericType *self) { Hash *dump = NumType_Dump_For_Schema(self); Hash_Store_Utf8(dump, "_class", 6, (Obj*)Str_Clone(NumType_get_class_name(self))); DECREF(Hash_Delete_Utf8(dump, "type", 4)); return dump; }
Hash* FullTextType_Dump_IMP(FullTextType *self) { FullTextTypeIVARS *const ivars = FullTextType_IVARS(self); Hash *dump = FullTextType_Dump_For_Schema(self); Hash_Store_Utf8(dump, "_class", 6, (Obj*)Str_Clone(FullTextType_get_class_name(self))); Hash_Store_Utf8(dump, "analyzer", 8, (Obj*)Analyzer_Dump(ivars->analyzer)); DECREF(Hash_Delete_Utf8(dump, "type", 4)); return dump; }
static void test_max_depth(TestBatchRunner *runner) { Hash *circular = Hash_new(0); Hash_Store_Utf8(circular, "circular", 8, INCREF(circular)); Err_set_error(NULL); String *not_json = Json_to_json((Obj*)circular); TEST_TRUE(runner, not_json == NULL, "to_json returns NULL when fed recursing data"); TEST_TRUE(runner, Err_get_error() != NULL, "to_json sets global error when fed recursing data"); DECREF(Hash_Delete_Utf8(circular, "circular", 8)); DECREF(circular); }
static void test_open(TestBatchRunner *runner) { Folder *real_folder; CompoundFileReader *cf_reader; Hash *metadata; Err_set_error(NULL); real_folder = S_folder_with_contents(); Folder_Delete(real_folder, cfmeta_file); cf_reader = CFReader_open(real_folder); TEST_TRUE(runner, cf_reader == NULL, "Return NULL when cfmeta file missing"); TEST_TRUE(runner, Err_get_error() != NULL, "Set global error when cfmeta file missing"); DECREF(real_folder); Err_set_error(NULL); real_folder = S_folder_with_contents(); Folder_Delete(real_folder, cf_file); cf_reader = CFReader_open(real_folder); TEST_TRUE(runner, cf_reader == NULL, "Return NULL when cf.dat file missing"); TEST_TRUE(runner, Err_get_error() != NULL, "Set global error when cf.dat file missing"); DECREF(real_folder); Err_set_error(NULL); real_folder = S_folder_with_contents(); metadata = (Hash*)Json_slurp_json(real_folder, cfmeta_file); Hash_Store_Utf8(metadata, "format", 6, (Obj*)Str_newf("%i32", -1)); Folder_Delete(real_folder, cfmeta_file); Json_spew_json((Obj*)metadata, real_folder, cfmeta_file); cf_reader = CFReader_open(real_folder); TEST_TRUE(runner, cf_reader == NULL, "Return NULL when format is invalid"); TEST_TRUE(runner, Err_get_error() != NULL, "Set global error when format is invalid"); Err_set_error(NULL); Hash_Store_Utf8(metadata, "format", 6, (Obj*)Str_newf("%i32", 1000)); Folder_Delete(real_folder, cfmeta_file); Json_spew_json((Obj*)metadata, real_folder, cfmeta_file); cf_reader = CFReader_open(real_folder); TEST_TRUE(runner, cf_reader == NULL, "Return NULL when format is too recent"); TEST_TRUE(runner, Err_get_error() != NULL, "Set global error when format too recent"); Err_set_error(NULL); DECREF(Hash_Delete_Utf8(metadata, "format", 6)); Folder_Delete(real_folder, cfmeta_file); Json_spew_json((Obj*)metadata, real_folder, cfmeta_file); cf_reader = CFReader_open(real_folder); TEST_TRUE(runner, cf_reader == NULL, "Return NULL when format key is missing"); TEST_TRUE(runner, Err_get_error() != NULL, "Set global error when format key is missing"); Hash_Store_Utf8(metadata, "format", 6, (Obj*)Str_newf("%i32", CFWriter_current_file_format)); DECREF(Hash_Delete_Utf8(metadata, "files", 5)); Folder_Delete(real_folder, cfmeta_file); Json_spew_json((Obj*)metadata, real_folder, cfmeta_file); cf_reader = CFReader_open(real_folder); TEST_TRUE(runner, cf_reader == NULL, "Return NULL when files key is missing"); TEST_TRUE(runner, Err_get_error() != NULL, "Set global error when files key is missing"); DECREF(metadata); DECREF(real_folder); }