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
15using namespace android;
16
17using std::pair;
18using std::cout;
19using std::endl;
20
21
22
23int 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}