OSDN Git Service

moved from CVS
[tombo/Tombo.git] / CppUnitTestApp / test / URIScannerTest.cpp
1 #include <cppunit/extensions/HelperMacros.h>\r
2 #include <cppunit/TestAssert.h>\r
3 \r
4 #include <windows.h>\r
5 #include <tchar.h>\r
6 #include "Tombo.h"\r
7 #include "TString.h"\r
8 #include "UniConv.h"\r
9 #include "TomboURI.h"\r
10 #include "Repository.h"\r
11 #include "VarBuffer.h"\r
12 #include "URIScanner.h"\r
13 \r
14 #define TEST_CLASS_NAME URIScannerTest\r
15 \r
16 class TEST_CLASS_NAME : public CppUnit::TestFixture {\r
17         CPPUNIT_TEST_SUITE(TEST_CLASS_NAME);\r
18         CPPUNIT_TEST(URIListTest1);\r
19 \r
20         CPPUNIT_TEST(URIScanTest1);\r
21         CPPUNIT_TEST(URIScanTest2);\r
22         CPPUNIT_TEST(URIScanTest3);\r
23         CPPUNIT_TEST(URIScanTest4);\r
24         CPPUNIT_TEST(URIScanTest5);\r
25         CPPUNIT_TEST(URIScanTest6);\r
26         CPPUNIT_TEST(URIScanTest7);\r
27         CPPUNIT_TEST(URIScanTest8);\r
28         CPPUNIT_TEST(PartialScanTest1);\r
29         CPPUNIT_TEST(PartialScanTest2);\r
30 \r
31         CPPUNIT_TEST(InterruptTest1);\r
32         CPPUNIT_TEST(InterruptTest2);\r
33         CPPUNIT_TEST(InterruptTest3);\r
34         CPPUNIT_TEST(InterruptTest4);\r
35 \r
36         CPPUNIT_TEST_SUITE_END();\r
37 \r
38 public:\r
39         TEST_CLASS_NAME() {}\r
40         ~TEST_CLASS_NAME() {}\r
41 \r
42         virtual void setUp() {}\r
43         virtual void tearDown() {}\r
44 \r
45         void URIListTest1();\r
46 \r
47         void URIScanTest1();\r
48         void URIScanTest2();\r
49         void URIScanTest3();\r
50         void URIScanTest4();\r
51         void URIScanTest5();\r
52         void URIScanTest6();\r
53         void URIScanTest7();\r
54         void URIScanTest8();\r
55         void PartialScanTest1();\r
56         void PartialScanTest2();\r
57         void InterruptTest1();\r
58         void InterruptTest2();\r
59         void InterruptTest3();\r
60         void InterruptTest4();\r
61 };\r
62 \r
63 CPPUNIT_TEST_SUITE_REGISTRATION(TEST_CLASS_NAME);\r
64 \r
65 ////////////////////////////////////////////////\r
66 \r
67 void TEST_CLASS_NAME::URIListTest1() {\r
68         URIList list;\r
69         CPPUNIT_ASSERT(list.Init());\r
70 \r
71         CPPUNIT_ASSERT(list.Add(NULL, NULL));\r
72 \r
73         TomboURI uri;\r
74         uri.Init("tombo://default/test");\r
75         CPPUNIT_ASSERT(list.Add(&uri, NULL));\r
76 \r
77         {       // the case of when uri2 released first.\r
78                 TomboURI uri2;\r
79                 uri2.Init("tombo://default/test2");\r
80                 CPPUNIT_ASSERT(list.Add(&uri2, NULL));\r
81         }\r
82 \r
83         CPPUNIT_ASSERT(list.Add(NULL, "test"));\r
84 \r
85         CPPUNIT_ASSERT(list.GetSize() == 4);\r
86 \r
87         CPPUNIT_ASSERT(list.GetURI(0) == NULL);\r
88         CPPUNIT_ASSERT(list.GetTitle(0) == NULL);\r
89         CPPUNIT_ASSERT(strcmp(list.GetURI(1)->GetFullURI(), "tombo://default/test") == 0);\r
90         CPPUNIT_ASSERT(list.GetTitle(1) == NULL);\r
91         CPPUNIT_ASSERT(strcmp(list.GetURI(2)->GetFullURI(), "tombo://default/test2") == 0);\r
92         CPPUNIT_ASSERT(list.GetTitle(2) == NULL);\r
93         CPPUNIT_ASSERT(list.GetURI(3) == NULL);\r
94         CPPUNIT_ASSERT(strcmp(list.GetTitle(3), "test") == 0);\r
95 }\r
96 \r
97 ////////////////////////////////////////////////\r
98 // dummy repository\r
99 class DummyRepoBase : public IEnumRepository {\r
100 public:\r
101         BOOL GetOption(const TomboURI *pURI, URIOption *pOption);\r
102         BOOL GetHeadLine(const TomboURI *pURI, TString *pHeadLine);\r
103 };\r
104 \r
105 BOOL DummyRepoBase::GetOption(const TomboURI *pURI, URIOption *pOption)\r
106 {\r
107         LPCTSTR p = pURI->GetFullURI();\r
108         if (*(p + strlen(p) - 1) == '/') {\r
109                 pOption->bFolder = TRUE;\r
110         } else {\r
111                 pOption->bFolder = FALSE;\r
112         }\r
113         return TRUE;\r
114 }\r
115 \r
116 BOOL DummyRepoBase::GetHeadLine(const TomboURI *pURI, TString *pHeadLine)\r
117 {\r
118         LPTSTR p = StringDup(pURI->GetFullURI());\r
119         if (*(p + strlen(p) -1) == '/') {\r
120                 *(p + strlen(p) - 1) = '\0';    // folder only\r
121                 LPCTSTR pTop = strrchr(p, '/') + 1;\r
122                 pHeadLine->Set(pTop);\r
123                 return TRUE;\r
124         } else {\r
125                 LPTSTR q = p;\r
126                 LPTSTR r;\r
127                 while(*q) {\r
128                         if (*q == '/') r = q;\r
129                         q++;\r
130                 }\r
131                 *(r + strlen(r) - 4) = '\0';\r
132                 pHeadLine->Set(r + 1);\r
133                 return TRUE;\r
134         }\r
135 }\r
136 \r
137 ////////////////////////////////////////////////\r
138 // dummy repo sample\r
139 \r
140 class RepoX : public DummyRepoBase {\r
141         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
142 };\r
143 \r
144 URIList *RepoX::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
145 {\r
146         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/") == 0) {\r
147                 URIList *pList = new URIList();\r
148                 pList->Init();\r
149                 TomboURI uri1; uri1.Init("tombo://default/aaa/bbb/"); pList->Add(&uri1, "bbb");\r
150                 TomboURI uri2; uri2.Init("tombo://default/aaa/test/"); pList->Add(&uri2, "test");\r
151                 TomboURI uri3; uri3.Init("tombo://default/aaa/hello.txt"); pList->Add(&uri3, "hello");\r
152                 TomboURI uri4; uri4.Init("tombo://default/aaa/zzz.txt"); pList->Add(&uri4, "zzz");\r
153                 return pList;\r
154         } \r
155         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/bbb/") == 0) {\r
156                 URIList *pList = new URIList();\r
157                 pList->Init();\r
158                 return pList;\r
159         }\r
160         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/test/") == 0) {\r
161                 URIList *pList = new URIList();\r
162                 pList->Init();\r
163                 TomboURI uri3; uri3.Init("tombo://default/aaa/test/sub.txt"); pList->Add(&uri3, "sub");\r
164                 return pList;\r
165         }\r
166         return NULL;\r
167 }\r
168 \r
169 \r
170 ////////////////////////////////////////////////\r
171 // Generic test scanner\r
172 \r
173 // at result, calling hisory is stored to sbuf.\r
174 \r
175 class TestScanner1 : public URIScanner {\r
176 public:\r
177         StringBufferA sbuf;\r
178 \r
179         int nInitialScan;\r
180         int nAfterScan;\r
181         int nPreFolder;\r
182         int nPostFolder;\r
183         int nNote;\r
184 \r
185         TestScanner1();\r
186 \r
187         void InitialScan();\r
188         void AfterScan();\r
189 \r
190         void PreFolder();\r
191         void PostFolder();\r
192 \r
193         void Node();\r
194 \r
195         BOOL Check(LPCTSTR pMsg, LPCTSTR pCorrect);\r
196         static void FullScanTest(LPCTSTR pTestName, LPCTSTR pCorrect, DummyRepoBase *pRepo);\r
197         static void ScanTest(LPCTSTR pTestName, LPCTSTR pCorrect, DummyRepoBase *pRepo, const TomboURI *pURI, BOOL bReverse);\r
198 };\r
199 \r
200 TestScanner1::TestScanner1() \r
201 {\r
202         nInitialScan = nAfterScan = nPreFolder = nPostFolder = nNote = 0;\r
203         sbuf.Init(100, 20);\r
204 }\r
205 \r
206 void TestScanner1::InitialScan() \r
207 {\r
208         DWORD n;\r
209         sbuf.Add("IS", 2, &n);\r
210 }\r
211 \r
212 void TestScanner1::AfterScan() \r
213 {\r
214         DWORD n;\r
215         sbuf.Add("AS", 2+1, &n);\r
216 }\r
217 \r
218 void TestScanner1::PreFolder() \r
219 {\r
220         DWORD n;\r
221 \r
222         sbuf.Add("BF", 2, &n);\r
223 \r
224         LPCTSTR pFull = CurrentURI()->GetFullURI();\r
225         sbuf.Add(pFull, strlen(pFull), &n);\r
226         sbuf.Add(GetTitle(), strlen(GetTitle()), &n);\r
227 }\r
228 \r
229 void TestScanner1::PostFolder() \r
230 {\r
231         DWORD n;\r
232         sbuf.Add("AF", 2, &n);\r
233 \r
234         LPCTSTR pFull = CurrentURI()->GetFullURI();\r
235         sbuf.Add(pFull, strlen(pFull), &n);\r
236         sbuf.Add(GetTitle(), strlen(GetTitle()), &n);\r
237 }\r
238 \r
239 void TestScanner1::Node()\r
240 {\r
241         DWORD n;\r
242         sbuf.Add("ND", 2, &n);\r
243 \r
244         LPCTSTR pFull = CurrentURI()->GetFullURI();\r
245         sbuf.Add(pFull, strlen(pFull), &n);\r
246         sbuf.Add(GetTitle(), strlen(GetTitle()), &n);\r
247 }\r
248 \r
249 void TestScanner1::FullScanTest(LPCTSTR pTestName, LPCTSTR pCorrect, DummyRepoBase *pRepo)\r
250 {\r
251         TomboURI base;\r
252         base.Init("tombo://default/aaa/");\r
253 \r
254         TestScanner1 s1;\r
255 \r
256         CPPUNIT_ASSERT(s1.Init(pRepo, &base, FALSE));\r
257 \r
258         BOOL bResult = s1.FullScan();\r
259         CPPUNIT_ASSERT_EQUAL(bResult, TRUE);\r
260         LPCTSTR pResultStr = s1.sbuf.Get(0);\r
261         CPPUNIT_ASSERT(s1.Check(pTestName, pCorrect));\r
262 }\r
263 \r
264 void TestScanner1::ScanTest(LPCTSTR pTestName, LPCTSTR pCorrect, DummyRepoBase *pRepo, const TomboURI *pURI, BOOL bReverse)\r
265 {\r
266         TomboURI base;\r
267         base.Init("tombo://default/aaa/");\r
268 \r
269         TestScanner1 s1;\r
270 \r
271         CPPUNIT_ASSERT(s1.Init(pRepo, &base, FALSE));\r
272 \r
273         BOOL bResult = s1.Scan(pURI, bReverse);\r
274         CPPUNIT_ASSERT_EQUAL(bResult, TRUE);\r
275         LPCTSTR pResultStr = s1.sbuf.Get(0);\r
276         CPPUNIT_ASSERT(s1.Check(pTestName, pCorrect));\r
277 }\r
278 \r
279 BOOL TestScanner1::Check(LPCTSTR pMsg, LPCTSTR pCorrect)\r
280 {\r
281         LPCTSTR pResult = sbuf.Get(0);\r
282 \r
283         DWORD n1 = strlen(pResult);\r
284         DWORD n2 = strlen(pCorrect);\r
285 \r
286         for (DWORD i = 0; i < n1; i++) {\r
287                 if (pResult[i] != pCorrect[i]) {\r
288                         Sleep(1);\r
289                 }\r
290         }\r
291         Sleep(1);\r
292 \r
293         return strcmp(sbuf.Get(0), pCorrect) == 0;\r
294 }\r
295 \r
296 ////////////////////////////////////////////////\r
297 // TEST\r
298 //\r
299 // Test the root is empty\r
300 \r
301 // test data\r
302 class Repo1 : public DummyRepoBase {\r
303         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
304 };\r
305 \r
306 URIList *Repo1::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
307 {\r
308         URIList *pList = new URIList();\r
309         pList->Init();\r
310         return pList;\r
311 }\r
312 \r
313 // test runner\r
314 void TEST_CLASS_NAME::URIScanTest1() \r
315 {\r
316         LPCTSTR pTest = "TEST1";\r
317         LPCTSTR pCorrect = \r
318                 "IS"\r
319                 "BF" "tombo://default/aaa/" "aaa"\r
320                 "AF" "tombo://default/aaa/" "aaa"\r
321                 "AS";\r
322         Repo1 rep;\r
323 \r
324         TestScanner1::FullScanTest(pTest, pCorrect, &rep);\r
325 }\r
326 \r
327 ////////////////////////////////////////////////\r
328 // TEST\r
329 //\r
330 // 2 nodes under the root\r
331 \r
332 // test data\r
333 class Repo2 : public DummyRepoBase {\r
334         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
335 };\r
336 \r
337 URIList *Repo2::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
338 {\r
339         URIList *pList = new URIList();\r
340         pList->Init();\r
341 \r
342         TomboURI uri1; uri1.Init("tombo://default/aaa/bbb.txt"); pList->Add(&uri1, "bbb");\r
343         TomboURI uri2; uri2.Init("tombo://default/aaa/ccc.txt"); pList->Add(&uri2, "ccc");\r
344 \r
345         return pList;\r
346 }\r
347 \r
348 void TEST_CLASS_NAME::URIScanTest2() \r
349 {\r
350         LPCTSTR pTest = "TEST3";\r
351         LPCTSTR pCorrect = \r
352                 "IS"\r
353                 "BF" "tombo://default/aaa/" "aaa"\r
354                 "ND" "tombo://default/aaa/bbb.txt" "bbb"\r
355                 "ND" "tombo://default/aaa/ccc.txt" "ccc"\r
356                 "AF" "tombo://default/aaa/" "aaa"\r
357                 "AS";\r
358         Repo2 rep;\r
359 \r
360         TestScanner1::FullScanTest(pTest, pCorrect, &rep);\r
361 }\r
362 \r
363 ////////////////////////////////////////////////\r
364 // TEST\r
365 //\r
366 // there are a folder and a node under the root.\r
367 \r
368 // test data\r
369 class Repo3 : public DummyRepoBase {\r
370         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
371 };\r
372 \r
373 URIList *Repo3::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
374 {\r
375         URIList *pList = new URIList();\r
376         pList->Init();\r
377 \r
378         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/") == 0) {\r
379                 TomboURI uri1; uri1.Init("tombo://default/aaa/bbb/"); pList->Add(&uri1, "bbb");\r
380                 TomboURI uri2; uri2.Init("tombo://default/aaa/ccc.txt"); pList->Add(&uri2, "ccc");\r
381         }\r
382         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/bbb/") == 0) {\r
383                 URIList *pList = new URIList();\r
384                 pList->Init();\r
385                 return pList;\r
386         }\r
387         return pList;\r
388 }\r
389 \r
390 void TEST_CLASS_NAME::URIScanTest3() \r
391 {\r
392         LPCTSTR pTest = "TEST3";\r
393         LPCTSTR pCorrect = \r
394                 "IS"\r
395                 "BF" "tombo://default/aaa/" "aaa"\r
396                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
397                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
398                 "ND" "tombo://default/aaa/ccc.txt" "ccc"\r
399                 "AF" "tombo://default/aaa/" "aaa"\r
400                 "AS";\r
401         Repo3 rep;\r
402 \r
403         TestScanner1::FullScanTest(pTest, pCorrect, &rep);\r
404 }\r
405 \r
406 ////////////////////////////////////////////////\r
407 // TEST\r
408 //\r
409 // nested folder\r
410 \r
411 // test data\r
412 class Repo4 : public DummyRepoBase {\r
413         const TomboURI *pStopURI;\r
414 protected:\r
415         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
416 public:\r
417         Repo4() : DummyRepoBase(), pStopURI(NULL) {}\r
418         Repo4(const TomboURI *pURI);\r
419 };\r
420 \r
421 Repo4::Repo4(const TomboURI *pURI)\r
422 {\r
423         pStopURI = new TomboURI(*pURI);\r
424 }\r
425 \r
426 URIList *Repo4::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
427 {\r
428         URIList *pList = new URIList();\r
429         pList->Init();\r
430 \r
431         if (pStopURI != NULL && strcmp(pStopURI->GetFullURI(), pFolderURI->GetFullURI()) == 0) {\r
432                 SetLastError(ERROR_CANCELLED);\r
433                 return NULL;\r
434         }\r
435 \r
436         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/") == 0) {\r
437                 TomboURI uri1; uri1.Init("tombo://default/aaa/bbb/"); pList->Add(&uri1, "bbb");\r
438                 TomboURI uri2; uri2.Init("tombo://default/aaa/ddd.txt"); pList->Add(&uri2, "ddd");\r
439         }\r
440         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/bbb/") == 0) {\r
441                 URIList *pList = new URIList();\r
442                 pList->Init();\r
443                 TomboURI uri1; uri1.Init("tombo://default/aaa/bbb/ccc/"); pList->Add(&uri1, "ccc");\r
444                 TomboURI uri2; uri2.Init("tombo://default/aaa/bbb/eee.txt"); pList->Add(&uri2, "eee");\r
445                 return pList;\r
446         }\r
447         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/bbb/ccc/") == 0) {\r
448                 URIList *pList = new URIList();\r
449                 pList->Init();\r
450                 TomboURI uri1; uri1.Init("tombo://default/aaa/bbb/ccc/fff.txt"); pList->Add(&uri1, "fff");\r
451                 TomboURI uri2; uri2.Init("tombo://default/aaa/bbb/ccc/ggg.txt"); pList->Add(&uri2, "ggg");\r
452                 return pList;\r
453         }\r
454 \r
455         return pList;\r
456 }\r
457 \r
458 void TEST_CLASS_NAME::URIScanTest4() \r
459 {\r
460         LPCTSTR pTest = "TEST4";\r
461         LPCTSTR pCorrect = \r
462                 "IS"\r
463                 "BF" "tombo://default/aaa/" "aaa"\r
464                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
465                 "BF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
466                 "ND" "tombo://default/aaa/bbb/ccc/fff.txt" "fff"\r
467                 "ND" "tombo://default/aaa/bbb/ccc/ggg.txt" "ggg"\r
468                 "AF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
469                 "ND" "tombo://default/aaa/bbb/eee.txt" "eee"\r
470                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
471                 "ND" "tombo://default/aaa/ddd.txt" "ddd"\r
472                 "AF" "tombo://default/aaa/" "aaa"\r
473                 "AS";\r
474         Repo4 rep;\r
475 \r
476         TestScanner1::FullScanTest(pTest, pCorrect, &rep);\r
477 }\r
478 \r
479 ////////////////////////////////////////////////\r
480 // TEST\r
481 //\r
482 // stop scan test\r
483 // Data is same as URIScanTest4\r
484 \r
485 class TestScanner2 : public TestScanner1 {\r
486 public:\r
487         void Node();\r
488 };\r
489 \r
490 void TestScanner2::Node() \r
491 {\r
492         TestScanner1::Node();\r
493         LPCTSTR pFull = CurrentURI()->GetFullURI();\r
494         if (strcmp(pFull, "tombo://default/aaa/bbb/ccc/fff.txt") == 0) {\r
495                 StopScan();\r
496         }\r
497 }\r
498 \r
499 void TEST_CLASS_NAME::URIScanTest5() \r
500 {\r
501         LPCTSTR pTest = "TEST5";\r
502         LPCTSTR pCorrect = \r
503                 "IS"\r
504                 "BF" "tombo://default/aaa/" "aaa"\r
505                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
506                 "BF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
507                 "ND" "tombo://default/aaa/bbb/ccc/fff.txt" "fff"\r
508                 "AF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
509                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
510                 "AF" "tombo://default/aaa/" "aaa"\r
511                 "AS";\r
512         Repo4 rep;\r
513 \r
514         TomboURI base;\r
515         base.Init("tombo://default/aaa/");\r
516 \r
517         TestScanner2 s1;\r
518 \r
519         CPPUNIT_ASSERT(s1.Init(&rep, &base, FALSE));\r
520 \r
521         BOOL bResult = s1.FullScan();\r
522         CPPUNIT_ASSERT_EQUAL(bResult, TRUE);\r
523         LPCTSTR pResultStr = s1.sbuf.Get(0);\r
524         CPPUNIT_ASSERT(s1.Check(pTest, pCorrect));\r
525 }\r
526 \r
527 ////////////////////////////////////////////////\r
528 // TEST\r
529 //\r
530 // cancel test\r
531 // assume when user cancelled password dialog\r
532 \r
533 class Repo6 : public Repo4 {\r
534         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
535 };\r
536 \r
537 URIList *Repo6::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
538 {\r
539         if (strcmp(pFolderURI->GetFullURI(), "tombo://default/aaa/bbb/ccc/") == 0) {\r
540                 SetLastError(ERROR_CANCELLED);\r
541                 return NULL;\r
542         } else {\r
543                 return Repo4::GetChild(pFolderURI, bSkipEncrypt, FALSE, FALSE);\r
544         }\r
545 }\r
546 \r
547 void TEST_CLASS_NAME::URIScanTest6() \r
548 {\r
549         LPCTSTR pTest = "TEST6";\r
550         LPCTSTR pCorrect = \r
551                 "IS"\r
552                 "BF" "tombo://default/aaa/" "aaa"\r
553                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
554                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
555                 "AF" "tombo://default/aaa/" "aaa"\r
556                 "AS";\r
557         Repo6 rep;\r
558 \r
559         TestScanner1::FullScanTest(pTest, pCorrect, &rep);\r
560 }\r
561 \r
562 ////////////////////////////////////////////////\r
563 // TEST\r
564 //\r
565 // cancel at root\r
566 // assume when user cancelled password dialog\r
567 \r
568 class Repo7 : public Repo4 {\r
569         URIList *GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose);\r
570 };\r
571 \r
572 URIList *Repo7::GetChild(const TomboURI *pFolderURI, BOOL bSkipEncrypt, BOOL bLooseDecrypt, BOOL *pLoose)\r
573 {\r
574         SetLastError(ERROR_CANCELLED);\r
575         return NULL;\r
576 }\r
577 \r
578 void TEST_CLASS_NAME::URIScanTest7() \r
579 {\r
580         LPCTSTR pTest = "TEST7";\r
581         LPCTSTR pCorrect = \r
582                 "IS"\r
583                 "AS";\r
584         Repo7 rep;\r
585 \r
586         TestScanner1::FullScanTest(pTest, pCorrect, &rep);\r
587 }\r
588 \r
589 ////////////////////////////////////////////////\r
590 // TEST\r
591 //\r
592 // reverse order of URIScanTest4()\r
593 \r
594 void TEST_CLASS_NAME::URIScanTest8() \r
595 {\r
596         LPCTSTR pTest = "TEST8";\r
597         LPCTSTR pCorrect = \r
598                 "IS"\r
599                 "BF" "tombo://default/aaa/" "aaa"\r
600                 "ND" "tombo://default/aaa/ddd.txt" "ddd"\r
601                 "BF" "tombo://default/aaa/bbb/" "bbb"           \r
602                 "ND" "tombo://default/aaa/bbb/eee.txt" "eee"\r
603                 "BF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
604                 "ND" "tombo://default/aaa/bbb/ccc/ggg.txt" "ggg"\r
605                 "ND" "tombo://default/aaa/bbb/ccc/fff.txt" "fff"\r
606                 "AF" "tombo://default/aaa/bbb/ccc/" "ccc"               \r
607                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
608                 "AF" "tombo://default/aaa/" "aaa"\r
609                 "AS";\r
610         Repo4 rep;      // Repo4 is correct.\r
611 \r
612         TestScanner1::ScanTest(pTest, pCorrect, &rep, NULL, TRUE);\r
613 }\r
614 \r
615 ////////////////////////////////////////////////\r
616 // TEST\r
617 //\r
618 // partial scan test\r
619 \r
620 void TEST_CLASS_NAME::PartialScanTest1() \r
621 {\r
622         LPCTSTR pTest = "TEST-P1";\r
623         LPCTSTR pCorrect = \r
624                 "IS"\r
625                 "BF" "tombo://default/aaa/" "aaa"\r
626                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
627                 "BF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
628                 "ND" "tombo://default/aaa/bbb/ccc/ggg.txt" "ggg"\r
629                 "AF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
630                 "ND" "tombo://default/aaa/bbb/eee.txt" "eee"\r
631                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
632                 "ND" "tombo://default/aaa/ddd.txt" "ddd"\r
633                 "AF" "tombo://default/aaa/" "aaa"\r
634                 "AS";\r
635         Repo4 rep;\r
636 \r
637         TomboURI part;\r
638         part.Init("tombo://default/aaa/bbb/ccc/ggg.txt");\r
639 \r
640         TestScanner1::ScanTest(pTest, pCorrect, &rep, &part, FALSE);\r
641 \r
642 }\r
643 \r
644 ////////////////////////////////////////////////\r
645 // TEST\r
646 //\r
647 // baseURI and startURI is same\r
648 \r
649 void TEST_CLASS_NAME::PartialScanTest2() \r
650 {\r
651         LPCTSTR pTest = "PSTEST2";\r
652         LPCTSTR pCorrect = \r
653                 "IS"\r
654                 "BF" "tombo://default/aaa/" "aaa"\r
655                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
656                 "BF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
657                 "ND" "tombo://default/aaa/bbb/ccc/fff.txt" "fff"\r
658                 "ND" "tombo://default/aaa/bbb/ccc/ggg.txt" "ggg"\r
659                 "AF" "tombo://default/aaa/bbb/ccc/" "ccc"\r
660                 "ND" "tombo://default/aaa/bbb/eee.txt" "eee"\r
661                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
662                 "ND" "tombo://default/aaa/ddd.txt" "ddd"\r
663                 "AF" "tombo://default/aaa/" "aaa"\r
664                 "AS";\r
665         Repo4 rep;\r
666 \r
667         TomboURI part;\r
668         part.Init("tombo://default/aaa/");\r
669 \r
670         TestScanner1::ScanTest(pTest, pCorrect, &rep, &part, FALSE);\r
671 }\r
672 \r
673 ////////////////////////////////////////////////\r
674 // TEST\r
675 //\r
676 // cancelled at root\r
677 \r
678 void TEST_CLASS_NAME::InterruptTest1() \r
679 {\r
680         LPCTSTR pTest = "IRTEST1";\r
681         LPCTSTR pCorrect = \r
682                 "IS"\r
683                 "AS";\r
684         TomboURI sStopURI;\r
685         sStopURI.Init("tombo://default/aaa/");\r
686         Repo4 rep(&sStopURI);\r
687 \r
688         TestScanner1::ScanTest(pTest, pCorrect, &rep, NULL, FALSE);\r
689 }\r
690 \r
691 ////////////////////////////////////////////////\r
692 // TEST\r
693 //\r
694 // cancelled at sub folder\r
695 \r
696 void TEST_CLASS_NAME::InterruptTest2() \r
697 {\r
698         LPCTSTR pTest = "IRTEST1";\r
699         LPCTSTR pCorrect = \r
700                 "IS"\r
701                 "BF" "tombo://default/aaa/" "aaa"\r
702                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
703                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
704                 "AF" "tombo://default/aaa/" "aaa"\r
705                 "AS";\r
706 \r
707         TomboURI sStopURI;\r
708         sStopURI.Init("tombo://default/aaa/bbb/ccc/");\r
709         Repo4 rep(&sStopURI);\r
710 \r
711         TestScanner1::ScanTest(pTest, pCorrect, &rep, NULL, FALSE);\r
712 }\r
713 \r
714 ////////////////////////////////////////////////\r
715 // TEST\r
716 //\r
717 // cancelled at sub folder\r
718 \r
719 void TEST_CLASS_NAME::InterruptTest3() \r
720 {\r
721         LPCTSTR pTest = "IRTEST1";\r
722         LPCTSTR pCorrect = \r
723                 "IS"\r
724                 "BF" "tombo://default/aaa/" "aaa"\r
725                 "BF" "tombo://default/aaa/bbb/" "bbb"\r
726                 "AF" "tombo://default/aaa/bbb/" "bbb"\r
727                 "AF" "tombo://default/aaa/" "aaa"\r
728                 "AS";\r
729 \r
730         TomboURI sStopURI;\r
731         sStopURI.Init("tombo://default/aaa/bbb/ccc/");\r
732         Repo4 rep(&sStopURI);\r
733 \r
734         TomboURI part;\r
735         part.Init("tombo://default/aaa/bbb/ccc/ggg.txt");\r
736 \r
737         TestScanner1::ScanTest(pTest, pCorrect, &rep, &part, FALSE);\r
738 }\r
739 \r
740 ////////////////////////////////////////////////\r
741 // TEST\r
742 //\r
743 // cancelled at sub folder\r
744 \r
745 void TEST_CLASS_NAME::InterruptTest4() \r
746 {\r
747         LPCTSTR pTest = "IRTEST1";\r
748         LPCTSTR pCorrect = \r
749                 "IS"\r
750                 "BF" "tombo://default/aaa/" "aaa"\r
751                 "AF" "tombo://default/aaa/" "aaa"\r
752                 "AS";\r
753 \r
754         TomboURI sStopURI;\r
755         sStopURI.Init("tombo://default/aaa/bbb/");\r
756         Repo4 rep(&sStopURI);\r
757 \r
758         TomboURI part;\r
759         part.Init("tombo://default/aaa/bbb/ccc/ggg.txt");\r
760 \r
761         TestScanner1::ScanTest(pTest, pCorrect, &rep, &part, FALSE);\r
762 }\r
763 \r