Home | History | Annotate | Download | only in tests
      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 
     14 using namespace android;
     15 using std::cout;
     16 using std::endl;
     17 
     18 void 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 
     25 int 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 }