Example #1
0
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();
}