RAMDirHandle* RAMDH_init(RAMDirHandle *self, RAMFolder *folder) { DH_init((DirHandle*)self, RAMFolder_Get_Path(folder)); RAMDirHandleIVARS *const ivars = RAMDH_IVARS(self); ivars->folder = (RAMFolder*)INCREF(folder); ivars->elems = Hash_Keys(RAMFolder_IVARS(ivars->folder)->entries); ivars->tick = -1; return self; }
static void test_Local_Find_Folder(TestBatchRunner *runner) { RAMFolder *folder = RAMFolder_new(NULL); RAMFolder *local; FileHandle *fh; RAMFolder_MkDir(folder, foo); RAMFolder_MkDir(folder, foo_bar); fh = RAMFolder_Open_FileHandle(folder, boffo, FH_CREATE | FH_WRITE_ONLY); DECREF(fh); fh = RAMFolder_Open_FileHandle(folder, foo_boffo, FH_CREATE | FH_WRITE_ONLY); DECREF(fh); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, nope); TEST_TRUE(runner, local == NULL, "Non-existent entry yields NULL"); ZombieCharBuf *empty = ZCB_BLANK(); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, (CharBuf*)empty); TEST_TRUE(runner, local == NULL, "Empty string yields NULL"); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, foo_bar); TEST_TRUE(runner, local == NULL, "nested folder yields NULL"); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, foo_boffo); TEST_TRUE(runner, local == NULL, "nested file yields NULL"); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, boffo); TEST_TRUE(runner, local == NULL, "local file yields NULL"); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, bar); TEST_TRUE(runner, local == NULL, "name of nested folder yields NULL"); local = (RAMFolder*)RAMFolder_Local_Find_Folder(folder, foo); TEST_TRUE(runner, local && RAMFolder_Is_A(local, RAMFOLDER) && CB_Equals_Str(RAMFolder_Get_Path(local), "foo", 3), "Find local directory"); DECREF(folder); }