rounded_corners_f_unittest.cc 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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 "ui/gfx/geometry/rounded_corners_f.h"
  5. #include "testing/gtest/include/gtest/gtest.h"
  6. namespace gfx {
  7. TEST(RoundedCornersFTest, DefaultConstructor) {
  8. const RoundedCornersF rc;
  9. EXPECT_EQ(0.0f, rc.upper_left());
  10. EXPECT_EQ(0.0f, rc.upper_right());
  11. EXPECT_EQ(0.0f, rc.lower_right());
  12. EXPECT_EQ(0.0f, rc.lower_left());
  13. }
  14. TEST(RoundedCornersFTest, FromSingleValue) {
  15. constexpr float kValue = 1.33f;
  16. const RoundedCornersF rc(kValue);
  17. EXPECT_EQ(kValue, rc.upper_left());
  18. EXPECT_EQ(kValue, rc.upper_right());
  19. EXPECT_EQ(kValue, rc.lower_right());
  20. EXPECT_EQ(kValue, rc.lower_left());
  21. }
  22. TEST(RoundedCornersFTest, FromFourValues) {
  23. constexpr float kValue1 = 1.33f;
  24. constexpr float kValue2 = 2.66f;
  25. constexpr float kValue3 = 0.1f;
  26. constexpr float kValue4 = 50.0f;
  27. const RoundedCornersF rc(kValue1, kValue2, kValue3, kValue4);
  28. EXPECT_EQ(kValue1, rc.upper_left());
  29. EXPECT_EQ(kValue2, rc.upper_right());
  30. EXPECT_EQ(kValue3, rc.lower_right());
  31. EXPECT_EQ(kValue4, rc.lower_left());
  32. }
  33. TEST(RoundedCornersFTest, IsEmpty) {
  34. EXPECT_TRUE(RoundedCornersF().IsEmpty());
  35. EXPECT_FALSE(RoundedCornersF(1.0f).IsEmpty());
  36. EXPECT_FALSE(RoundedCornersF(1.0f, 0.0f, 0.0f, 0.0f).IsEmpty());
  37. EXPECT_FALSE(RoundedCornersF(0.0f, 1.0f, 0.0f, 0.0f).IsEmpty());
  38. EXPECT_FALSE(RoundedCornersF(0.0f, 0.0f, 1.0f, 0.0f).IsEmpty());
  39. EXPECT_FALSE(RoundedCornersF(0.0f, 0.0f, 0.0f, 1.0f).IsEmpty());
  40. }
  41. TEST(RoundedCornersFTest, Equality) {
  42. constexpr RoundedCornersF kCorners(1.33f, 2.66f, 0.1f, 50.0f);
  43. RoundedCornersF rc = kCorners;
  44. // Using EXPECT_TRUE and EXPECT_FALSE to explicitly test == and != operators
  45. // (rather than EXPECT_EQ, EXPECT_NE).
  46. EXPECT_TRUE(rc == kCorners);
  47. EXPECT_FALSE(rc != kCorners);
  48. rc.set_upper_left(2.0f);
  49. EXPECT_FALSE(rc == kCorners);
  50. EXPECT_TRUE(rc != kCorners);
  51. rc = kCorners;
  52. rc.set_upper_right(2.0f);
  53. EXPECT_FALSE(rc == kCorners);
  54. EXPECT_TRUE(rc != kCorners);
  55. rc = kCorners;
  56. rc.set_lower_left(2.0f);
  57. EXPECT_FALSE(rc == kCorners);
  58. EXPECT_TRUE(rc != kCorners);
  59. rc = kCorners;
  60. rc.set_lower_right(2.0f);
  61. EXPECT_FALSE(rc == kCorners);
  62. EXPECT_TRUE(rc != kCorners);
  63. }
  64. TEST(RoundedCornersFTest, Set) {
  65. RoundedCornersF rc(1.0f, 2.0f, 3.0f, 4.0f);
  66. rc.Set(4.0f, 3.0f, 2.0f, 1.0f);
  67. EXPECT_EQ(4.0f, rc.upper_left());
  68. EXPECT_EQ(3.0f, rc.upper_right());
  69. EXPECT_EQ(2.0f, rc.lower_right());
  70. EXPECT_EQ(1.0f, rc.lower_left());
  71. }
  72. TEST(RoundedCornersFTest, SetProperties) {
  73. RoundedCornersF rc(1.0f, 2.0f, 3.0f, 4.0f);
  74. rc.set_upper_left(50.0f);
  75. EXPECT_EQ(50.0f, rc.upper_left());
  76. EXPECT_EQ(2.0f, rc.upper_right());
  77. EXPECT_EQ(3.0f, rc.lower_right());
  78. EXPECT_EQ(4.0f, rc.lower_left());
  79. rc.set_upper_right(40.0f);
  80. EXPECT_EQ(50.0f, rc.upper_left());
  81. EXPECT_EQ(40.0f, rc.upper_right());
  82. EXPECT_EQ(3.0f, rc.lower_right());
  83. EXPECT_EQ(4.0f, rc.lower_left());
  84. rc.set_lower_right(30.0f);
  85. EXPECT_EQ(50.0f, rc.upper_left());
  86. EXPECT_EQ(40.0f, rc.upper_right());
  87. EXPECT_EQ(30.0f, rc.lower_right());
  88. EXPECT_EQ(4.0f, rc.lower_left());
  89. rc.set_lower_left(20.0f);
  90. EXPECT_EQ(50.0f, rc.upper_left());
  91. EXPECT_EQ(40.0f, rc.upper_right());
  92. EXPECT_EQ(30.0f, rc.lower_right());
  93. EXPECT_EQ(20.0f, rc.lower_left());
  94. }
  95. namespace {
  96. // Verify that IsEmpty() returns true and that all values are exactly zero.
  97. void VerifyEmptyAndZero(const RoundedCornersF& rc) {
  98. EXPECT_TRUE(rc.IsEmpty());
  99. EXPECT_EQ(0.0f, rc.upper_left());
  100. EXPECT_EQ(0.0f, rc.upper_right());
  101. EXPECT_EQ(0.0f, rc.lower_right());
  102. EXPECT_EQ(0.0f, rc.lower_left());
  103. }
  104. } // namespace
  105. TEST(RoundedCornersFTest, Epsilon) {
  106. constexpr float kEpsilon = std::numeric_limits<float>::epsilon();
  107. RoundedCornersF rc(kEpsilon, kEpsilon, kEpsilon, kEpsilon);
  108. VerifyEmptyAndZero(rc);
  109. rc.set_upper_left(kEpsilon);
  110. VerifyEmptyAndZero(rc);
  111. rc.set_upper_right(kEpsilon);
  112. VerifyEmptyAndZero(rc);
  113. rc.set_lower_right(kEpsilon);
  114. VerifyEmptyAndZero(rc);
  115. rc.set_lower_left(kEpsilon);
  116. VerifyEmptyAndZero(rc);
  117. rc.Set(kEpsilon, kEpsilon, kEpsilon, kEpsilon);
  118. VerifyEmptyAndZero(rc);
  119. }
  120. TEST(RoundedCornersFTest, Negative) {
  121. constexpr float kNegative = -0.5f;
  122. RoundedCornersF rc(kNegative, kNegative, kNegative, kNegative);
  123. VerifyEmptyAndZero(rc);
  124. rc.set_upper_left(kNegative);
  125. VerifyEmptyAndZero(rc);
  126. rc.set_upper_right(kNegative);
  127. VerifyEmptyAndZero(rc);
  128. rc.set_lower_right(kNegative);
  129. VerifyEmptyAndZero(rc);
  130. rc.set_lower_left(kNegative);
  131. VerifyEmptyAndZero(rc);
  132. rc.Set(kNegative, kNegative, kNegative, kNegative);
  133. VerifyEmptyAndZero(rc);
  134. }
  135. } // namespace gfx