1*6777b538SAndroid Build Coastguard Worker // Copyright 2018 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker #include "base/component_export.h"
6*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
7*6777b538SAndroid Build Coastguard Worker
8*6777b538SAndroid Build Coastguard Worker namespace base {
9*6777b538SAndroid Build Coastguard Worker namespace {
10*6777b538SAndroid Build Coastguard Worker
11*6777b538SAndroid Build Coastguard Worker using ComponentExportTest = testing::Test;
12*6777b538SAndroid Build Coastguard Worker
13*6777b538SAndroid Build Coastguard Worker #define IS_TEST_COMPONENT_A_IMPL 1
14*6777b538SAndroid Build Coastguard Worker #define IS_TEST_COMPONENT_B_IMPL
15*6777b538SAndroid Build Coastguard Worker #define IS_TEST_COMPONENT_C_IMPL 0
16*6777b538SAndroid Build Coastguard Worker #define IS_TEST_COMPONENT_D_IMPL 2
17*6777b538SAndroid Build Coastguard Worker #define IS_TEST_COMPONENT_E_IMPL xyz
18*6777b538SAndroid Build Coastguard Worker
TEST(ComponentExportTest,ImportExport)19*6777b538SAndroid Build Coastguard Worker TEST(ComponentExportTest, ImportExport) {
20*6777b538SAndroid Build Coastguard Worker // Defined as 1. Treat as export.
21*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(1, INSIDE_COMPONENT_IMPL(TEST_COMPONENT_A));
22*6777b538SAndroid Build Coastguard Worker
23*6777b538SAndroid Build Coastguard Worker // Defined, but empty. Treat as import.
24*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(0, INSIDE_COMPONENT_IMPL(TEST_COMPONENT_B));
25*6777b538SAndroid Build Coastguard Worker
26*6777b538SAndroid Build Coastguard Worker // Defined, but 0. Treat as import.
27*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(0, INSIDE_COMPONENT_IMPL(TEST_COMPONENT_C));
28*6777b538SAndroid Build Coastguard Worker
29*6777b538SAndroid Build Coastguard Worker // Defined, but some other arbitrary thing that isn't 1. Treat as import.
30*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(0, INSIDE_COMPONENT_IMPL(TEST_COMPONENT_D));
31*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(0, INSIDE_COMPONENT_IMPL(TEST_COMPONENT_E));
32*6777b538SAndroid Build Coastguard Worker
33*6777b538SAndroid Build Coastguard Worker // Undefined. Treat as import.
34*6777b538SAndroid Build Coastguard Worker EXPECT_EQ(0, INSIDE_COMPONENT_IMPL(TEST_COMPONENT_F));
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Worker // And just for good measure, ensure that the macros evaluate properly in the
37*6777b538SAndroid Build Coastguard Worker // context of preprocessor #if blocks.
38*6777b538SAndroid Build Coastguard Worker #if INSIDE_COMPONENT_IMPL(TEST_COMPONENT_A)
39*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(true);
40*6777b538SAndroid Build Coastguard Worker #else
41*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(false);
42*6777b538SAndroid Build Coastguard Worker #endif
43*6777b538SAndroid Build Coastguard Worker
44*6777b538SAndroid Build Coastguard Worker #if !INSIDE_COMPONENT_IMPL(TEST_COMPONENT_B)
45*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(true);
46*6777b538SAndroid Build Coastguard Worker #else
47*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(false);
48*6777b538SAndroid Build Coastguard Worker #endif
49*6777b538SAndroid Build Coastguard Worker
50*6777b538SAndroid Build Coastguard Worker #if !INSIDE_COMPONENT_IMPL(TEST_COMPONENT_C)
51*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(true);
52*6777b538SAndroid Build Coastguard Worker #else
53*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(false);
54*6777b538SAndroid Build Coastguard Worker #endif
55*6777b538SAndroid Build Coastguard Worker
56*6777b538SAndroid Build Coastguard Worker #if !INSIDE_COMPONENT_IMPL(TEST_COMPONENT_D)
57*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(true);
58*6777b538SAndroid Build Coastguard Worker #else
59*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(false);
60*6777b538SAndroid Build Coastguard Worker #endif
61*6777b538SAndroid Build Coastguard Worker
62*6777b538SAndroid Build Coastguard Worker #if !INSIDE_COMPONENT_IMPL(TEST_COMPONENT_E)
63*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(true);
64*6777b538SAndroid Build Coastguard Worker #else
65*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(false);
66*6777b538SAndroid Build Coastguard Worker #endif
67*6777b538SAndroid Build Coastguard Worker
68*6777b538SAndroid Build Coastguard Worker #if !INSIDE_COMPONENT_IMPL(TEST_COMPONENT_F)
69*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(true);
70*6777b538SAndroid Build Coastguard Worker #else
71*6777b538SAndroid Build Coastguard Worker EXPECT_TRUE(false);
72*6777b538SAndroid Build Coastguard Worker #endif
73*6777b538SAndroid Build Coastguard Worker }
74*6777b538SAndroid Build Coastguard Worker
75*6777b538SAndroid Build Coastguard Worker #undef IS_TEST_COMPONENT_A_IMPL
76*6777b538SAndroid Build Coastguard Worker #undef IS_TEST_COMPONENT_B_IMPL
77*6777b538SAndroid Build Coastguard Worker #undef IS_TEST_COMPONENT_C_IMPL
78*6777b538SAndroid Build Coastguard Worker #undef IS_TEST_COMPONENT_D_IMPL
79*6777b538SAndroid Build Coastguard Worker #undef IS_TEST_COMPONENT_E_IMPL
80*6777b538SAndroid Build Coastguard Worker
81*6777b538SAndroid Build Coastguard Worker } // namespace
82*6777b538SAndroid Build Coastguard Worker } // namespace base
83