testsgregion.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #include <gtest/gtest.h>
  2. #include"vregion.h"
  3. #include"vdebug.h"
  4. #include"vpoint.h"
  5. class VRegionTest : public ::testing::Test {
  6. public:
  7. VRegionTest():rgn1(-10, -10, 20, 20)
  8. {
  9. }
  10. void SetUp()
  11. {
  12. rect1 = VRect(-10, -10, 20, 20);
  13. rect2 = VRect(-15, 5, 10, 10);
  14. rgn2 += rect2;
  15. rgn3 = rgn1;
  16. }
  17. void TearDown()
  18. {
  19. }
  20. public:
  21. VRegion emptyRgn;
  22. VRegion rgn1;
  23. VRegion rgn2;
  24. VRegion rgn3;
  25. VRect rect1;
  26. VRect rect2;
  27. VRect rect3;
  28. };
  29. TEST_F(VRegionTest, constructor) {
  30. ASSERT_EQ(rgn1.rectCount() , 1);
  31. ASSERT_TRUE(rgn1.rectAt(0) == rect1);
  32. ASSERT_TRUE(rgn1==rgn3);
  33. ASSERT_TRUE(rgn1!=rgn2);
  34. }
  35. TEST_F(VRegionTest, moveSemantics) {
  36. // move assignment
  37. rgn1 = rect1;
  38. VRegion tmp;
  39. tmp = std::move(rgn1);
  40. ASSERT_TRUE(rgn1.empty());
  41. // move construction
  42. rgn1 = rect1;
  43. VRegion mvrgn = std::move(rgn1);
  44. ASSERT_TRUE(rgn1.empty());
  45. ASSERT_TRUE(mvrgn == rect1);
  46. }
  47. TEST_F(VRegionTest, isEmpty) {
  48. ASSERT_TRUE(emptyRgn.empty());
  49. ASSERT_TRUE(emptyRgn == VRegion());
  50. ASSERT_TRUE(emptyRgn.rectCount() == 0);
  51. ASSERT_TRUE(emptyRgn.boundingRect() == VRect());
  52. }
  53. TEST_F(VRegionTest, boundingRect) {
  54. {
  55. VRect rect;
  56. VRegion region(rect);
  57. ASSERT_TRUE(region.boundingRect() == rect);
  58. }
  59. {
  60. VRect rect(10, -20, 30, 40);
  61. VRegion region(rect);
  62. ASSERT_TRUE(region.boundingRect() == rect);
  63. }
  64. {
  65. VRect rect(15,25,10,10);
  66. VRegion region(rect);
  67. ASSERT_TRUE(region.boundingRect() == rect);
  68. }
  69. }
  70. TEST_F(VRegionTest, swap) {
  71. VRegion r1(VRect(0, 0,10,10));
  72. VRegion r2(VRect(10,10,10,10));
  73. std::swap(r1 ,r2);
  74. ASSERT_TRUE(r1.rectAt(0) == VRect(10,10,10,10));
  75. ASSERT_TRUE(r2.rectAt(0) == VRect(0, 0,10,10));
  76. }
  77. TEST_F(VRegionTest, substracted) {
  78. VRegion r1(VRect(0, 0,20,20));
  79. VRegion r2 = r1.subtracted(VRect(5,5,5,5));
  80. VRegion expected;
  81. expected += VRect(0,0,20,5);
  82. expected += VRect(0,5,5,5);
  83. expected += VRect(10,5,10,5);
  84. expected += VRect(0,10,20,10);
  85. ASSERT_TRUE(r2.rectCount() == expected.rectCount());
  86. ASSERT_TRUE(r2 == expected);
  87. r2 += VRect(5,5,5,5);
  88. ASSERT_TRUE(r2 == r1);
  89. }
  90. TEST_F(VRegionTest, translate) {
  91. VRegion r1(VRect(0, 0,20,20));
  92. VPoint offset(10,10);
  93. VRegion r2 = r1.translated(offset);
  94. r1.translate(offset);
  95. ASSERT_TRUE(r2 == r2);
  96. }
  97. TEST_F(VRegionTest, intersects) {
  98. VRegion r1(VRect(0, 0,20,20));
  99. VRegion r2(VRect(20, 20,10,10));
  100. ASSERT_FALSE(r1.intersects(r2));
  101. r2 += VRect(5, 0,20,20);
  102. ASSERT_TRUE(r1.intersects(r2));
  103. }
  104. TEST_F(VRegionTest, contains) {
  105. VRegion r1(VRect(0, 0,20,20));
  106. ASSERT_TRUE(r1.contains(VRect(5,5,10,10)));
  107. ASSERT_FALSE(r1.contains(VRect(11,5,10,10)));
  108. }