1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <iostream> 2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include "options.h" 3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiconst bool VERBOSE = false; 5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiusing namespace std; 7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskistruct Answer { 9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* argv[8]; 10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int result; 11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* systemSearchPath[8]; 12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* localSearchPath[8]; 13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* inputFileName; 14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski language_t nativeLanguage; 15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* outputH; 16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* outputCPP; 17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* outputJava; 18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 20282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskibool 21282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskimatch_arrays(const char* const*expected, const vector<string> &got) 22282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int count = 0; 24282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski while (expected[count] != NULL) { 25282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski count++; 26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (got.size() != count) { 28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (int i=0; i<count; i++) { 31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (got[i] != expected[i]) { 32282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return false; 33282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 34282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 35282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return true; 36282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 37282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 38282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskivoid 39282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprint_array(const char* prefix, const char* const*expected) 40282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 41282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski while (*expected) { 42282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << prefix << *expected << endl; 43282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski expected++; 44282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 45282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 46282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 47282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskivoid 48282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiprint_array(const char* prefix, const vector<string> &got) 49282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 50282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski size_t count = got.size(); 51282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (size_t i=0; i<count; i++) { 52282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << prefix << got[i] << endl; 53282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 54282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 55282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 56282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskistatic int 57282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskitest(const Answer& answer) 58282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 59282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int argc = 0; 60282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski while (answer.argv[argc]) { 61282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski argc++; 62282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 63282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 64282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int err = 0; 65282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 66282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski Options options; 67282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int result = parse_options(argc, answer.argv, &options); 68282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 69282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // result 70282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (((bool)result) != ((bool)answer.result)) { 71282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: result: got " << result << " expected " << 72282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski answer.result << endl; 73282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 74282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 75282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 76282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (result != 0) { 77282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // if it failed, everything is invalid 78282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return err; 79282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 80282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 81282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // systemSearchPath 82282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (!match_arrays(answer.systemSearchPath, options.systemSearchPath)) { 83282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: systemSearchPath: got" << endl; 84282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski print_array(" ", options.systemSearchPath); 85282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << " expected" << endl; 86282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski print_array(" ", answer.systemSearchPath); 87282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 88282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 89282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 90282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // localSearchPath 91282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (!match_arrays(answer.localSearchPath, options.localSearchPath)) { 92282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: localSearchPath: got" << endl; 93282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski print_array(" ", options.localSearchPath); 94282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << " expected" << endl; 95282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski print_array(" ", answer.localSearchPath); 96282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 97282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 98282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 99282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // inputFileName 100282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (answer.inputFileName != options.inputFileName) { 101282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: inputFileName: got " << options.inputFileName 102282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski << " expected " << answer.inputFileName << endl; 103282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 104282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 105282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 106282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // nativeLanguage 107282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (answer.nativeLanguage != options.nativeLanguage) { 108282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: nativeLanguage: got " << options.nativeLanguage 109282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski << " expected " << answer.nativeLanguage << endl; 110282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 111282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 112282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 113282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // outputH 114282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (answer.outputH != options.outputH) { 115282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: outputH: got " << options.outputH 116282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski << " expected " << answer.outputH << endl; 117282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 118282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 119282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 120282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // outputCPP 121282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (answer.outputCPP != options.outputCPP) { 122282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: outputCPP: got " << options.outputCPP 123282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski << " expected " << answer.outputCPP << endl; 124282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 125282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 126282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 127282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski // outputJava 128282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (answer.outputJava != options.outputJava) { 129282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "mismatch: outputJava: got " << options.outputJava 130282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski << " expected " << answer.outputJava << endl; 131282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski err = 1; 132282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 133282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 134282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return err; 135282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 136282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 137282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiconst Answer g_tests[] = { 138282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 139282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 140282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "-i/moof", "-I/blah", "-Ibleh", "-imoo", "inputFileName.aidl_cpp", NULL, NULL }, 141282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 0, 142282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { "/blah", "bleh", NULL, NULL, NULL, NULL, NULL, NULL }, 143282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { "/moof", "moo", NULL, NULL, NULL, NULL, NULL, NULL }, 144282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "inputFileName.aidl_cpp", 145282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 146282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "", 147282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "", 148282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "" 149282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 150282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 151282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 152282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-oh", "outputH", NULL, NULL, NULL, NULL }, 153282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 0, 154282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 155282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 156282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "inputFileName.aidl_cpp", 157282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 158282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "outputH", 159282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "", 160282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "" 161282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 162282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 163282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 164282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-ocpp", "outputCPP", NULL, NULL, NULL, NULL }, 165282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 0, 166282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 167282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 168282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "inputFileName.aidl_cpp", 169282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 170282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "", 171282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "outputCPP", 172282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "" 173282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 174282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 175282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 176282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-ojava", "outputJava", NULL, NULL, NULL, NULL }, 177282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 0, 178282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 179282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 180282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "inputFileName.aidl_cpp", 181282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 182282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "", 183282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "", 184282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "outputJava" 185282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 186282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 187282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 188282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-oh", "outputH", "-ocpp", "outputCPP", "-ojava", "outputJava" }, 189282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 0, 190282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 191282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 192282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "inputFileName.aidl_cpp", 193282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 194282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "outputH", 195282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "outputCPP", 196282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "outputJava" 197282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 198282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 199282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 200282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-oh", "outputH", "-oh", "outputH1", NULL, NULL }, 201282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 1, 202282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 203282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 204282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "", 205282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 206282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "", 207282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "", 208282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "" 209282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 210282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 211282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 212282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-ocpp", "outputCPP", "-ocpp", "outputCPP1", NULL, NULL }, 213282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 1, 214282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 215282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 216282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "", 217282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 218282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "", 219282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "", 220282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "" 221282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 222282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 223282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski { 224282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* argv */ { "test", "inputFileName.aidl_cpp", "-ojava", "outputJava", "-ojava", "outputJava1", NULL, NULL }, 225282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* result */ 1, 226282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* systemSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 227282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* localSearchPath */ { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }, 228282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* inputFileName */ "", 229282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* nativeLanguage */ CPP, 230282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputH */ "", 231282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputCPP */ "", 232282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski /* outputJava */ "" 233282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski }, 234282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 235282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski}; 236282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 237282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiint 238282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskimain(int argc, const char** argv) 239282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{ 240282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const int count = sizeof(g_tests)/sizeof(g_tests[0]); 241282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int matches[count]; 242282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 243282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski int result = 0; 244282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (int i=0; i<count; i++) { 245282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (VERBOSE) { 246282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << endl; 247282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "---------------------------------------------" << endl; 248282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* const* p = g_tests[i].argv; 249282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski while (*p) { 250282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << " " << *p; 251282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski p++; 252282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 253282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << endl; 254282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "---------------------------------------------" << endl; 255282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 256282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski matches[i] = test(g_tests[i]); 257282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (VERBOSE) { 258282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (0 == matches[i]) { 259282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "passed" << endl; 260282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else { 261282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "failed" << endl; 262282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 263282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski result |= matches[i]; 264282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 265282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 266282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 267282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << endl; 268282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "=============================================" << endl; 269282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "options_test summary" << endl; 270282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "=============================================" << endl; 271282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 272282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (!result) { 273282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "passed" << endl; 274282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } else { 275282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << "failed the following tests:" << endl; 276282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski for (int i=0; i<count; i++) { 277282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski if (matches[i]) { 278282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << " "; 279282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski const char* const* p = g_tests[i].argv; 280282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski while (*p) { 281282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << " " << *p; 282282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski p++; 283282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 284282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski cout << endl; 285282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 286282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 287282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski } 288282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 289282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski return result; 290282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski} 291282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski 292