1// 2// Copyright 2011 The Android Open Source Project 3// 4#include <utils/String8.h> 5#include <iostream> 6#include <errno.h> 7 8#include "CrunchCache.h" 9#include "FileFinder.h" 10#include "MockFileFinder.h" 11#include "CacheUpdater.h" 12#include "MockCacheUpdater.h" 13 14using namespace android; 15using std::cout; 16using std::endl; 17 18void expectEqual(int got, int expected, const char* desc) { 19 cout << "Checking " << desc << ": "; 20 cout << "Got " << got << ", expected " << expected << "..."; 21 cout << ( (got == expected) ? "PASSED" : "FAILED") << endl; 22 errno += ((got == expected) ? 0 : 1); 23} 24 25int main() { 26 27 errno = 0; 28 29 String8 source("res"); 30 String8 dest("res2"); 31 32 // Create data for MockFileFinder to feed to the cache 33 KeyedVector<String8, time_t> sourceData; 34 // This shouldn't be updated 35 sourceData.add(String8("res/drawable/hello.png"),3); 36 // This should be updated 37 sourceData.add(String8("res/drawable/world.png"),5); 38 // This should cause make directory to be called 39 sourceData.add(String8("res/drawable-cool/hello.png"),3); 40 41 KeyedVector<String8, time_t> destData; 42 destData.add(String8("res2/drawable/hello.png"),3); 43 destData.add(String8("res2/drawable/world.png"),3); 44 // this should call delete 45 destData.add(String8("res2/drawable/dead.png"),3); 46 47 // Package up data and create mock file finder 48 KeyedVector<String8, KeyedVector<String8,time_t> > data; 49 data.add(source,sourceData); 50 data.add(dest,destData); 51 FileFinder* ff = new MockFileFinder(data); 52 CrunchCache cc(source,dest,ff); 53 54 MockCacheUpdater* mcu = new MockCacheUpdater(); 55 CacheUpdater* cu(mcu); 56 57 cout << "Running Crunch..."; 58 int result = cc.crunch(cu); 59 cout << ((result > 0) ? "PASSED" : "FAILED") << endl; 60 errno += ((result > 0) ? 0 : 1); 61 62 const int EXPECTED_RESULT = 2; 63 expectEqual(result, EXPECTED_RESULT, "number of files touched"); 64 65 cout << "Checking calls to deleteFile and processImage:" << endl; 66 const int EXPECTED_DELETES = 1; 67 const int EXPECTED_PROCESSED = 2; 68 // Deletes 69 expectEqual(mcu->deleteCount, EXPECTED_DELETES, "deleteFile"); 70 // processImage 71 expectEqual(mcu->processCount, EXPECTED_PROCESSED, "processImage"); 72 73 const int EXPECTED_OVERWRITES = 3; 74 result = cc.crunch(cu, true); 75 expectEqual(result, EXPECTED_OVERWRITES, "number of files touched with overwrite"); 76 \ 77 78 if (errno == 0) 79 cout << "ALL TESTS PASSED!" << endl; 80 else 81 cout << errno << " TESTS FAILED" << endl; 82 83 delete ff; 84 delete cu; 85 86 // TESTS BELOW WILL GO AWAY SOON 87 88 String8 source2("ApiDemos/res"); 89 String8 dest2("ApiDemos/res2"); 90 91 FileFinder* sff = new SystemFileFinder(); 92 CacheUpdater* scu = new SystemCacheUpdater(); 93 94 CrunchCache scc(source2,dest2,sff); 95 96 scc.crunch(scu); 97}