| // | |
| // Copyright 2011 The Android Open Source Project | |
| // | |
| #include <utils/String8.h> | |
| #include <iostream> | |
| #include <errno.h> | |
| #include "CrunchCache.h" | |
| #include "FileFinder.h" | |
| #include "MockFileFinder.h" | |
| #include "CacheUpdater.h" | |
| #include "MockCacheUpdater.h" | |
| using namespace android; | |
| using std::cout; | |
| using std::endl; | |
| void expectEqual(int got, int expected, const char* desc) { | |
| cout << "Checking " << desc << ": "; | |
| cout << "Got " << got << ", expected " << expected << "..."; | |
| cout << ( (got == expected) ? "PASSED" : "FAILED") << endl; | |
| errno += ((got == expected) ? 0 : 1); | |
| } | |
| int main() { | |
| errno = 0; | |
| String8 source("res"); | |
| String8 dest("res2"); | |
| // Create data for MockFileFinder to feed to the cache | |
| KeyedVector<String8, time_t> sourceData; | |
| // This shouldn't be updated | |
| sourceData.add(String8("res/drawable/hello.png"),3); | |
| // This should be updated | |
| sourceData.add(String8("res/drawable/world.png"),5); | |
| // This should cause make directory to be called | |
| sourceData.add(String8("res/drawable-cool/hello.png"),3); | |
| KeyedVector<String8, time_t> destData; | |
| destData.add(String8("res2/drawable/hello.png"),3); | |
| destData.add(String8("res2/drawable/world.png"),3); | |
| // this should call delete | |
| destData.add(String8("res2/drawable/dead.png"),3); | |
| // Package up data and create mock file finder | |
| KeyedVector<String8, KeyedVector<String8,time_t> > data; | |
| data.add(source,sourceData); | |
| data.add(dest,destData); | |
| FileFinder* ff = new MockFileFinder(data); | |
| CrunchCache cc(source,dest,ff); | |
| MockCacheUpdater* mcu = new MockCacheUpdater(); | |
| CacheUpdater* cu(mcu); | |
| cout << "Running Crunch..."; | |
| int result = cc.crunch(cu); | |
| cout << ((result > 0) ? "PASSED" : "FAILED") << endl; | |
| errno += ((result > 0) ? 0 : 1); | |
| const int EXPECTED_RESULT = 2; | |
| expectEqual(result, EXPECTED_RESULT, "number of files touched"); | |
| cout << "Checking calls to deleteFile and processImage:" << endl; | |
| const int EXPECTED_DELETES = 1; | |
| const int EXPECTED_PROCESSED = 2; | |
| // Deletes | |
| expectEqual(mcu->deleteCount, EXPECTED_DELETES, "deleteFile"); | |
| // processImage | |
| expectEqual(mcu->processCount, EXPECTED_PROCESSED, "processImage"); | |
| const int EXPECTED_OVERWRITES = 3; | |
| result = cc.crunch(cu, true); | |
| expectEqual(result, EXPECTED_OVERWRITES, "number of files touched with overwrite"); | |
| \ | |
| if (errno == 0) | |
| cout << "ALL TESTS PASSED!" << endl; | |
| else | |
| cout << errno << " TESTS FAILED" << endl; | |
| delete ff; | |
| delete cu; | |
| // TESTS BELOW WILL GO AWAY SOON | |
| String8 source2("ApiDemos/res"); | |
| String8 dest2("ApiDemos/res2"); | |
| FileFinder* sff = new SystemFileFinder(); | |
| CacheUpdater* scu = new SystemCacheUpdater(); | |
| CrunchCache scc(source2,dest2,sff); | |
| scc.crunch(scu); | |
| } |