desktop_geometry_unittest.cc (3274B)
1 /* 2 * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "modules/desktop_capture/desktop_geometry.h" 12 13 #include "test/gtest.h" 14 15 namespace webrtc { 16 17 TEST(DesktopRectTest, UnionBetweenTwoNonEmptyRects) { 18 DesktopRect rect = DesktopRect::MakeLTRB(1, 1, 2, 2); 19 rect.UnionWith(DesktopRect::MakeLTRB(-2, -2, -1, -1)); 20 ASSERT_TRUE(rect.equals(DesktopRect::MakeLTRB(-2, -2, 2, 2))); 21 } 22 23 TEST(DesktopRectTest, UnionWithEmptyRect) { 24 DesktopRect rect = DesktopRect::MakeWH(1, 1); 25 rect.UnionWith(DesktopRect()); 26 ASSERT_TRUE(rect.equals(DesktopRect::MakeWH(1, 1))); 27 28 rect = DesktopRect::MakeXYWH(1, 1, 2, 2); 29 rect.UnionWith(DesktopRect()); 30 ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); 31 32 rect = DesktopRect::MakeXYWH(1, 1, 2, 2); 33 rect.UnionWith(DesktopRect::MakeXYWH(3, 3, 0, 0)); 34 ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); 35 } 36 37 TEST(DesktopRectTest, EmptyRectUnionWithNonEmptyOne) { 38 DesktopRect rect; 39 rect.UnionWith(DesktopRect::MakeWH(1, 1)); 40 ASSERT_TRUE(rect.equals(DesktopRect::MakeWH(1, 1))); 41 42 rect = DesktopRect(); 43 rect.UnionWith(DesktopRect::MakeXYWH(1, 1, 2, 2)); 44 ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); 45 46 rect = DesktopRect::MakeXYWH(3, 3, 0, 0); 47 rect.UnionWith(DesktopRect::MakeXYWH(1, 1, 2, 2)); 48 ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); 49 } 50 51 TEST(DesktopRectTest, EmptyRectUnionWithEmptyOne) { 52 DesktopRect rect; 53 rect.UnionWith(DesktopRect()); 54 ASSERT_TRUE(rect.is_empty()); 55 56 rect = DesktopRect::MakeXYWH(1, 1, 0, 0); 57 rect.UnionWith(DesktopRect()); 58 ASSERT_TRUE(rect.is_empty()); 59 60 rect = DesktopRect(); 61 rect.UnionWith(DesktopRect::MakeXYWH(1, 1, 0, 0)); 62 ASSERT_TRUE(rect.is_empty()); 63 64 rect = DesktopRect::MakeXYWH(1, 1, 0, 0); 65 rect.UnionWith(DesktopRect::MakeXYWH(-1, -1, 0, 0)); 66 ASSERT_TRUE(rect.is_empty()); 67 } 68 69 TEST(DesktopRectTest, Scale) { 70 DesktopRect rect = DesktopRect::MakeXYWH(100, 100, 100, 100); 71 rect.Scale(1.1, 1.1); 72 ASSERT_EQ(rect.top(), 100); 73 ASSERT_EQ(rect.left(), 100); 74 ASSERT_EQ(rect.width(), 110); 75 ASSERT_EQ(rect.height(), 110); 76 77 rect = DesktopRect::MakeXYWH(100, 100, 100, 100); 78 rect.Scale(0.01, 0.01); 79 ASSERT_EQ(rect.top(), 100); 80 ASSERT_EQ(rect.left(), 100); 81 ASSERT_EQ(rect.width(), 1); 82 ASSERT_EQ(rect.height(), 1); 83 84 rect = DesktopRect::MakeXYWH(100, 100, 100, 100); 85 rect.Scale(1.1, 0.9); 86 ASSERT_EQ(rect.top(), 100); 87 ASSERT_EQ(rect.left(), 100); 88 ASSERT_EQ(rect.width(), 110); 89 ASSERT_EQ(rect.height(), 90); 90 91 rect = DesktopRect::MakeXYWH(0, 0, 100, 100); 92 rect.Scale(1.1, 1.1); 93 ASSERT_EQ(rect.top(), 0); 94 ASSERT_EQ(rect.left(), 0); 95 ASSERT_EQ(rect.width(), 110); 96 ASSERT_EQ(rect.height(), 110); 97 98 rect = DesktopRect::MakeXYWH(0, 100, 100, 100); 99 rect.Scale(1.1, 1.1); 100 ASSERT_EQ(rect.top(), 100); 101 ASSERT_EQ(rect.left(), 0); 102 ASSERT_EQ(rect.width(), 110); 103 ASSERT_EQ(rect.height(), 110); 104 } 105 106 } // namespace webrtc