1*f81fb7c4SAndroid Build Coastguard Worker /*
2*f81fb7c4SAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project
3*f81fb7c4SAndroid Build Coastguard Worker *
4*f81fb7c4SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*f81fb7c4SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*f81fb7c4SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*f81fb7c4SAndroid Build Coastguard Worker *
8*f81fb7c4SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*f81fb7c4SAndroid Build Coastguard Worker *
10*f81fb7c4SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*f81fb7c4SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*f81fb7c4SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*f81fb7c4SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*f81fb7c4SAndroid Build Coastguard Worker * limitations under the License.
15*f81fb7c4SAndroid Build Coastguard Worker */
16*f81fb7c4SAndroid Build Coastguard Worker
17*f81fb7c4SAndroid Build Coastguard Worker #ifndef __SONIVOX_TEST_ENVIRONMENT_H__
18*f81fb7c4SAndroid Build Coastguard Worker #define __SONIVOX_TEST_ENVIRONMENT_H__
19*f81fb7c4SAndroid Build Coastguard Worker
20*f81fb7c4SAndroid Build Coastguard Worker #include <gtest/gtest.h>
21*f81fb7c4SAndroid Build Coastguard Worker
22*f81fb7c4SAndroid Build Coastguard Worker #include <getopt.h>
23*f81fb7c4SAndroid Build Coastguard Worker
24*f81fb7c4SAndroid Build Coastguard Worker using namespace std;
25*f81fb7c4SAndroid Build Coastguard Worker
26*f81fb7c4SAndroid Build Coastguard Worker class SonivoxTestEnvironment : public::testing::Environment {
27*f81fb7c4SAndroid Build Coastguard Worker public:
SonivoxTestEnvironment()28*f81fb7c4SAndroid Build Coastguard Worker SonivoxTestEnvironment() : res("/data/local/tmp/"), deleteOutput(true){}
29*f81fb7c4SAndroid Build Coastguard Worker
30*f81fb7c4SAndroid Build Coastguard Worker // Parses the command line arguments
31*f81fb7c4SAndroid Build Coastguard Worker int initFromOptions(int argc, char **argv);
32*f81fb7c4SAndroid Build Coastguard Worker
setRes(const char * _res)33*f81fb7c4SAndroid Build Coastguard Worker void setRes(const char *_res) { res = _res; }
34*f81fb7c4SAndroid Build Coastguard Worker
getRes()35*f81fb7c4SAndroid Build Coastguard Worker const string getRes() const { return res; }
36*f81fb7c4SAndroid Build Coastguard Worker
cleanUp()37*f81fb7c4SAndroid Build Coastguard Worker bool cleanUp() const { return deleteOutput; }
38*f81fb7c4SAndroid Build Coastguard Worker
39*f81fb7c4SAndroid Build Coastguard Worker private:
40*f81fb7c4SAndroid Build Coastguard Worker string res;
41*f81fb7c4SAndroid Build Coastguard Worker bool deleteOutput;
42*f81fb7c4SAndroid Build Coastguard Worker };
43*f81fb7c4SAndroid Build Coastguard Worker
initFromOptions(int argc,char ** argv)44*f81fb7c4SAndroid Build Coastguard Worker int SonivoxTestEnvironment::initFromOptions(int argc, char **argv) {
45*f81fb7c4SAndroid Build Coastguard Worker static struct option options[] = {{"res", required_argument, 0, 'P'},
46*f81fb7c4SAndroid Build Coastguard Worker {"cleanUp", optional_argument, 0, 'C'},
47*f81fb7c4SAndroid Build Coastguard Worker {0, 0, 0, 0}};
48*f81fb7c4SAndroid Build Coastguard Worker
49*f81fb7c4SAndroid Build Coastguard Worker while (true) {
50*f81fb7c4SAndroid Build Coastguard Worker int index = 0;
51*f81fb7c4SAndroid Build Coastguard Worker int c = getopt_long(argc, argv, "P:C:", options, &index);
52*f81fb7c4SAndroid Build Coastguard Worker if (c == -1) {
53*f81fb7c4SAndroid Build Coastguard Worker break;
54*f81fb7c4SAndroid Build Coastguard Worker }
55*f81fb7c4SAndroid Build Coastguard Worker
56*f81fb7c4SAndroid Build Coastguard Worker switch (c) {
57*f81fb7c4SAndroid Build Coastguard Worker case 'P': {
58*f81fb7c4SAndroid Build Coastguard Worker setRes(optarg);
59*f81fb7c4SAndroid Build Coastguard Worker break;
60*f81fb7c4SAndroid Build Coastguard Worker }
61*f81fb7c4SAndroid Build Coastguard Worker case 'C':
62*f81fb7c4SAndroid Build Coastguard Worker if (!strcmp(optarg, "false")) {
63*f81fb7c4SAndroid Build Coastguard Worker deleteOutput = false;
64*f81fb7c4SAndroid Build Coastguard Worker }
65*f81fb7c4SAndroid Build Coastguard Worker break;
66*f81fb7c4SAndroid Build Coastguard Worker default:
67*f81fb7c4SAndroid Build Coastguard Worker break;
68*f81fb7c4SAndroid Build Coastguard Worker }
69*f81fb7c4SAndroid Build Coastguard Worker }
70*f81fb7c4SAndroid Build Coastguard Worker
71*f81fb7c4SAndroid Build Coastguard Worker if (optind < argc) {
72*f81fb7c4SAndroid Build Coastguard Worker fprintf(stderr,
73*f81fb7c4SAndroid Build Coastguard Worker "unrecognized option: %s\n\n"
74*f81fb7c4SAndroid Build Coastguard Worker "usage: %s <gtest options> <test options>\n\n"
75*f81fb7c4SAndroid Build Coastguard Worker "test options are:\n\n"
76*f81fb7c4SAndroid Build Coastguard Worker "-P, --path: Resource files directory location\n"
77*f81fb7c4SAndroid Build Coastguard Worker "-C, default:true. Delete output file after test completes\n",
78*f81fb7c4SAndroid Build Coastguard Worker argv[optind ?: 1], argv[0]);
79*f81fb7c4SAndroid Build Coastguard Worker return 2;
80*f81fb7c4SAndroid Build Coastguard Worker }
81*f81fb7c4SAndroid Build Coastguard Worker return 0;
82*f81fb7c4SAndroid Build Coastguard Worker }
83*f81fb7c4SAndroid Build Coastguard Worker
84*f81fb7c4SAndroid Build Coastguard Worker #endif // __SONIVOX_TEST_ENVIRONMENT_H__
85