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