mirror of
https://github.com/DarkStore-3DS/Project_CTR.git
synced 2026-07-03 08:49:03 +00:00
Add source code for ctrtool
This commit is contained in:
@@ -0,0 +1,535 @@
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
#include "io_LocalFileSystem_TestClass.h"
|
||||
|
||||
#include <tc.h>
|
||||
|
||||
std::string io_LocalFileSystem_TestClass::kDirPath = "./testdir";
|
||||
std::string io_LocalFileSystem_TestClass::kUtf8DirPath = "./ЀЁЂЃЄЅテスト/";
|
||||
std::string io_LocalFileSystem_TestClass::kAsciiFilePath = "LocalFileTest.bin";
|
||||
std::string io_LocalFileSystem_TestClass::kUtf8TestPath = "ЀЁЂЃЄЅ-מבחן-тест-テスト.bin";
|
||||
std::string io_LocalFileSystem_TestClass::kNotExistFilePath = "ThisDoesNotExist.bin";
|
||||
|
||||
void io_LocalFileSystem_TestClass::runAllTests(void)
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] START" << std::endl;
|
||||
test_CreateFile_NotExist();
|
||||
test_CreateFile_DoesExist();
|
||||
test_CreateFile_UnicodePath();
|
||||
test_RemoveFile_DoesExist();
|
||||
test_RemoveFile_NotExist();
|
||||
test_RemoveFile_UnicodePath();
|
||||
|
||||
test_CreateDirectory_NotExist();
|
||||
test_CreateDirectory_DoesExist();
|
||||
test_CreateDirectory_UnicodePath();
|
||||
test_RemoveDirectory_DoesExist();
|
||||
test_RemoveDirectory_NotExist();
|
||||
test_RemoveDirectory_UnicodePath();
|
||||
test_RemoveDirectory_HasChildren();
|
||||
test_RemoveDirectory_NotDirectoryActuallyFile();
|
||||
test_GetDirectoryListing_DoesExist();
|
||||
test_GetDirectoryListing_NotExist();
|
||||
test_GetDirectoryListing_UnicodePath();
|
||||
test_ChangeWorkingDirectory_DoesExist();
|
||||
test_ChangeWorkingDirectory_NotExist();
|
||||
test_ChangeWorkingDirectory_UnicodePath();
|
||||
std::cout << "[tc::io::LocalFileSystem] END" << std::endl;
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_CreateFile_NotExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_CreateFile_NotExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.createFile(kAsciiFilePath);
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_CreateFile_DoesExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_CreateFile_DoesExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.createFile(kAsciiFilePath);
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_CreateFile_UnicodePath()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_CreateFile_UnicodePath : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.createFile(kUtf8TestPath);
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveFile_DoesExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveFile_DoesExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.removeFile(kAsciiFilePath);
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveFile_NotExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveFile_NotExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.removeFile(kNotExistFilePath);
|
||||
std::cout << "FAIL (Did not throw exception when stream was not present on FS)" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "PASS (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveFile_UnicodePath()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveFile_UnicodePath : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.removeFile(kUtf8TestPath);
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_CreateDirectory_NotExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_CreateDirectory_NotExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.createDirectory(kDirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_CreateDirectory_DoesExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_CreateDirectory_DoesExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.createDirectory(kDirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_CreateDirectory_UnicodePath()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_CreateDirectory_UnicodePath : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.createDirectory(kUtf8DirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveDirectory_DoesExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveDirectory_DoesExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.removeDirectory(kDirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveDirectory_NotExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveDirectory_NotExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.removeDirectory(kDirPath);
|
||||
std::cout << "FAIL (did not throw exception on expected error)" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "PASS (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveDirectory_UnicodePath()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveDirectory_UnicodePath : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.removeDirectory(kUtf8DirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveDirectory_HasChildren()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveDirectory_HasChildren : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
tc::io::Path dir_child_path = tc::io::Path(kDirPath) + tc::io::Path(kUtf8DirPath);
|
||||
tc::io::Path stream_child_path = tc::io::Path(kDirPath) + tc::io::Path(kAsciiFilePath);
|
||||
|
||||
try
|
||||
{
|
||||
local_storage.createDirectory(kDirPath);
|
||||
local_storage.createDirectory(dir_child_path);
|
||||
local_storage.createFile(stream_child_path);
|
||||
local_storage.removeDirectory(kDirPath);
|
||||
std::cout << "FAIL (did not throw exception on expected error)" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "PASS (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
|
||||
local_storage.removeDirectory(dir_child_path);
|
||||
local_storage.removeFile(stream_child_path);
|
||||
local_storage.removeDirectory(kDirPath);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << "UNHANDLED EXCEPTION (" << e.what() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_RemoveDirectory_NotDirectoryActuallyFile()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_RemoveDirectory_NotDirectoryActuallyFile : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
try
|
||||
{
|
||||
local_storage.createFile(kAsciiFilePath);
|
||||
local_storage.removeDirectory(kAsciiFilePath);
|
||||
std::cout << "FAIL (did not throw exception on expected error)" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "PASS (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
|
||||
local_storage.removeFile(kAsciiFilePath);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << "UNHANDLED EXCEPTION (" << e.what() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_GetDirectoryListing_DoesExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_GetDirectoryListing_DoesExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
std::vector<std::string> file_list;
|
||||
std::vector<std::string> dir_list;
|
||||
|
||||
file_list.push_back("streamA.bin");
|
||||
file_list.push_back("streamB.bin");
|
||||
file_list.push_back("streamC.bin");
|
||||
file_list.push_back("streamD.bin");
|
||||
|
||||
dir_list.push_back("dir000");
|
||||
dir_list.push_back("dir001");
|
||||
dir_list.push_back("dir002");
|
||||
dir_list.push_back("dir003");
|
||||
|
||||
local_storage.createDirectory(kDirPath);
|
||||
|
||||
for (size_t i = 0; i < file_list.size(); i++)
|
||||
{
|
||||
local_storage.createFile(tc::io::Path(kDirPath) + tc::io::Path(file_list[i]));
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < dir_list.size(); i++)
|
||||
{
|
||||
local_storage.createDirectory(tc::io::Path(kDirPath) + tc::io::Path(dir_list[i]));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
tc::io::sDirectoryListing info;
|
||||
|
||||
local_storage.getDirectoryListing(kDirPath, info);
|
||||
|
||||
// + 2 for "." & ".."
|
||||
if (info.dir_list.size() != (dir_list.size() + 2))
|
||||
{
|
||||
throw tc::Exception("Unexpected directory count");
|
||||
}
|
||||
|
||||
if (info.file_list.size() != file_list.size())
|
||||
{
|
||||
throw tc::Exception("Unexpected stream count");
|
||||
}
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < file_list.size(); i++)
|
||||
{
|
||||
local_storage.removeFile(tc::io::Path(kDirPath) + tc::io::Path(file_list[i]));
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < dir_list.size(); i++)
|
||||
{
|
||||
local_storage.removeDirectory(tc::io::Path(kDirPath) + tc::io::Path(dir_list[i]));
|
||||
}
|
||||
|
||||
local_storage.removeDirectory(tc::io::Path(kDirPath));
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << "UNHANDLED EXCEPTION (" << e.what() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_GetDirectoryListing_NotExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_GetDirectoryListing_NotExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
tc::io::sDirectoryListing info;
|
||||
local_storage.getDirectoryListing(kNotExistFilePath, info);
|
||||
std::cout << "FAIL (did not throw exception on expected error)" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "PASS (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_GetDirectoryListing_UnicodePath()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_GetDirectoryListing_UnicodePath : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
std::vector<std::string> file_list;
|
||||
std::vector<std::string> dir_list;
|
||||
|
||||
file_list.push_back("streamA.bin");
|
||||
file_list.push_back("streamB.bin");
|
||||
file_list.push_back("streamC.bin");
|
||||
file_list.push_back("streamD.bin");
|
||||
|
||||
dir_list.push_back("dir000");
|
||||
dir_list.push_back("dir001");
|
||||
dir_list.push_back("dir002");
|
||||
dir_list.push_back("dir003");
|
||||
|
||||
local_storage.createDirectory(kUtf8DirPath);
|
||||
|
||||
for (size_t i = 0; i < file_list.size(); i++)
|
||||
{
|
||||
local_storage.createFile(tc::io::Path(kUtf8DirPath) + tc::io::Path(file_list[i]));
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < dir_list.size(); i++)
|
||||
{
|
||||
local_storage.createDirectory(tc::io::Path(kUtf8DirPath) + tc::io::Path(dir_list[i]));
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
tc::io::sDirectoryListing info;
|
||||
|
||||
local_storage.getDirectoryListing(kUtf8DirPath, info);
|
||||
|
||||
// + 2 for "." & ".."
|
||||
if (info.dir_list.size() != (dir_list.size() + 2))
|
||||
{
|
||||
throw tc::Exception("Unexpected directory count");
|
||||
}
|
||||
|
||||
if (info.file_list.size() != file_list.size())
|
||||
{
|
||||
throw tc::Exception("Unexpected stream count");
|
||||
}
|
||||
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < file_list.size(); i++)
|
||||
{
|
||||
local_storage.removeFile(tc::io::Path(kUtf8DirPath) + tc::io::Path(file_list[i]));
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < dir_list.size(); i++)
|
||||
{
|
||||
local_storage.removeDirectory(tc::io::Path(kUtf8DirPath) + tc::io::Path(dir_list[i]));
|
||||
}
|
||||
|
||||
local_storage.removeDirectory(tc::io::Path(kUtf8DirPath));
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << "UNHANDLED EXCEPTION (" << e.what() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_ChangeWorkingDirectory_DoesExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_ChangeWorkingDirectory_DoesExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
tc::io::Path old_dir;
|
||||
local_storage.getWorkingDirectory(old_dir);
|
||||
|
||||
try
|
||||
{
|
||||
local_storage.createDirectory(kDirPath);
|
||||
local_storage.setWorkingDirectory(kDirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
|
||||
local_storage.setWorkingDirectory(old_dir);
|
||||
local_storage.removeDirectory(tc::io::Path(kDirPath));
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << "UNHANDLED EXCEPTION (" << e.what() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_ChangeWorkingDirectory_NotExist()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_ChangeWorkingDirectory_NotExist : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
local_storage.setWorkingDirectory(kNotExistFilePath);
|
||||
std::cout << "FAIL (did not throw exception on expected error)" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "PASS (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void io_LocalFileSystem_TestClass::test_ChangeWorkingDirectory_UnicodePath()
|
||||
{
|
||||
std::cout << "[tc::io::LocalFileSystem] test_ChangeWorkingDirectory_UnicodePath : " << std::flush;
|
||||
try
|
||||
{
|
||||
tc::io::LocalFileSystem local_storage;
|
||||
|
||||
tc::io::Path old_dir;
|
||||
local_storage.getWorkingDirectory(old_dir);
|
||||
|
||||
try
|
||||
{
|
||||
local_storage.createDirectory(kUtf8DirPath);
|
||||
local_storage.setWorkingDirectory(kUtf8DirPath);
|
||||
std::cout << "PASS" << std::endl;
|
||||
}
|
||||
catch (const tc::Exception& e)
|
||||
{
|
||||
std::cout << "FAIL (" << e.error() << ")" << std::endl;
|
||||
}
|
||||
|
||||
local_storage.setWorkingDirectory(old_dir);
|
||||
local_storage.removeDirectory(kUtf8DirPath);
|
||||
}
|
||||
catch (const std::exception& e)
|
||||
{
|
||||
std::cout << "UNHANDLED EXCEPTION (" << e.what() << ")" << std::endl;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user