11using namespace Microsoft::VisualStudio::CppUnitTestFramework;
13#define TEST_FOLDER _T("TranTest")
14#define TEST_FILE _T("TranTest.txt")
15#define TEST_FILE_1 _T("TranTest1.bin")
16#define TEST_FILE_2 _T("TranTest2.bin")
23 TEST_CLASS_INITIALIZE (ClassInitialize)
25 Logger::WriteMessage (
"TransactionFileTest class initialize.\n");
28 TEST_CLASS_CLEANUP (ClassCleanup)
30 Logger::WriteMessage (
"TransactionFileTest class cleanup.\n");
33 TEST_METHOD_INITIALIZE (MethodInitialize)
38 Assert::IsTrue (ret, _T (
"MethodInitialize failed.\n"));
44 Assert::IsTrue (ret, _T (
"MethodInitialize failed.\n"));
51 Assert::IsTrue (ret, _T (
"MethodInitialize failed.\n"));
58 Assert::IsTrue (ret, _T (
"MethodInitialize failed.\n"));
61 Logger::WriteMessage (
"TransactinFileTest method initialize.\n");
64 TEST_METHOD_CLEANUP (MethodCleanup)
69 Assert::IsTrue (ret, _T (
"MethodInitialize failed.\n"));
75 Assert::IsTrue (ret, _T (
"MethodCleanup failed.\n"));
81 Assert::IsTrue (ret, _T (
"MethodCleanup failed.\n"));
84 Logger::WriteMessage (
"TransactionFileTest method cleanup.\n");
87 TEST_METHOD (TransactionInitializeCommitTest)
92 ret = tran.
Init (_T (
"TransactionInitializeCommitTest"));
93 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
96 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Commit() failed.\n"));
99 TEST_METHOD (TransactionInitializeRollbackTest)
104 ret = tran.
Init (_T (
"TransactionInitializeRollbackTest"));
105 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
108 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Rollback() failed.\n"));
111 TEST_METHOD (TransactionCreateDirectoryCommitTest)
116 ret = tran.
Init (_T (
"TransactionCreateDirectoryCommitTest"));
117 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
120 Assert::IsTrue (ret, _T (
"TransactionFileUtility::CreateFolder() failed.\n"));
123 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Commit() failed.\n"));
126 Assert::IsTrue (ret, _T (
"directory is not created.\n"));
129 Assert::IsTrue (ret, _T (
"This is not a folder.\n"));
132 TEST_METHOD (TransactionCreateDirectoryRollbackTest1)
138 ret = tran->Init (_T (
"TransactionCreateDirectoryRollbackTest1"));
139 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
142 Assert::IsTrue (ret, _T (
"TransactionFileUtility::CreateFolder() failed.\n"));
147 Assert::IsFalse (ret, _T (
"directory is still exist.\n"));
150 TEST_METHOD (TransactionCreateDirectoryRollbackTest2)
155 ret = tran.
Init (_T (
"TransactionCreateDirectoryRollbackTest2"));
156 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
159 Assert::IsTrue (ret, _T (
"TransactionFileUtility::CreateFolder() failed.\n"));
162 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Rollback() failed.\n"));
165 Assert::IsFalse (ret, _T (
"directory is still exist.\n"));
168 TEST_METHOD (TransactionDeleteCommitTest)
173 ret = tran.
Init (_T (
"TransactionDeleteCommitTest"));
174 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
177 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Delete() failed.\n"));
180 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Commit() failed.\n"));
183 Assert::IsFalse (ret, _T (
"file is still exist.\n"));
186 TEST_METHOD (TransactionDeleteRollbackTest1)
192 ret = tran->Init (_T (
"TransactionDeleteRollbackTest1"));
193 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
196 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Delete() failed.\n"));
201 Assert::IsTrue (ret, _T (
"file is not exist.\n"));
204 TEST_METHOD (TransactionDeleteRollbackTest2)
209 ret = tran.
Init (_T (
"TransactionDeleteRollbackTest2"));
210 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
213 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Delete() failed.\n"));
216 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Rollback() failed.\n"));
219 Assert::IsTrue (ret, _T (
"file is not exist.\n"));
222 TEST_METHOD (TransactionCopyCommitTest)
227 ret = tran.
Init (_T (
"TransactionCopyCommitTest"));
228 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
231 Assert::IsTrue (ret, _T (
"can't copy file.\n"));
234 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Commit() failed.\n"));
237 Assert::IsTrue (ret, _T (
"file not exist.\n"));
240 TEST_METHOD (TransactionCopyRollbackTest1)
246 ret = tran->Init (_T (
"TransactionCopyRollbackTest1"));
247 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
250 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Copy() failed.\n"));
253 Assert::IsTrue (ret, _T (
"Transaction file copy failed.\n"));
258 Assert::IsFalse (ret, _T (
"file is still exist.\n"));
261 TEST_METHOD (TransactionCopyRollbackTest2)
266 ret = tran.
Init (_T (
"TransactionCopyRollbackTest2"));
267 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
270 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Copy() failed.\n"));
273 Assert::IsTrue (ret, _T (
"Transaction file copy failed.\n"));
276 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Rollback() failed.\n"));
279 Assert::IsFalse (ret, _T (
"file is still exist.\n"));
282 TEST_METHOD (TransactionMoveCommitTest)
287 ret = tran.
Init (_T (
"TransactionMoveCommitTest"));
288 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
291 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Move() failed.\n"));
294 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Commit() failed.\n"));
297 Assert::IsFalse (ret, _T (
"file is still exist.\n"));
300 Assert::IsTrue (ret, _T (
"FileUtility::IsExist() failed.\n"));
303 TEST_METHOD (TransactionMoveRollbackTest1)
309 ret = tran->Init (_T (
"TransactionMoveRollbackTest1"));
310 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Init() failed.\n"));
313 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Move() failed.\n"));
318 Assert::IsTrue (ret, _T (
"FileUtility::IsExist() failed.\n"));
321 Assert::IsFalse (ret, _T (
"file is still exist.\n"));
324 TEST_METHOD (TransactionMoveRollbackTest2)
329 ret = tran.
Init (_T (
"TransactionMoveRollbackTest2"));
330 Assert::IsTrue (ret, _T(
"TransactionFileUtility::Init() failed.\n"));
333 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Move() failed.\n"));
336 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Rollback() failed.\n"));
339 Assert::IsTrue (ret, _T(
"file is not exist.\n"));
342 Assert::IsFalse (ret, _T(
"file is still exist.\n"));
345 TEST_METHOD (TransactionMakeHardLinkCommitTest)
350 ret = tran.
Init (_T (
"TransactionMakeHardLinkCommitTest"));
351 Assert::IsTrue (ret);
354 Assert::IsTrue (ret, _T (
"TransactionFileUtility::MakeHardLink() failed.\n"));
357 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Commit() failed.\n"));
360 Assert::IsTrue (ret);
363 Assert::IsTrue (ret);
366 TEST_METHOD (TransactionMakeHardLinkRollbackTest1)
372 ret = tran->Init (_T (
"TransactionMakeHardLinkRollbackTest1"));
373 Assert::IsTrue (ret);
376 Assert::IsTrue (ret, _T (
"TransactionFileUtility::MakeHardLink() failed.\n"));
381 Assert::IsTrue (ret, _T(
"file is not exist.\n"));
384 Assert::IsFalse (ret, _T(
"file is still exist.\n"));
387 TEST_METHOD (TransactionMakeHardLinkRollbackTest2)
392 ret = tran.
Init (_T (
"TransactionMakeHardLinkRollbackTest2"));
393 Assert::IsTrue (ret);
396 Assert::IsTrue (ret, _T (
"TransactionFileUtility::MakeHardLink() failed.\n"));
399 Assert::IsTrue (ret, _T (
"TransactionFileUtility::Rollback() failed.\n"));
402 Assert::IsTrue (ret, _T(
"file is not exist.\n"));
405 Assert::IsFalse (ret, _T(
"file is still exist.\n"));
408 TEST_METHOD (TransactionIOCommitTest)
414 ret = tran.
Init (_T (
"TransactionIOCommitTest"));
415 Assert::IsTrue (ret);
421 GENERIC_READ | GENERIC_WRITE,
427 LPCTSTR lpctszContext = _T (
"TEST TEST TEST");
428 dwLen = tranFile.
Write (lpctszContext,
static_cast<DWORD
>(_tcslen (lpctszContext) *
sizeof (TCHAR)));
429 Assert::AreEqual<SIZE_T> (_tcslen (lpctszContext) *
sizeof (TCHAR), dwLen);
434 Assert::AreEqual<SIZE_T> (_tcslen (lpctszContext) *
sizeof (TCHAR),
size);
439 Assert::IsTrue (ret);
444 dwLen = tranFile.
Read (tszBuf,
sizeof (tszBuf));
445 tszBuf[dwLen /
sizeof (TCHAR)] =
'\0';
446 Assert::AreEqual<DWORD> (
static_cast<DWORD
>(_tcslen (lpctszContext) *
sizeof (TCHAR)), dwLen);
447 Assert::AreEqual<int> (0, _tcscmp (lpctszContext, tszBuf));
451 ret = tranFile.
Flush ();
452 Assert::IsTrue (ret, _T(
"TransactionFile::Flush() failed.\n"));
456 ret = tranFile.
Close ();
457 Assert::IsTrue (ret, _T(
"TransactionFile::Close() failed.\n"));
462 Assert::IsTrue (ret, _T(
"TransactionFile::Commit() failed.\n"));
467 TEST_METHOD (TransactionIORollbackTest)
473 ret = tran.
Init (_T (
"TransactionIORollbackTest"));
474 Assert::IsTrue (ret);
480 GENERIC_READ | GENERIC_WRITE,
486 LPCTSTR lpctszContext = _T (
"TEST TEST TEST");
487 dwLen = tranFile.
Write (lpctszContext,
static_cast<DWORD
>(_tcslen (lpctszContext) *
sizeof (TCHAR)));
488 Assert::AreEqual<SIZE_T> (_tcslen (lpctszContext) *
sizeof (TCHAR), dwLen);
493 Assert::AreEqual<SIZE_T> (_tcslen (lpctszContext) *
sizeof (TCHAR),
size);
498 Assert::IsTrue (ret, _T(
"TransactionFile::SetPointer() failed.\n"));
503 dwLen = tranFile.
Read (tszBuf,
sizeof (tszBuf));
504 tszBuf[dwLen /
sizeof (TCHAR)] =
'\0';
505 Assert::AreEqual<SIZE_T> (_tcslen (lpctszContext) *
sizeof (TCHAR), dwLen);
506 Assert::AreEqual<int> (0, _tcscmp (lpctszContext, tszBuf));
510 ret = tranFile.
Flush ();
511 Assert::IsTrue (ret, _T(
"TransactionFile::Flush() failed.\n"));
515 ret = tranFile.
Close ();
516 Assert::IsTrue (ret, _T(
"TransactionFile::Close() failed.\n"));
521 Assert::IsTrue (ret, _T(
"TransactionFile::Rollback() failed.\n"));
ファイルハンドルを伴わないファイルIOに関するWindowsAPIを集約した クラス
トランザクションNTFSに関するAPIを集約したクラス
LONGLONG APIENTRY GetSize() const
ファイルサイズを取得します。
BOOL APIENTRY SetPointer(DWORD dwMoveMethod, LARGE_INTEGER liDistanceToMove={ 0 }) const
ファイルポインタを移動します。
static BOOL APIENTRY RemoveDir(LPCTSTR name)
ディレクトリの削除
static BOOL APIENTRY IsDirectory(LPCTSTR name)
ディレクトリの存在確認
static BOOL APIENTRY Copy(LPCTSTR source, LPCTSTR dest, BOOL bFailIfExists=FALSE)
ファイルのコピー
static BOOL APIENTRY IsExist(LPCTSTR name)
ディレクトリ・ファイルの存在確認
static BOOL APIENTRY Delete(LPCTSTR name)
ファイルの削除
HANDLE APIENTRY GetHandle() const
継承先はこの関数でハンドルを取得します。
BOOL APIENTRY Close()
使用しなくなったハンドルはこれでクローズします。
BOOL APIENTRY Flush() const
まだデバイスに出力されていないデータを吐き出させます。
DWORD APIENTRY Read(LPVOID lpvBuffer, DWORD dwSize) const
HANDLEを使ってデータを読み込みます。
DWORD APIENTRY Write(LPCVOID lpcvBuffer, DWORD dwSize) const
HANDLEを使ってデータを書き込みます。
BOOL APIENTRY Create(HANDLE hTransaction, LPCTSTR pctszFileName, DWORD dwDesiredAccess, DWORD dwShareMode, DWORD dwCreationDisposition)
ファイルを作成、オープンします。
トランザクションNTFSに関するユーティリティクラス
BOOL APIENTRY Copy(LPCTSTR lpctszSrcFileName, LPCTSTR lpctszDstFileName) const
ファイルのコピー
BOOL APIENTRY Delete(LPCTSTR lpctszFileName) const
ファイルの削除
BOOL APIENTRY Init(LPWSTR lpwszDescription)
初期化
BOOL APIENTRY MakeHardLink(LPCTSTR lpctszSrcFileName, LPCTSTR lpctszLinkFileName) const
ハードリンクの作成
BOOL APIENTRY Rollback() const
トランザクションのロールバック
BOOL APIENTRY CreateFolder(LPCTSTR lpctszFolderName) const
フォルダの作成
BOOL APIENTRY Move(LPCTSTR lpctszSrcFileName, LPCTSTR lpctszDstFileName) const
ファイルの移動
BOOL APIENTRY Commit() const
トランザクションのコミット
bool APIENTRY New(Args... args)
管理オブジェクトの作成
VOID APIENTRY Delete()
管理オブジェクトの開放