1*b7c941bbSAndroid Build Coastguard Worker /*
2*b7c941bbSAndroid Build Coastguard Worker * Copyright (C) 2023 The Android Open Source Project
3*b7c941bbSAndroid Build Coastguard Worker *
4*b7c941bbSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker *
8*b7c941bbSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker *
10*b7c941bbSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker * limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker */
16*b7c941bbSAndroid Build Coastguard Worker
17*b7c941bbSAndroid Build Coastguard Worker #include <flag_macros.h>
18*b7c941bbSAndroid Build Coastguard Worker #include <gtest/gtest.h>
19*b7c941bbSAndroid Build Coastguard Worker #include "android_cts_flags_tests.h"
20*b7c941bbSAndroid Build Coastguard Worker
21*b7c941bbSAndroid Build Coastguard Worker #define TEST_NS android::cts::flags::tests
22*b7c941bbSAndroid Build Coastguard Worker
23*b7c941bbSAndroid Build Coastguard Worker class TestFWithFlagsTest : public ::testing::Test {
24*b7c941bbSAndroid Build Coastguard Worker public:
25*b7c941bbSAndroid Build Coastguard Worker static std::set<std::string> executed_tests;
26*b7c941bbSAndroid Build Coastguard Worker protected:
TestFail()27*b7c941bbSAndroid Build Coastguard Worker void TestFail() {
28*b7c941bbSAndroid Build Coastguard Worker FAIL();
29*b7c941bbSAndroid Build Coastguard Worker }
30*b7c941bbSAndroid Build Coastguard Worker };
31*b7c941bbSAndroid Build Coastguard Worker
32*b7c941bbSAndroid Build Coastguard Worker std::set<std::string> TestFWithFlagsTest::executed_tests = {};
33*b7c941bbSAndroid Build Coastguard Worker
TEST_F_WITH_FLAGS(TestFWithFlagsTest,requies_disabled_flag_enabled_skip,REQUIRES_FLAGS_DISABLED (ACONFIG_FLAG (TEST_NS,readwrite_enabled_flag)))34*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
35*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
36*b7c941bbSAndroid Build Coastguard Worker requies_disabled_flag_enabled_skip,
37*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag))
38*b7c941bbSAndroid Build Coastguard Worker ) {
39*b7c941bbSAndroid Build Coastguard Worker TestFail();
40*b7c941bbSAndroid Build Coastguard Worker }
41*b7c941bbSAndroid Build Coastguard Worker
42*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
43*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
44*b7c941bbSAndroid Build Coastguard Worker requies_disabled_flag_disabled_execute,
45*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(
46*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag))
47*b7c941bbSAndroid Build Coastguard Worker ) {
48*b7c941bbSAndroid Build Coastguard Worker executed_tests.insert("requies_disabled_flag_disabled_execute");
49*b7c941bbSAndroid Build Coastguard Worker }
50*b7c941bbSAndroid Build Coastguard Worker
TEST_F_WITH_FLAGS(TestFWithFlagsTest,requies_enabled_flag_disabled_skip,REQUIRES_FLAGS_ENABLED (ACONFIG_FLAG (TEST_NS,readwrite_disabled_flag)))51*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
52*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
53*b7c941bbSAndroid Build Coastguard Worker requies_enabled_flag_disabled_skip,
54*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag))
55*b7c941bbSAndroid Build Coastguard Worker ) {
56*b7c941bbSAndroid Build Coastguard Worker TestFail();
57*b7c941bbSAndroid Build Coastguard Worker }
58*b7c941bbSAndroid Build Coastguard Worker
59*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
60*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
61*b7c941bbSAndroid Build Coastguard Worker requies_enabled_flag_enabled_executed,
62*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(
63*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_enabled_flag))
64*b7c941bbSAndroid Build Coastguard Worker ) {
65*b7c941bbSAndroid Build Coastguard Worker executed_tests.insert("requies_enabled_flag_enabled_executed");
66*b7c941bbSAndroid Build Coastguard Worker }
67*b7c941bbSAndroid Build Coastguard Worker
68*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
69*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
70*b7c941bbSAndroid Build Coastguard Worker multi_flags_skip,
71*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag)),
72*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(
73*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_enabled_flag))
74*b7c941bbSAndroid Build Coastguard Worker ) {
75*b7c941bbSAndroid Build Coastguard Worker TestFail();
76*b7c941bbSAndroid Build Coastguard Worker }
77*b7c941bbSAndroid Build Coastguard Worker
78*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
79*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
80*b7c941bbSAndroid Build Coastguard Worker multi_flags_executed,
81*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag)),
82*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(
83*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag))
84*b7c941bbSAndroid Build Coastguard Worker ) {
85*b7c941bbSAndroid Build Coastguard Worker executed_tests.insert("multi_flags_executed");
86*b7c941bbSAndroid Build Coastguard Worker }
87*b7c941bbSAndroid Build Coastguard Worker
88*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
89*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
90*b7c941bbSAndroid Build Coastguard Worker multi_flags_for_same_state_skip,
91*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(
92*b7c941bbSAndroid Build Coastguard Worker ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag),
93*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag)
94*b7c941bbSAndroid Build Coastguard Worker )
95*b7c941bbSAndroid Build Coastguard Worker ) {
96*b7c941bbSAndroid Build Coastguard Worker TestFail();
97*b7c941bbSAndroid Build Coastguard Worker }
98*b7c941bbSAndroid Build Coastguard Worker
99*b7c941bbSAndroid Build Coastguard Worker TEST_F_WITH_FLAGS(
100*b7c941bbSAndroid Build Coastguard Worker TestFWithFlagsTest,
101*b7c941bbSAndroid Build Coastguard Worker multi_flags_for_same_state_executed,
102*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(
103*b7c941bbSAndroid Build Coastguard Worker ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag),
104*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag_2)
105*b7c941bbSAndroid Build Coastguard Worker )
106*b7c941bbSAndroid Build Coastguard Worker ) {
107*b7c941bbSAndroid Build Coastguard Worker executed_tests.insert("multi_flags_for_same_state_executed");
108*b7c941bbSAndroid Build Coastguard Worker }
109*b7c941bbSAndroid Build Coastguard Worker
TEST_F(TestFWithFlagsTest,check_n_executed_tests)110*b7c941bbSAndroid Build Coastguard Worker TEST_F(TestFWithFlagsTest, check_n_executed_tests) {
111*b7c941bbSAndroid Build Coastguard Worker std::set<std::string> expected_executed_tests = {
112*b7c941bbSAndroid Build Coastguard Worker "requies_disabled_flag_disabled_execute",
113*b7c941bbSAndroid Build Coastguard Worker "requies_enabled_flag_enabled_executed",
114*b7c941bbSAndroid Build Coastguard Worker "multi_flags_executed",
115*b7c941bbSAndroid Build Coastguard Worker "multi_flags_for_same_state_executed",
116*b7c941bbSAndroid Build Coastguard Worker };
117*b7c941bbSAndroid Build Coastguard Worker ASSERT_EQ(expected_executed_tests, executed_tests);
118*b7c941bbSAndroid Build Coastguard Worker }
119*b7c941bbSAndroid Build Coastguard Worker
120*b7c941bbSAndroid Build Coastguard Worker class TestWithFlagsTestHelper {
121*b7c941bbSAndroid Build Coastguard Worker public:
122*b7c941bbSAndroid Build Coastguard Worker static std::set<std::string> executed_tests;
123*b7c941bbSAndroid Build Coastguard Worker };
124*b7c941bbSAndroid Build Coastguard Worker
125*b7c941bbSAndroid Build Coastguard Worker std::set<std::string> TestWithFlagsTestHelper::executed_tests = {};
126*b7c941bbSAndroid Build Coastguard Worker
127*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
128*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
129*b7c941bbSAndroid Build Coastguard Worker requies_disabled_flag_enabled_skip,
130*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(
131*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_enabled_flag))
132*b7c941bbSAndroid Build Coastguard Worker ) {
133*b7c941bbSAndroid Build Coastguard Worker FAIL();
134*b7c941bbSAndroid Build Coastguard Worker }
135*b7c941bbSAndroid Build Coastguard Worker
TEST_WITH_FLAGS(TestWithFlagsTest,requies_disabled_flag_disabled_execute,REQUIRES_FLAGS_DISABLED (ACONFIG_FLAG (TEST_NS,readwrite_disabled_flag)))136*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
137*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
138*b7c941bbSAndroid Build Coastguard Worker requies_disabled_flag_disabled_execute,
139*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag))
140*b7c941bbSAndroid Build Coastguard Worker ) {
141*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTestHelper::executed_tests.insert(
142*b7c941bbSAndroid Build Coastguard Worker "requies_disabled_flag_disabled_execute");
143*b7c941bbSAndroid Build Coastguard Worker }
144*b7c941bbSAndroid Build Coastguard Worker
145*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
146*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
147*b7c941bbSAndroid Build Coastguard Worker requies_enabled_flag_disabled_skip,
148*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(
149*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag))
150*b7c941bbSAndroid Build Coastguard Worker ) {
151*b7c941bbSAndroid Build Coastguard Worker FAIL();
152*b7c941bbSAndroid Build Coastguard Worker }
153*b7c941bbSAndroid Build Coastguard Worker
TEST_WITH_FLAGS(TestWithFlagsTest,requies_enabled_flag_enabled_executed,REQUIRES_FLAGS_ENABLED (ACONFIG_FLAG (TEST_NS,readwrite_enabled_flag)))154*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
155*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
156*b7c941bbSAndroid Build Coastguard Worker requies_enabled_flag_enabled_executed,
157*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag))
158*b7c941bbSAndroid Build Coastguard Worker ) {
159*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTestHelper::executed_tests.insert(
160*b7c941bbSAndroid Build Coastguard Worker "requies_enabled_flag_enabled_executed");
161*b7c941bbSAndroid Build Coastguard Worker }
162*b7c941bbSAndroid Build Coastguard Worker
163*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
164*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
165*b7c941bbSAndroid Build Coastguard Worker multi_flags_skip,
166*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(
167*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag)),
168*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(ACONFIG_FLAG(TEST_NS, readwrite_enabled_flag))
169*b7c941bbSAndroid Build Coastguard Worker ) {
170*b7c941bbSAndroid Build Coastguard Worker FAIL();
171*b7c941bbSAndroid Build Coastguard Worker }
172*b7c941bbSAndroid Build Coastguard Worker
173*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
174*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
175*b7c941bbSAndroid Build Coastguard Worker multi_flags_executed,
176*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(
177*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_enabled_flag)),
178*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag))
179*b7c941bbSAndroid Build Coastguard Worker ) {
180*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTestHelper::executed_tests.insert(
181*b7c941bbSAndroid Build Coastguard Worker "multi_flags_executed");
182*b7c941bbSAndroid Build Coastguard Worker }
183*b7c941bbSAndroid Build Coastguard Worker
184*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
185*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
186*b7c941bbSAndroid Build Coastguard Worker multi_flags_for_same_state_skip,
187*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_ENABLED(
188*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_enabled_flag),
189*b7c941bbSAndroid Build Coastguard Worker ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag)
190*b7c941bbSAndroid Build Coastguard Worker )
191*b7c941bbSAndroid Build Coastguard Worker ) {
192*b7c941bbSAndroid Build Coastguard Worker FAIL();
193*b7c941bbSAndroid Build Coastguard Worker }
194*b7c941bbSAndroid Build Coastguard Worker
195*b7c941bbSAndroid Build Coastguard Worker TEST_WITH_FLAGS(
196*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTest,
197*b7c941bbSAndroid Build Coastguard Worker multi_flags_for_same_state_executed,
198*b7c941bbSAndroid Build Coastguard Worker REQUIRES_FLAGS_DISABLED(
199*b7c941bbSAndroid Build Coastguard Worker LEGACY_FLAG(aconfig_flags.cts, TEST_NS, readwrite_disabled_flag),
200*b7c941bbSAndroid Build Coastguard Worker ACONFIG_FLAG(TEST_NS, readwrite_disabled_flag_2)
201*b7c941bbSAndroid Build Coastguard Worker )
202*b7c941bbSAndroid Build Coastguard Worker ) {
203*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTestHelper::executed_tests.insert(
204*b7c941bbSAndroid Build Coastguard Worker "multi_flags_for_same_state_executed");
205*b7c941bbSAndroid Build Coastguard Worker }
206*b7c941bbSAndroid Build Coastguard Worker
TEST(TestWithFlagsTest,check_n_executed_tests)207*b7c941bbSAndroid Build Coastguard Worker TEST(TestWithFlagsTest, check_n_executed_tests) {
208*b7c941bbSAndroid Build Coastguard Worker std::set<std::string> expected_executed_tests = {
209*b7c941bbSAndroid Build Coastguard Worker "requies_disabled_flag_disabled_execute",
210*b7c941bbSAndroid Build Coastguard Worker "requies_enabled_flag_enabled_executed",
211*b7c941bbSAndroid Build Coastguard Worker "multi_flags_executed",
212*b7c941bbSAndroid Build Coastguard Worker "multi_flags_for_same_state_executed",
213*b7c941bbSAndroid Build Coastguard Worker };
214*b7c941bbSAndroid Build Coastguard Worker ASSERT_EQ(
215*b7c941bbSAndroid Build Coastguard Worker expected_executed_tests,
216*b7c941bbSAndroid Build Coastguard Worker TestWithFlagsTestHelper::executed_tests);
217*b7c941bbSAndroid Build Coastguard Worker }
218*b7c941bbSAndroid Build Coastguard Worker
main(int argc,char ** argv)219*b7c941bbSAndroid Build Coastguard Worker int main(int argc, char **argv) {
220*b7c941bbSAndroid Build Coastguard Worker testing::InitGoogleTest(&argc, argv);
221*b7c941bbSAndroid Build Coastguard Worker return RUN_ALL_TESTS();
222*b7c941bbSAndroid Build Coastguard Worker }
223