diff --git a/webrtc/modules/desktop_capture/BUILD.gn b/webrtc/modules/desktop_capture/BUILD.gn index 5854b3438a..93ceb752c2 100644 --- a/webrtc/modules/desktop_capture/BUILD.gn +++ b/webrtc/modules/desktop_capture/BUILD.gn @@ -76,6 +76,7 @@ if (rtc_include_tests) { "desktop_and_cursor_composer_unittest.cc", "desktop_capturer_differ_wrapper_unittest.cc", "desktop_frame_rotation_unittest.cc", + "desktop_geometry_unittest.cc", "desktop_region_unittest.cc", "differ_block_unittest.cc", "fallback_desktop_capturer_wrapper_unittest.cc", diff --git a/webrtc/modules/desktop_capture/desktop_geometry_unittest.cc b/webrtc/modules/desktop_capture/desktop_geometry_unittest.cc new file mode 100644 index 0000000000..0628d9aeb2 --- /dev/null +++ b/webrtc/modules/desktop_capture/desktop_geometry_unittest.cc @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2017 The WebRTC project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "webrtc/modules/desktop_capture/desktop_geometry.h" + +#include "webrtc/test/gtest.h" + +namespace webrtc { + +TEST(DesktopRectTest, UnionBetweenTwoNonEmptyRects) { + DesktopRect rect = DesktopRect::MakeLTRB(1, 1, 2, 2); + rect.UnionWith(DesktopRect::MakeLTRB(-2, -2, -1, -1)); + ASSERT_TRUE(rect.equals(DesktopRect::MakeLTRB(-2, -2, 2, 2))); +} + +TEST(DesktopRectTest, UnionWithEmptyRect) { + DesktopRect rect = DesktopRect::MakeWH(1, 1); + rect.UnionWith(DesktopRect()); + ASSERT_TRUE(rect.equals(DesktopRect::MakeWH(1, 1))); + + rect = DesktopRect::MakeXYWH(1, 1, 2, 2); + rect.UnionWith(DesktopRect()); + ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); + + rect = DesktopRect::MakeXYWH(1, 1, 2, 2); + rect.UnionWith(DesktopRect::MakeXYWH(3, 3, 0, 0)); + ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); +} + +TEST(DesktopRectTest, EmptyRectUnionWithNonEmptyOne) { + DesktopRect rect; + rect.UnionWith(DesktopRect::MakeWH(1, 1)); + ASSERT_TRUE(rect.equals(DesktopRect::MakeWH(1, 1))); + + rect = DesktopRect(); + rect.UnionWith(DesktopRect::MakeXYWH(1, 1, 2, 2)); + ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); + + rect = DesktopRect::MakeXYWH(3, 3, 0, 0); + rect.UnionWith(DesktopRect::MakeXYWH(1, 1, 2, 2)); + ASSERT_TRUE(rect.equals(DesktopRect::MakeXYWH(1, 1, 2, 2))); +} + +TEST(DesktopRectTest, EmptyRectUnionWithEmptyOne) { + DesktopRect rect; + rect.UnionWith(DesktopRect()); + ASSERT_TRUE(rect.is_empty()); + + rect = DesktopRect::MakeXYWH(1, 1, 0, 0); + rect.UnionWith(DesktopRect()); + ASSERT_TRUE(rect.is_empty()); + + rect = DesktopRect(); + rect.UnionWith(DesktopRect::MakeXYWH(1, 1, 0, 0)); + ASSERT_TRUE(rect.is_empty()); + + rect = DesktopRect::MakeXYWH(1, 1, 0, 0); + rect.UnionWith(DesktopRect::MakeXYWH(-1, -1, 0, 0)); + ASSERT_TRUE(rect.is_empty()); +} + +} // namespace webrtc