// // 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); }