xref: /aosp_15_r20/external/sonivox/test/SonivoxTestEnvironment.h (revision f81fb7c475c4b71ff83bdcc517de2a8c174e4e5c)
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