string folderTest() { vector<pair<Folder *, int>> folds; vector<File*> fls; Folder * f = new Folder("test"); f->getAllFoldersRecursively(folds); if(folds.size() > 1) return "found folders in empty folder"; f->getAllFilesRecursively(fls); if(fls.size()) return "files found in empty folder"; File * file = new File(); f->addFile(file); fls.clear(); f->getAllFilesRecursively(fls); if(fls.size() != 1) return "file count mismatch"; if(f->getSize() != file->getSize()) return "file size mismatch"; Folder * f2 = new Folder("test2"); if(!f->addFolder(f2)) return "addfolder failed"; folds.clear(); f->getAllFoldersRecursively(folds); if(folds.size() != 2) return "folder count mismatch"; File * file2 = new File(); f2->addFile(file2); fls.clear(); f->getAllFilesRecursively(fls); if(fls.size() != 2) return "file count mismatch2"; if(f->getSize() != file->getSize() + file2->getSize()) return "file size mismatch2"; f->removeFile(file->getName()); delete file; fls.clear(); f->getAllFilesRecursively(fls); if(fls.size() != 1) return "file count mismatch3"; if(f->getSize() != file2->getSize()) return "file size mismatch3"; f->removeFolder(f2->getName()); delete f2; folds.clear(); f->getAllFoldersRecursively(folds); if(folds.size() != 1) return "folder count mismatch2"; delete f; return ""; }
int main() { File* file1 = new File("a.txt", 10); // 파일은 자신의 크기가 있습니다. File* file2 = new File("b.txt", 20); File* file3 = new File("c.txt", 30); Folder* root = new Folder("ROOT"); // 폴더는 자신의 크기가 없습니다. Folder* folder1 = new Folder("A"); Folder* folder2 = new Folder("B"); folder1->add(file1); folder2->add(file2); root->add(file3); root->add(folder1); root->add(folder2); cout << file1->getSize() << endl; // 파일은 크기를 구할 수 있습니다. cout << root->getSize() << endl; // 폴더도 크기를 구할 수 있습니다. // print hierarchy cout << endl; root->print(); }