static void UndoTest1();\r
static void UndoTest2();\r
static void UndoTest3();\r
+static void UndoTest4();\r
\r
void YAEditDocTest(TestRunner *r) {\r
runner = r;\r
UndoTest1();\r
UndoTest2();\r
UndoTest3();\r
-\r
+ UndoTest4();\r
}\r
\r
////////////////////////////////////////////////\r
void LoadTest1() {\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT(""), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 1);\r
+ ASSERT(pLM->MaxLine() == 1);\r
LineInfo *pLi = pLM->GetLineInfo(0);\r
\r
- runner->assert(pLi->pLine->nUsed == 0);\r
+ ASSERT(pLi->pLine->nUsed == 0);\r
}\r
\r
// 1 line string without CRLF\r
void LoadTest2() {\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("Hello world"), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 1);\r
+ ASSERT(pLM->MaxLine() == 1);\r
LineInfo *pLi = pLM->GetLineInfo(0);\r
\r
- runner->assert(pLi->pLine->nUsed == 11);\r
+ ASSERT(pLi->pLine->nUsed == 11);\r
}\r
\r
// 2 line string\r
void LoadTest3() {\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("Hellow\r\nworld"), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 2);\r
+ ASSERT(pLM->MaxLine() == 2);\r
LineInfo *pLi0 = pLM->GetLineInfo(0);\r
- runner->assert(pLi0->pLine->nUsed == 6);\r
+ ASSERT(pLi0->pLine->nUsed == 6);\r
\r
LPCTSTR p0 = pLM->GetLine(0);\r
- runner->assert(_tcsncmp(p0, TEXT("Hellow"), 6) == 0);\r
+ ASSERT(_tcsncmp(p0, TEXT("Hellow"), 6) == 0);\r
\r
LineInfo *pLi1 = pLM->GetLineInfo(1);\r
- runner->assert(pLi1->pLine->nUsed == 5);\r
+ ASSERT(pLi1->pLine->nUsed == 5);\r
LPCTSTR p1 = pLM->GetLine(1);\r
- runner->assert(_tcsncmp(p1, TEXT("world"), 5) == 0); \r
+ ASSERT(_tcsncmp(p1, TEXT("world"), 5) == 0); \r
}\r
\r
// 2 line string end with CRLF\r
void LoadTest4() {\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("Hello\r\n"), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 2);\r
+ ASSERT(pLM->MaxLine() == 2);\r
\r
LineInfo *pLi0 = pLM->GetLineInfo(0);\r
- runner->assert(pLi0->pLine->nUsed == 5);\r
+ ASSERT(pLi0->pLine->nUsed == 5);\r
\r
LPCTSTR p0 = pLM->GetLine(0);\r
- runner->assert(_tcsncmp(p0, TEXT("Hello"), 5) == 0);\r
+ ASSERT(_tcsncmp(p0, TEXT("Hello"), 5) == 0);\r
\r
LineInfo *pLi1 = pLM->GetLineInfo(1);\r
- runner->assert(pLi1->pLine->nUsed == 0);\r
+ ASSERT(pLi1->pLine->nUsed == 0);\r
}\r
\r
// 2 line string start with CRLF\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("\r\nHello"), NULL, NULL);\r
\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 2);\r
+ ASSERT(pLM->MaxLine() == 2);\r
\r
LineInfo *pLi0 = pLM->GetLineInfo(0);\r
- runner->assert(pLi0->pLine->nUsed == 0);\r
+ ASSERT(pLi0->pLine->nUsed == 0);\r
\r
LineInfo *pLi1 = pLM->GetLineInfo(1);\r
- runner->assert(pLi1->pLine->nUsed == 5);\r
+ ASSERT(pLi1->pLine->nUsed == 5);\r
\r
LPCTSTR p1 = pLM->GetLine(1);\r
- runner->assert(_tcsncmp(p1, TEXT("Hello"), 5) == 0);\r
+ ASSERT(_tcsncmp(p1, TEXT("Hello"), 5) == 0);\r
\r
}\r
\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("\r\n\r\n\r\n"), NULL, NULL);\r
\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 4);\r
+ ASSERT(pLM->MaxLine() == 4);\r
\r
LineInfo *pLi0 = pLM->GetLineInfo(0);\r
- runner->assert(pLi0->pLine->nUsed == 0);\r
+ ASSERT(pLi0->pLine->nUsed == 0);\r
\r
LineInfo *pLi1 = pLM->GetLineInfo(1);\r
- runner->assert(pLi1->pLine->nUsed == 0);\r
+ ASSERT(pLi1->pLine->nUsed == 0);\r
\r
LineInfo *pLi2 = pLM->GetLineInfo(2);\r
- runner->assert(pLi2->pLine->nUsed == 0);\r
+ ASSERT(pLi2->pLine->nUsed == 0);\r
\r
LineInfo *pLi3 = pLM->GetLineInfo(3);\r
- runner->assert(pLi3->pLine->nUsed == 0);\r
+ ASSERT(pLi3->pLine->nUsed == 0);\r
\r
}\r
\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("\r\n\r\nabc\r\n\r\n\r\n"), NULL, NULL);\r
\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 6);\r
+ ASSERT(pLM->MaxLine() == 6);\r
\r
LineInfo *pLi0 = pLM->GetLineInfo(0);\r
- runner->assert(pLi0->pLine->nUsed == 0);\r
+ ASSERT(pLi0->pLine->nUsed == 0);\r
\r
LineInfo *pLi1 = pLM->GetLineInfo(1);\r
- runner->assert(pLi1->pLine->nUsed == 0);\r
+ ASSERT(pLi1->pLine->nUsed == 0);\r
\r
LineInfo *pLi2 = pLM->GetLineInfo(2);\r
- runner->assert(pLi2->pLine->nUsed == 3);\r
+ ASSERT(pLi2->pLine->nUsed == 3);\r
LPCTSTR p2 = pLM->GetLine(2);\r
- runner->assert(_tcsncmp(p2, TEXT("abc"), 3) == 0);\r
+ ASSERT(_tcsncmp(p2, TEXT("abc"), 3) == 0);\r
\r
\r
LineInfo *pLi3 = pLM->GetLineInfo(3);\r
- runner->assert(pLi3->pLine->nUsed == 0);\r
+ ASSERT(pLi3->pLine->nUsed == 0);\r
\r
LineInfo *pLi4 = pLM->GetLineInfo(4);\r
- runner->assert(pLi4->pLine->nUsed == 0);\r
+ ASSERT(pLi4->pLine->nUsed == 0);\r
\r
LineInfo *pLi5 = pLM->GetLineInfo(5);\r
- runner->assert(pLi5->pLine->nUsed == 0);\r
+ ASSERT(pLi5->pLine->nUsed == 0);\r
\r
}\r
\r
YAEditDoc *pDoc = new YAEditDoc();\r
BOOL bResult = pDoc->Init(TEXT("abc\r\ndef\r\nghi"), NULL, NULL);\r
\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
PhysicalLineManager *pLM = pDoc->GetPhMgr();\r
\r
- runner->assert(pLM->MaxLine() == 3);\r
+ ASSERT(pLM->MaxLine() == 3);\r
\r
LineInfo *pLi0 = pLM->GetLineInfo(0);\r
- runner->assert(pLi0->pLine->nUsed == 3);\r
+ ASSERT(pLi0->pLine->nUsed == 3);\r
LPCTSTR p0 = pLM->GetLine(0);\r
- runner->assert(_tcsncmp(p0, TEXT("abc"), 3) == 0);\r
+ ASSERT(_tcsncmp(p0, TEXT("abc"), 3) == 0);\r
\r
LineInfo *pLi1 = pLM->GetLineInfo(1);\r
- runner->assert(pLi1->pLine->nUsed == 3);\r
+ ASSERT(pLi1->pLine->nUsed == 3);\r
LPCTSTR p1 = pLM->GetLine(1);\r
- runner->assert(_tcsncmp(p1, TEXT("def"), 3) == 0);\r
+ ASSERT(_tcsncmp(p1, TEXT("def"), 3) == 0);\r
\r
LineInfo *pLi2 = pLM->GetLineInfo(2);\r
- runner->assert(pLi2->pLine->nUsed == 3);\r
+ ASSERT(pLi2->pLine->nUsed == 3);\r
LPCTSTR p2 = pLM->GetLine(2);\r
- runner->assert(_tcsncmp(p2, TEXT("ghi"), 3) == 0);\r
+ ASSERT(_tcsncmp(p2, TEXT("ghi"), 3) == 0);\r
}\r
\r
// abcCRLF\r
\r
Coordinate pos;\r
pDoc->ConvertBytesToCoordinate(0, &pos);\r
- runner->assert(pos.row == 0 && pos.col == 0);\r
+ ASSERT(pos.row == 0 && pos.col == 0);\r
\r
pDoc->ConvertBytesToCoordinate(2, &pos);\r
- runner->assert(pos.row == 0 && pos.col == 2);\r
+ ASSERT(pos.row == 0 && pos.col == 2);\r
\r
pDoc->ConvertBytesToCoordinate(5, &pos);\r
- runner->assert(pos.row == 1 && pos.col == 0);\r
+ ASSERT(pos.row == 1 && pos.col == 0);\r
\r
pDoc->ConvertBytesToCoordinate(6, &pos);\r
- runner->assert(pos.row == 1 && pos.col == 1);\r
+ ASSERT(pos.row == 1 && pos.col == 1);\r
\r
pDoc->ConvertBytesToCoordinate(9, &pos);\r
- runner->assert(pos.row == 1 && pos.col == 4);\r
+ ASSERT(pos.row == 1 && pos.col == 4);\r
\r
pDoc->ConvertBytesToCoordinate(11, &pos);\r
- runner->assert(pos.row == 2 && pos.col == 0);\r
+ ASSERT(pos.row == 2 && pos.col == 0);\r
\r
pDoc->ConvertBytesToCoordinate(16, &pos);\r
- runner->assert(pos.row == 2 && pos.col == 5);\r
+ ASSERT(pos.row == 2 && pos.col == 5);\r
\r
pDoc->ConvertBytesToCoordinate(100, &pos);\r
- runner->assert(pos.row == 2 && pos.col == 5);\r
+ ASSERT(pos.row == 2 && pos.col == 5);\r
}\r
\r
void ConvertBytesToCoordinateTest2()\r
BOOL bResult = pDoc->Init(TEXT("TOMBO 1.16\r\n"), NULL, NULL);\r
pDoc->ConvertBytesToCoordinate(11, &pos);\r
\r
- runner->assert(pos.row == 1 && pos.col == 0);\r
+ ASSERT(pos.row == 1 && pos.col == 0);\r
}\r
\r
// initial state\r
YAEditDoc *pDoc = new YAEditDoc();\r
\r
BOOL bResult = pDoc->Init(TEXT("a"), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
\r
Region r0(0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF);\r
\r
- Region r = pDoc->GetUndoRegion();\r
- LPCTSTR p = pDoc->GetUndoStr();\r
+ UndoInfo *pUndo = pDoc->GetUndoInfo();\r
+ ASSERT(pUndo == NULL);\r
\r
- runner->assert(r0 == r && p == NULL);\r
}\r
\r
void UndoTest2()\r
YAEditDoc *pDoc = new YAEditDoc();\r
\r
BOOL bResult = pDoc->Init(TEXT("a"), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
+ // a I\r
\r
Region rReplace(1, 0, 1, 0);\r
bResult = pDoc->ReplaceString(&rReplace, TEXT("bcd"));\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
// abcd I\r
\r
- Region r = pDoc->GetUndoRegion();\r
- LPCTSTR p = pDoc->GetUndoStr();\r
-\r
- Region rExpected(1, 0, 4, 0);\r
- LPCTSTR pExpected = TEXT("");\r
- runner->assert(r == rExpected);\r
- runner->assert(_tcscmp(p, pExpected) == 0);\r
+ UndoInfo *pUndo = pDoc->GetUndoInfo();\r
+ Region rExpectedPrev(1, 0, 1, 0);\r
+ Region rExpectedNew(1, 0, 4, 0);\r
+ ASSERT(pUndo->rPrevRegion == rExpectedPrev);\r
+ ASSERT(pUndo->rNewRegion == rExpectedNew);\r
+ ASSERT(_tcscmp(pUndo->pPrevStr, TEXT("")) == 0);\r
+ ASSERT(_tcscmp(pUndo->pNewStr, TEXT("bcd")) == 0);\r
\r
// Undo\r
bResult = pDoc->Undo();\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
\r
DWORD nLen;\r
LPTSTR pUndo1 = pDoc->GetDocumentData(&nLen);\r
- runner->assert(_tcsncmp(pUndo1, TEXT("a"), nLen) == 0);\r
+ ASSERT(_tcsncmp(pUndo1, TEXT("a"), nLen) == 0);\r
\r
}\r
\r
YAEditDoc *pDoc = new YAEditDoc();\r
\r
BOOL bResult = pDoc->Init(TEXT("abcde"), NULL, NULL);\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
\r
Region rReplace(2, 0, 4, 0);\r
bResult = pDoc->ReplaceString(&rReplace, TEXT("fgh"));\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
// abcd I\r
\r
- Region r = pDoc->GetUndoRegion();\r
- LPCTSTR p = pDoc->GetUndoStr();\r
+ UndoInfo *pUndo = pDoc->GetUndoInfo();\r
+\r
+ Region rExpectedPrev(2, 0, 4, 0);\r
+ Region rExpectedNew(2, 0, 5, 0);\r
+ ASSERT(pUndo->rPrevRegion == rExpectedPrev);\r
+ ASSERT(pUndo->rNewRegion == rExpectedNew);\r
\r
- Region rExpected(2, 0, 5, 0);\r
- LPCTSTR pExpected = TEXT("cd");\r
- runner->assert(r == rExpected);\r
- runner->assert(_tcscmp(p, pExpected) == 0);\r
+ ASSERT(_tcscmp(pUndo->pPrevStr, TEXT("cd")) == 0);\r
+ ASSERT(_tcscmp(pUndo->pNewStr, TEXT("fgh")) == 0);\r
\r
\r
// Undo\r
bResult = pDoc->Undo();\r
- runner->assert(bResult);\r
+ ASSERT(bResult);\r
\r
DWORD nLen;\r
LPTSTR pUndo1 = pDoc->GetDocumentData(&nLen);\r
- runner->assert(_tcsncmp(pUndo1, TEXT("abcde"), nLen) == 0);\r
+ ASSERT(_tcsncmp(pUndo1, TEXT("abcde"), nLen) == 0);\r
\r
}\r
\r
+void UndoTest4() {\r
+\r
+ YAEditDoc *pDoc = new YAEditDoc();\r
+ ASSERT(pDoc->Init(TEXT("-----"), NULL, NULL));\r
+\r
+ // -----\r
+ Region rReplace(2, 0, 2, 0);\r
+ ASSERT(pDoc->ReplaceString(&rReplace, TEXT("a")));\r
+ // --a---\r
+ Region rReplace2(3, 0, 3, 0);\r
+ ASSERT(pDoc->ReplaceString(&rReplace2, TEXT("b")));\r
+ // --ab---\r
+\r
+ DWORD nLen;\r
+ LPTSTR pResult;\r
+\r
+ pResult = pDoc->GetDocumentData(&nLen);\r
+ ASSERT(pResult != NULL);\r
+ ASSERT(_tcsncmp(pResult, TEXT("--ab---"), nLen) == 0);\r
+ ASSERT(nLen == 7);\r
+\r
+ // Undo!\r
+ ASSERT(pDoc->Undo());\r
+\r
+ pResult = pDoc->GetDocumentData(&nLen);\r
+ ASSERT(pResult != NULL);\r
+ ASSERT(_tcsncmp(pResult, TEXT("-----"), nLen) == 0);\r
+ ASSERT(nLen == 5);\r
+\r
+}
\ No newline at end of file