component_export_unittest.cc 2.0 KB

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