1 // 2 // Copyright 2011 The Android Open Source Project 3 // 4 #include <utils/Vector.h> 5 #include <utils/KeyedVector.h> 6 #include <iostream> 7 #include <cassert> 8 #include <utils/String8.h> 9 #include <utility> 10 11 #include "DirectoryWalker.h" 12 #include "MockDirectoryWalker.h" 13 #include "FileFinder.h" 14 15 using namespace android; 16 17 using std::pair; 18 using std::cout; 19 using std::endl; 20 21 22 23 int main() 24 { 25 26 cout << "\n\n STARTING FILE FINDER TESTS" << endl; 27 String8 path("ApiDemos"); 28 29 // Storage to pass to findFiles() 30 KeyedVector<String8,time_t> testStorage; 31 32 // Mock Directory Walker initialization. First data, then sdw 33 Vector< pair<String8,time_t> > data; 34 data.push( pair<String8,time_t>(String8("hello.png"),3) ); 35 data.push( pair<String8,time_t>(String8("world.PNG"),3) ); 36 data.push( pair<String8,time_t>(String8("foo.pNg"),3) ); 37 // Neither of these should be found 38 data.push( pair<String8,time_t>(String8("hello.jpg"),3) ); 39 data.push( pair<String8,time_t>(String8(".hidden.png"),3)); 40 41 DirectoryWalker* sdw = new StringDirectoryWalker(path,data); 42 43 // Extensions to look for 44 Vector<String8> exts; 45 exts.push(String8(".png")); 46 47 errno = 0; 48 49 // Make sure we get a valid mock directory walker 50 // Make sure we finish without errors 51 cout << "Checking DirectoryWalker..."; 52 assert(sdw != NULL); 53 cout << "PASSED" << endl; 54 55 // Make sure we finish without errors 56 cout << "Running findFiles()..."; 57 bool findStatus = FileFinder::findFiles(path,exts, testStorage, sdw); 58 assert(findStatus); 59 cout << "PASSED" << endl; 60 61 const size_t SIZE_EXPECTED = 3; 62 // Check to make sure we have the right number of things in our storage 63 cout << "Running size comparison: Size is " << testStorage.size() << ", "; 64 cout << "Expected " << SIZE_EXPECTED << "..."; 65 if(testStorage.size() == SIZE_EXPECTED) 66 cout << "PASSED" << endl; 67 else { 68 cout << "FAILED" << endl; 69 errno++; 70 } 71 72 // Check to make sure that each of our found items has the right extension 73 cout << "Checking Returned Extensions..."; 74 bool extsOkay = true; 75 String8 wrongExts; 76 for (size_t i = 0; i < SIZE_EXPECTED; ++i) { 77 String8 testExt(testStorage.keyAt(i).getPathExtension()); 78 testExt.toLower(); 79 if (testExt != ".png") { 80 wrongExts += testStorage.keyAt(i); 81 wrongExts += "\n"; 82 extsOkay = false; 83 } 84 } 85 if (extsOkay) 86 cout << "PASSED" << endl; 87 else { 88 cout << "FAILED" << endl; 89 cout << "The following extensions didn't check out" << endl << wrongExts; 90 } 91 92 // Clean up 93 delete sdw; 94 95 if(errno == 0) { 96 cout << "ALL TESTS PASSED" << endl; 97 } else { 98 cout << errno << " TESTS FAILED" << endl; 99 } 100 return errno; 101 }