From: Tomohisa Hirami Date: Tue, 3 Mar 2009 14:56:57 +0000 (+0900) Subject: imporve framework and refactoring YAEditDoc about undo X-Git-Tag: TOMBO_2_0_BETA_5~16 X-Git-Url: http://git.sourceforge.jp/view?p=tombo%2FTombo.git;a=commitdiff_plain;h=611d05ea16c5ec35b0d2a3b6a2771c4b6cb2f238 imporve framework and refactoring YAEditDoc about undo * add improved assert method to unit test framework. * add test case to YAEditDoc. * add testcase project to Tombo.sln * expose UndoInfo --- diff --git a/Src/YAEdit/YAEditDoc.cpp b/Src/YAEdit/YAEditDoc.cpp index 093f486..5b33541 100644 --- a/Src/YAEdit/YAEditDoc.cpp +++ b/Src/YAEdit/YAEditDoc.cpp @@ -17,30 +17,30 @@ // undo info ///////////////////////////////////////////////////////////////////////////// -class UndoInfo { -public: - LPTSTR pUndoStr; - Region rRegion; - - UndoInfo(LPTSTR pUndoStr); - ~UndoInfo(); -}; - -UndoInfo::UndoInfo(LPTSTR p) : pUndoStr(p) +UndoInfo::UndoInfo() : pPrevStr(NULL), pNewStr(NULL) { } + UndoInfo::~UndoInfo() { - delete[] pUndoStr; + delete[] pPrevStr; } -LPCTSTR YAEditDoc::GetUndoStr() { if (pUndo) return pUndo->pUndoStr; else return NULL; } -const Region YAEditDoc::GetUndoRegion() -{ - Region r(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); - if (pUndo) return pUndo->rRegion; - else return r; +BOOL UndoInfo::SetPrev(const Region *pRegion, LPTSTR p) { + rPrevRegion = *pRegion; + pPrevStr = p; + return TRUE; +} + +BOOL UndoInfo::SetNew(const Region *pRegion, LPTSTR p) { + rNewRegion = *pRegion; + pNewStr = p; + return TRUE; +} + +BOOL UndoInfo::CmdUndo(YAEditDoc *pDoc) { + return pDoc->ReplaceString(&rNewRegion, pPrevStr); } ///////////////////////////////////////////////////////////////////////////// @@ -127,14 +127,16 @@ BOOL YAEditDoc::ReplaceString(const Region *pDelRegion, LPCTSTR pString) // if read only mode, ignore editing. if (bReadOnly) return TRUE; - DWORD nPhLinesBefore = pPhLineMgr->MaxLine(); + if (pUndo == NULL) { + pUndo = new UndoInfo(); + if (pUndo == NULL) { SetLastError(ERROR_NOT_ENOUGH_MEMORY); return FALSE; } + } - // get string which removed by this action. - LPTSTR pOldTxt = pPhLineMgr->GetRegionString(pDelRegion); + DWORD nPhLinesBefore = pPhLineMgr->MaxLine(); - if (pUndo != NULL) { - delete pUndo; - } + // preserve string and region removed by this action. + LPTSTR pPrevText = pPhLineMgr->GetRegionString(pDelRegion); + pUndo->SetPrev(pDelRegion, pPrevText); // delete region and insert string Region rNewRegion; @@ -142,14 +144,12 @@ BOOL YAEditDoc::ReplaceString(const Region *pDelRegion, LPCTSTR pString) if (!pPhLineMgr->ReplaceRegion(pDelRegion, pString, &nAffLines, &rNewRegion)) { return FALSE; } - DWORD nPhLinesAfter = pPhLineMgr->MaxLine(); - // remember old string - pUndo = new UndoInfo(pOldTxt); - if (pUndo == NULL) { SetLastError(ERROR_NOT_ENOUGH_MEMORY); return FALSE; } - pUndo->rRegion = rNewRegion; + // preserve string and region after replaced. + pUndo->SetNew(&rNewRegion, StringDup(pString)); // notify to view + DWORD nPhLinesAfter = pPhLineMgr->MaxLine(); if (pListener && !pListener->UpdateNotify(pPhLineMgr, pDelRegion, &rNewRegion, nPhLinesBefore, nPhLinesAfter, nAffLines)) { return FALSE; } @@ -161,13 +161,11 @@ BOOL YAEditDoc::ReplaceString(const Region *pDelRegion, LPCTSTR pString) BOOL YAEditDoc::Undo() { if (pUndo == NULL) return TRUE; - UndoInfo *p = pUndo; - AutoPointer ap(p); - pUndo = NULL; - if (!ReplaceString(&(p->rRegion), p->pUndoStr)) return FALSE; - - return TRUE; + BOOL bResult = pUndo->CmdUndo(this); + delete pUndo; + pUndo = NULL; + return bResult; } ///////////////////////////////////////////////////////////////////////////// @@ -252,12 +250,3 @@ void YAEditDoc::ConvertBytesToCoordinate(DWORD nPos, Coordinate *pPos) pPos->row = n - 1; pPos->col = p->pLine->nUsed; } - -///////////////////////////////////////////////////////////////////////////// -// -///////////////////////////////////////////////////////////////////////////// - -BOOL YAEditDoc::InsertUndoPoint() -{ - return TRUE; -} \ No newline at end of file diff --git a/Src/YAEdit/YAEditDoc.h b/Src/YAEdit/YAEditDoc.h index aa077b3..b2d32a3 100644 --- a/Src/YAEdit/YAEditDoc.h +++ b/Src/YAEdit/YAEditDoc.h @@ -9,6 +9,7 @@ class YAEditListener; class UndoInfo; + //////////////////////////////////////////////////// // Document container for YAE //////////////////////////////////////////////////// @@ -63,14 +64,33 @@ public: void ConvertBytesToCoordinate(DWORD nPos, Coordinate *pPos); //////////////////////////////////////////////////// - // set current document status as undo point - BOOL InsertUndoPoint(); - - //////////////////////////////////////////////////// // only for testing +#ifdef UNIT_TEST + UndoInfo *GetUndoInfo() { return pUndo; } +#endif +}; + +///////////////////////////////////////////////////////////////////////////// +// undo info +///////////////////////////////////////////////////////////////////////////// + +class UndoInfo { +#ifdef UNIT_TEST +public: +#endif + LPTSTR pPrevStr; + Region rPrevRegion; + + LPTSTR pNewStr; + Region rNewRegion; + +public: + UndoInfo(); + ~UndoInfo(); - LPCTSTR GetUndoStr(); - const Region GetUndoRegion(); + BOOL SetPrev(const Region *pRegion, LPTSTR pPrevStr); + BOOL SetNew(const Region *pRegion, LPTSTR pNewStr); + BOOL CmdUndo(YAEditDoc *pDoc); }; #endif \ No newline at end of file diff --git a/UnitTest/UnitTest/TestRunner.cpp b/UnitTest/UnitTest/TestRunner.cpp index 32bc69c..85dc6cb 100644 --- a/UnitTest/UnitTest/TestRunner.cpp +++ b/UnitTest/UnitTest/TestRunner.cpp @@ -49,6 +49,16 @@ void TestRunner::TestFail(LPCTSTR pTestCase) { nFail++; } +void TestRunner::assert(BOOL b, LPCTSTR pFile, long lLine) { + if (b) { + TestSuccess(); + } else { + TCHAR buf[1024]; + sprintf(buf, " %s : %ld", pFile, lLine); + TestFail(buf); + } +} + void TestRunner::assert(BOOL b) { if (b) { TestSuccess(); diff --git a/UnitTest/UnitTest/TestRunner.h b/UnitTest/UnitTest/TestRunner.h index 0713010..97cfcf8 100644 --- a/UnitTest/UnitTest/TestRunner.h +++ b/UnitTest/UnitTest/TestRunner.h @@ -25,4 +25,8 @@ public: void TestFail(LPCTSTR pTestCaseName); void assert(BOOL b); + void assert(BOOL b, LPCTSTR pFile, long lLine); }; + +#define ASSERT(b) runner->assert(b, __FILE__, __LINE__) +#define TESTCASE runner->WriteMsg(__FUNCTION__) \ No newline at end of file diff --git a/UnitTest/UnitTest/testcase/YAEditDocTest.cpp b/UnitTest/UnitTest/testcase/YAEditDocTest.cpp index 099873b..c2bc21f 100644 --- a/UnitTest/UnitTest/testcase/YAEditDocTest.cpp +++ b/UnitTest/UnitTest/testcase/YAEditDocTest.cpp @@ -23,6 +23,7 @@ static void ConvertBytesToCoordinateTest2(); static void UndoTest1(); static void UndoTest2(); static void UndoTest3(); +static void UndoTest4(); void YAEditDocTest(TestRunner *r) { runner = r; @@ -41,7 +42,7 @@ void YAEditDocTest(TestRunner *r) { UndoTest1(); UndoTest2(); UndoTest3(); - + UndoTest4(); } //////////////////////////////////////////////// @@ -50,65 +51,65 @@ void YAEditDocTest(TestRunner *r) { void LoadTest1() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT(""), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 1); + ASSERT(pLM->MaxLine() == 1); LineInfo *pLi = pLM->GetLineInfo(0); - runner->assert(pLi->pLine->nUsed == 0); + ASSERT(pLi->pLine->nUsed == 0); } // 1 line string without CRLF void LoadTest2() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("Hello world"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 1); + ASSERT(pLM->MaxLine() == 1); LineInfo *pLi = pLM->GetLineInfo(0); - runner->assert(pLi->pLine->nUsed == 11); + ASSERT(pLi->pLine->nUsed == 11); } // 2 line string void LoadTest3() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("Hellow\r\nworld"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 2); + ASSERT(pLM->MaxLine() == 2); LineInfo *pLi0 = pLM->GetLineInfo(0); - runner->assert(pLi0->pLine->nUsed == 6); + ASSERT(pLi0->pLine->nUsed == 6); LPCTSTR p0 = pLM->GetLine(0); - runner->assert(_tcsncmp(p0, TEXT("Hellow"), 6) == 0); + ASSERT(_tcsncmp(p0, TEXT("Hellow"), 6) == 0); LineInfo *pLi1 = pLM->GetLineInfo(1); - runner->assert(pLi1->pLine->nUsed == 5); + ASSERT(pLi1->pLine->nUsed == 5); LPCTSTR p1 = pLM->GetLine(1); - runner->assert(_tcsncmp(p1, TEXT("world"), 5) == 0); + ASSERT(_tcsncmp(p1, TEXT("world"), 5) == 0); } // 2 line string end with CRLF void LoadTest4() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("Hello\r\n"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 2); + ASSERT(pLM->MaxLine() == 2); LineInfo *pLi0 = pLM->GetLineInfo(0); - runner->assert(pLi0->pLine->nUsed == 5); + ASSERT(pLi0->pLine->nUsed == 5); LPCTSTR p0 = pLM->GetLine(0); - runner->assert(_tcsncmp(p0, TEXT("Hello"), 5) == 0); + ASSERT(_tcsncmp(p0, TEXT("Hello"), 5) == 0); LineInfo *pLi1 = pLM->GetLineInfo(1); - runner->assert(pLi1->pLine->nUsed == 0); + ASSERT(pLi1->pLine->nUsed == 0); } // 2 line string start with CRLF @@ -116,19 +117,19 @@ void LoadTest5() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("\r\nHello"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 2); + ASSERT(pLM->MaxLine() == 2); LineInfo *pLi0 = pLM->GetLineInfo(0); - runner->assert(pLi0->pLine->nUsed == 0); + ASSERT(pLi0->pLine->nUsed == 0); LineInfo *pLi1 = pLM->GetLineInfo(1); - runner->assert(pLi1->pLine->nUsed == 5); + ASSERT(pLi1->pLine->nUsed == 5); LPCTSTR p1 = pLM->GetLine(1); - runner->assert(_tcsncmp(p1, TEXT("Hello"), 5) == 0); + ASSERT(_tcsncmp(p1, TEXT("Hello"), 5) == 0); } @@ -140,22 +141,22 @@ void LoadTest6() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("\r\n\r\n\r\n"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 4); + ASSERT(pLM->MaxLine() == 4); LineInfo *pLi0 = pLM->GetLineInfo(0); - runner->assert(pLi0->pLine->nUsed == 0); + ASSERT(pLi0->pLine->nUsed == 0); LineInfo *pLi1 = pLM->GetLineInfo(1); - runner->assert(pLi1->pLine->nUsed == 0); + ASSERT(pLi1->pLine->nUsed == 0); LineInfo *pLi2 = pLM->GetLineInfo(2); - runner->assert(pLi2->pLine->nUsed == 0); + ASSERT(pLi2->pLine->nUsed == 0); LineInfo *pLi3 = pLM->GetLineInfo(3); - runner->assert(pLi3->pLine->nUsed == 0); + ASSERT(pLi3->pLine->nUsed == 0); } @@ -169,31 +170,31 @@ void LoadTest7() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("\r\n\r\nabc\r\n\r\n\r\n"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 6); + ASSERT(pLM->MaxLine() == 6); LineInfo *pLi0 = pLM->GetLineInfo(0); - runner->assert(pLi0->pLine->nUsed == 0); + ASSERT(pLi0->pLine->nUsed == 0); LineInfo *pLi1 = pLM->GetLineInfo(1); - runner->assert(pLi1->pLine->nUsed == 0); + ASSERT(pLi1->pLine->nUsed == 0); LineInfo *pLi2 = pLM->GetLineInfo(2); - runner->assert(pLi2->pLine->nUsed == 3); + ASSERT(pLi2->pLine->nUsed == 3); LPCTSTR p2 = pLM->GetLine(2); - runner->assert(_tcsncmp(p2, TEXT("abc"), 3) == 0); + ASSERT(_tcsncmp(p2, TEXT("abc"), 3) == 0); LineInfo *pLi3 = pLM->GetLineInfo(3); - runner->assert(pLi3->pLine->nUsed == 0); + ASSERT(pLi3->pLine->nUsed == 0); LineInfo *pLi4 = pLM->GetLineInfo(4); - runner->assert(pLi4->pLine->nUsed == 0); + ASSERT(pLi4->pLine->nUsed == 0); LineInfo *pLi5 = pLM->GetLineInfo(5); - runner->assert(pLi5->pLine->nUsed == 0); + ASSERT(pLi5->pLine->nUsed == 0); } @@ -204,25 +205,25 @@ void LoadTest8() { YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("abc\r\ndef\r\nghi"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); PhysicalLineManager *pLM = pDoc->GetPhMgr(); - runner->assert(pLM->MaxLine() == 3); + ASSERT(pLM->MaxLine() == 3); LineInfo *pLi0 = pLM->GetLineInfo(0); - runner->assert(pLi0->pLine->nUsed == 3); + ASSERT(pLi0->pLine->nUsed == 3); LPCTSTR p0 = pLM->GetLine(0); - runner->assert(_tcsncmp(p0, TEXT("abc"), 3) == 0); + ASSERT(_tcsncmp(p0, TEXT("abc"), 3) == 0); LineInfo *pLi1 = pLM->GetLineInfo(1); - runner->assert(pLi1->pLine->nUsed == 3); + ASSERT(pLi1->pLine->nUsed == 3); LPCTSTR p1 = pLM->GetLine(1); - runner->assert(_tcsncmp(p1, TEXT("def"), 3) == 0); + ASSERT(_tcsncmp(p1, TEXT("def"), 3) == 0); LineInfo *pLi2 = pLM->GetLineInfo(2); - runner->assert(pLi2->pLine->nUsed == 3); + ASSERT(pLi2->pLine->nUsed == 3); LPCTSTR p2 = pLM->GetLine(2); - runner->assert(_tcsncmp(p2, TEXT("ghi"), 3) == 0); + ASSERT(_tcsncmp(p2, TEXT("ghi"), 3) == 0); } // abcCRLF @@ -235,28 +236,28 @@ void ConvertBytesToCoordinateTest1() Coordinate pos; pDoc->ConvertBytesToCoordinate(0, &pos); - runner->assert(pos.row == 0 && pos.col == 0); + ASSERT(pos.row == 0 && pos.col == 0); pDoc->ConvertBytesToCoordinate(2, &pos); - runner->assert(pos.row == 0 && pos.col == 2); + ASSERT(pos.row == 0 && pos.col == 2); pDoc->ConvertBytesToCoordinate(5, &pos); - runner->assert(pos.row == 1 && pos.col == 0); + ASSERT(pos.row == 1 && pos.col == 0); pDoc->ConvertBytesToCoordinate(6, &pos); - runner->assert(pos.row == 1 && pos.col == 1); + ASSERT(pos.row == 1 && pos.col == 1); pDoc->ConvertBytesToCoordinate(9, &pos); - runner->assert(pos.row == 1 && pos.col == 4); + ASSERT(pos.row == 1 && pos.col == 4); pDoc->ConvertBytesToCoordinate(11, &pos); - runner->assert(pos.row == 2 && pos.col == 0); + ASSERT(pos.row == 2 && pos.col == 0); pDoc->ConvertBytesToCoordinate(16, &pos); - runner->assert(pos.row == 2 && pos.col == 5); + ASSERT(pos.row == 2 && pos.col == 5); pDoc->ConvertBytesToCoordinate(100, &pos); - runner->assert(pos.row == 2 && pos.col == 5); + ASSERT(pos.row == 2 && pos.col == 5); } void ConvertBytesToCoordinateTest2() @@ -268,7 +269,7 @@ void ConvertBytesToCoordinateTest2() BOOL bResult = pDoc->Init(TEXT("TOMBO 1.16\r\n"), NULL, NULL); pDoc->ConvertBytesToCoordinate(11, &pos); - runner->assert(pos.row == 1 && pos.col == 0); + ASSERT(pos.row == 1 && pos.col == 0); } // initial state @@ -277,14 +278,13 @@ void UndoTest1() YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("a"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); Region r0(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF); - Region r = pDoc->GetUndoRegion(); - LPCTSTR p = pDoc->GetUndoStr(); + UndoInfo *pUndo = pDoc->GetUndoInfo(); + ASSERT(pUndo == NULL); - runner->assert(r0 == r && p == NULL); } void UndoTest2() @@ -292,28 +292,29 @@ void UndoTest2() YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("a"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); + // a I Region rReplace(1, 0, 1, 0); bResult = pDoc->ReplaceString(&rReplace, TEXT("bcd")); - runner->assert(bResult); + ASSERT(bResult); // abcd I - Region r = pDoc->GetUndoRegion(); - LPCTSTR p = pDoc->GetUndoStr(); - - Region rExpected(1, 0, 4, 0); - LPCTSTR pExpected = TEXT(""); - runner->assert(r == rExpected); - runner->assert(_tcscmp(p, pExpected) == 0); + UndoInfo *pUndo = pDoc->GetUndoInfo(); + Region rExpectedPrev(1, 0, 1, 0); + Region rExpectedNew(1, 0, 4, 0); + ASSERT(pUndo->rPrevRegion == rExpectedPrev); + ASSERT(pUndo->rNewRegion == rExpectedNew); + ASSERT(_tcscmp(pUndo->pPrevStr, TEXT("")) == 0); + ASSERT(_tcscmp(pUndo->pNewStr, TEXT("bcd")) == 0); // Undo bResult = pDoc->Undo(); - runner->assert(bResult); + ASSERT(bResult); DWORD nLen; LPTSTR pUndo1 = pDoc->GetDocumentData(&nLen); - runner->assert(_tcsncmp(pUndo1, TEXT("a"), nLen) == 0); + ASSERT(_tcsncmp(pUndo1, TEXT("a"), nLen) == 0); } @@ -322,29 +323,61 @@ void UndoTest3() YAEditDoc *pDoc = new YAEditDoc(); BOOL bResult = pDoc->Init(TEXT("abcde"), NULL, NULL); - runner->assert(bResult); + ASSERT(bResult); Region rReplace(2, 0, 4, 0); bResult = pDoc->ReplaceString(&rReplace, TEXT("fgh")); - runner->assert(bResult); + ASSERT(bResult); // abcd I - Region r = pDoc->GetUndoRegion(); - LPCTSTR p = pDoc->GetUndoStr(); + UndoInfo *pUndo = pDoc->GetUndoInfo(); + + Region rExpectedPrev(2, 0, 4, 0); + Region rExpectedNew(2, 0, 5, 0); + ASSERT(pUndo->rPrevRegion == rExpectedPrev); + ASSERT(pUndo->rNewRegion == rExpectedNew); - Region rExpected(2, 0, 5, 0); - LPCTSTR pExpected = TEXT("cd"); - runner->assert(r == rExpected); - runner->assert(_tcscmp(p, pExpected) == 0); + ASSERT(_tcscmp(pUndo->pPrevStr, TEXT("cd")) == 0); + ASSERT(_tcscmp(pUndo->pNewStr, TEXT("fgh")) == 0); // Undo bResult = pDoc->Undo(); - runner->assert(bResult); + ASSERT(bResult); DWORD nLen; LPTSTR pUndo1 = pDoc->GetDocumentData(&nLen); - runner->assert(_tcsncmp(pUndo1, TEXT("abcde"), nLen) == 0); + ASSERT(_tcsncmp(pUndo1, TEXT("abcde"), nLen) == 0); } +void UndoTest4() { + + YAEditDoc *pDoc = new YAEditDoc(); + ASSERT(pDoc->Init(TEXT("-----"), NULL, NULL)); + + // ----- + Region rReplace(2, 0, 2, 0); + ASSERT(pDoc->ReplaceString(&rReplace, TEXT("a"))); + // --a--- + Region rReplace2(3, 0, 3, 0); + ASSERT(pDoc->ReplaceString(&rReplace2, TEXT("b"))); + // --ab--- + + DWORD nLen; + LPTSTR pResult; + + pResult = pDoc->GetDocumentData(&nLen); + ASSERT(pResult != NULL); + ASSERT(_tcsncmp(pResult, TEXT("--ab---"), nLen) == 0); + ASSERT(nLen == 7); + + // Undo! + ASSERT(pDoc->Undo()); + + pResult = pDoc->GetDocumentData(&nLen); + ASSERT(pResult != NULL); + ASSERT(_tcsncmp(pResult, TEXT("-----"), nLen) == 0); + ASSERT(nLen == 5); + +} \ No newline at end of file diff --git a/Win32/Tombo/Tombo.sln b/Win32/Tombo/Tombo.sln index fae9bd8..2c57877 100644 --- a/Win32/Tombo/Tombo.sln +++ b/Win32/Tombo/Tombo.sln @@ -3,6 +3,8 @@ Microsoft Visual Studio Solution File, Format Version 9.00 # Visual Studio 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tombo", "Tombo\Tombo.vcproj", "{BD1B7E25-9555-4F73-B3F9-4AD2C559F235}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest", "..\..\UnitTest\UnitTest\UnitTest.vcproj", "{AA7FA4D1-39CD-42D3-BAA5-A4E590786134}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -13,6 +15,10 @@ Global {BD1B7E25-9555-4F73-B3F9-4AD2C559F235}.Debug|Win32.Build.0 = Debug|Win32 {BD1B7E25-9555-4F73-B3F9-4AD2C559F235}.Release|Win32.ActiveCfg = Release|Win32 {BD1B7E25-9555-4F73-B3F9-4AD2C559F235}.Release|Win32.Build.0 = Release|Win32 + {AA7FA4D1-39CD-42D3-BAA5-A4E590786134}.Debug|Win32.ActiveCfg = Debug|Win32 + {AA7FA4D1-39CD-42D3-BAA5-A4E590786134}.Debug|Win32.Build.0 = Debug|Win32 + {AA7FA4D1-39CD-42D3-BAA5-A4E590786134}.Release|Win32.ActiveCfg = Release|Win32 + {AA7FA4D1-39CD-42D3-BAA5-A4E590786134}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE