execution_context_priority_unittest.cc 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // Copyright 2019 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 "components/performance_manager/public/execution_context_priority/execution_context_priority.h"
  5. #include "components/performance_manager/test_support/voting.h"
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. namespace performance_manager {
  8. namespace execution_context_priority {
  9. namespace {
  10. static const char kReason1[] = "reason1";
  11. static const char kReason2[] = "reason2";
  12. static const char kReason3[] = "reason1"; // Equal to kReason1 on purpose!
  13. } // namespace
  14. TEST(ExecutionContextPriorityTest, ReasonCompare) {
  15. // Comparison with nullptr.
  16. EXPECT_GT(0, ReasonCompare(nullptr, kReason1));
  17. EXPECT_EQ(0, ReasonCompare(nullptr, nullptr));
  18. EXPECT_LT(0, ReasonCompare(kReason1, nullptr));
  19. // Comparisons where the addresses and string content are different.
  20. EXPECT_GT(0, ReasonCompare(kReason1, kReason2));
  21. EXPECT_LT(0, ReasonCompare(kReason2, kReason1));
  22. // Comparison with identical addresses.
  23. EXPECT_EQ(0, ReasonCompare(kReason1, kReason1));
  24. // Comparison where the addresses are different, but string content is the
  25. // same.
  26. EXPECT_EQ(0, ReasonCompare(kReason1, kReason3));
  27. }
  28. TEST(ExecutionContextPriorityTest, PriorityAndReason) {
  29. // Default constructor
  30. PriorityAndReason par1;
  31. EXPECT_EQ(base::TaskPriority::LOWEST, par1.priority());
  32. EXPECT_EQ(nullptr, par1.reason());
  33. // Explicit initialization.
  34. PriorityAndReason par2(base::TaskPriority::HIGHEST, kReason1);
  35. EXPECT_EQ(base::TaskPriority::HIGHEST, par2.priority());
  36. EXPECT_EQ(kReason1, par2.reason());
  37. // Identical comparison.
  38. EXPECT_TRUE(par1 == par1);
  39. EXPECT_FALSE(par1 != par1);
  40. EXPECT_TRUE(par1 <= par1);
  41. EXPECT_TRUE(par1 >= par1);
  42. EXPECT_FALSE(par1 < par1);
  43. EXPECT_FALSE(par1 > par1);
  44. // Comparison with distinct priorities.
  45. EXPECT_FALSE(par1 == par2);
  46. EXPECT_TRUE(par1 != par2);
  47. EXPECT_TRUE(par1 <= par2);
  48. EXPECT_FALSE(par1 >= par2);
  49. EXPECT_TRUE(par1 < par2);
  50. EXPECT_FALSE(par1 > par2);
  51. // Comparison with identical priorities and reasons strings, but at different
  52. // locations.
  53. PriorityAndReason par3(base::TaskPriority::HIGHEST, kReason3);
  54. EXPECT_EQ(base::TaskPriority::HIGHEST, par3.priority());
  55. EXPECT_EQ(kReason3, par3.reason());
  56. EXPECT_TRUE(par2 == par3);
  57. EXPECT_FALSE(par2 != par3);
  58. EXPECT_TRUE(par2 <= par3);
  59. EXPECT_TRUE(par2 >= par3);
  60. EXPECT_FALSE(par2 < par3);
  61. EXPECT_FALSE(par2 > par3);
  62. // Comparison with identical priorities, and different reason strings.
  63. PriorityAndReason par4(base::TaskPriority::LOWEST, kReason2);
  64. EXPECT_FALSE(par1 == par4);
  65. EXPECT_TRUE(par1 != par4);
  66. EXPECT_TRUE(par1 <= par4);
  67. EXPECT_FALSE(par1 >= par4);
  68. EXPECT_TRUE(par1 < par4);
  69. EXPECT_FALSE(par1 > par4);
  70. // Copy constructor.
  71. PriorityAndReason par5(par3);
  72. EXPECT_EQ(base::TaskPriority::HIGHEST, par5.priority());
  73. EXPECT_EQ(kReason3, par5.reason());
  74. // Assignment.
  75. par1 = par3;
  76. EXPECT_EQ(base::TaskPriority::HIGHEST, par1.priority());
  77. EXPECT_EQ(kReason3, par1.reason());
  78. }
  79. } // namespace execution_context_priority
  80. } // namespace performance_manager