| Index: remoting/ios/ui/scene_view_unittest.mm
|
| diff --git a/remoting/ios/ui/scene_view_unittest.mm b/remoting/ios/ui/scene_view_unittest.mm
|
| deleted file mode 100644
|
| index d1dfabcd7dbd46c208a73cc3273632d2f2369960..0000000000000000000000000000000000000000
|
| --- a/remoting/ios/ui/scene_view_unittest.mm
|
| +++ /dev/null
|
| @@ -1,1219 +0,0 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| -#error "This file requires ARC support."
|
| -#endif
|
| -
|
| -#import "remoting/ios/ui/scene_view.h"
|
| -
|
| -#import "base/compiler_specific.h"
|
| -#import "testing/gtest_mac.h"
|
| -
|
| -namespace remoting {
|
| -
|
| -namespace {
|
| -const int kClientWidth = 200;
|
| -const int kClientHeight = 100;
|
| -const webrtc::DesktopSize kClientSize(kClientWidth, kClientHeight);
|
| -// Smaller then ClientSize
|
| -const webrtc::DesktopSize kSmall(50, 75);
|
| -// Inverted - The vertical is closer to an edge than the horizontal
|
| -const webrtc::DesktopSize kSmallInversed(175, 50);
|
| -// Larger then ClientSize
|
| -const webrtc::DesktopSize kLarge(800, 125);
|
| -const webrtc::DesktopSize kLargeInversed(225, 400);
|
| -} // namespace
|
| -
|
| -class SceneViewTest : public ::testing::Test {
|
| - protected:
|
| - virtual void SetUp() OVERRIDE {
|
| - scene_ = [[SceneView alloc] init];
|
| - [scene_
|
| - setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| - [scene_ setFrameSize:kLarge];
|
| - }
|
| -
|
| - void MakeLarge() { [scene_ setFrameSize:kLarge]; }
|
| -
|
| - SceneView* scene_;
|
| -};
|
| -
|
| -TEST(SceneViewTest_Property, ContentSize) {
|
| - SceneView* scene = [[SceneView alloc] init];
|
| -
|
| - [scene setContentSize:CGSizeMake(0, 0)];
|
| - EXPECT_EQ(0, scene.contentSize.width());
|
| - EXPECT_EQ(0, scene.contentSize.height());
|
| - float zeros[16] = {1.0f / 0.0f, 0, 0, 0, 0, 1.0f / 0.0f, 0, 0,
|
| - 0, 0, 1, 0, 0.0f / 0.0f, 0.0f / 0.0f, 0, 1};
|
| -
|
| - ASSERT_TRUE(memcmp(zeros, scene.projectionMatrix.m, 16 * sizeof(float)) == 0);
|
| -
|
| - [scene setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| - EXPECT_EQ(kClientSize.width(), scene.contentSize.width());
|
| - EXPECT_EQ(kClientSize.height(), scene.contentSize.height());
|
| -
|
| - EXPECT_TRUE(memcmp(GLKMatrix4MakeOrtho(
|
| - 0.0, kClientWidth, 0.0, kClientHeight, 1.0, -1.0).m,
|
| - scene.projectionMatrix.m,
|
| - 16 * sizeof(float)) == 0);
|
| -}
|
| -
|
| -TEST(SceneViewTest_Property, FrameSizeInit) {
|
| - SceneView* scene = [[SceneView alloc] init];
|
| - [scene setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| -
|
| - [scene setFrameSize:webrtc::DesktopSize(1, 1)];
|
| - EXPECT_EQ(1, scene.frameSize.width());
|
| - EXPECT_EQ(1, scene.frameSize.height());
|
| -
|
| - EXPECT_EQ(0, scene.position.x);
|
| - EXPECT_EQ(0, scene.position.y);
|
| - EXPECT_EQ(1, scene.position.z);
|
| -
|
| - EXPECT_FALSE(scene.anchored.left);
|
| - EXPECT_FALSE(scene.anchored.right);
|
| - EXPECT_FALSE(scene.anchored.top);
|
| - EXPECT_FALSE(scene.anchored.bottom);
|
| -
|
| - EXPECT_EQ(0, scene.mousePosition.x());
|
| - EXPECT_EQ(0, scene.mousePosition.y());
|
| -}
|
| -
|
| -TEST(SceneViewTest_Property, FrameSizeLarge) {
|
| - SceneView* scene = [[SceneView alloc] init];
|
| - [scene setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| - [scene setFrameSize:kLarge];
|
| - EXPECT_EQ(kLarge.width(), scene.frameSize.width());
|
| - EXPECT_EQ(kLarge.height(), scene.frameSize.height());
|
| -
|
| - // Screen is positioned in the lower,left corner, zoomed until the vertical
|
| - // fits exactly, and then centered horizontally
|
| - // HOST
|
| - // CLIENT ------------------------------------------------
|
| - // ------------ | |
|
| - // | | | |
|
| - // | | | |
|
| - // | | | |
|
| - // ------------ ------------------------------------------------
|
| - // RESULT - ONSCREEN is completely covered, with some of the HOST off screen
|
| - // (-.-) the mouse cursor
|
| - // -----------------------------------------
|
| - // | ONSCREEN | OFFSCREEN |
|
| - // | -.- | |
|
| - // | | |
|
| - // -----------------------------------------
|
| - float scale = static_cast<float>(kClientSize.height()) /
|
| - static_cast<float>(kLarge.height());
|
| - // vertical fits exactly
|
| - EXPECT_EQ(scale, scene.position.z);
|
| -
|
| - // sitting on both Axis
|
| - EXPECT_EQ(0, scene.position.x);
|
| - EXPECT_EQ(0, scene.position.y);
|
| -
|
| - // bound on 3 sides, not on the right
|
| - EXPECT_TRUE(scene.anchored.left);
|
| - EXPECT_FALSE(scene.anchored.right);
|
| - EXPECT_TRUE(scene.anchored.top);
|
| - EXPECT_TRUE(scene.anchored.bottom);
|
| -
|
| - // mouse is off center on the left horizontal
|
| - EXPECT_EQ(kClientSize.width() / (scale * 2), scene.mousePosition.x());
|
| - // mouse is centered vertical
|
| - EXPECT_EQ(kLarge.height() / 2, scene.mousePosition.y());
|
| -}
|
| -
|
| -TEST(SceneViewTest_Property, FrameSizeLargeInversed) {
|
| - SceneView* scene = [[SceneView alloc] init];
|
| - [scene setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| - [scene setFrameSize:kLargeInversed];
|
| - EXPECT_EQ(kLargeInversed.width(), scene.frameSize.width());
|
| - EXPECT_EQ(kLargeInversed.height(), scene.frameSize.height());
|
| -
|
| - // Screen is positioned in the lower,left corner, zoomed until the vertical
|
| - // fits exactly, and then centered horizontally
|
| - // HOST
|
| - // ---------------
|
| - // | |
|
| - // | |
|
| - // | |
|
| - // | |
|
| - // | |
|
| - // | |
|
| - // | |
|
| - // CLIENT | |
|
| - // ------------- | |
|
| - // | | | |
|
| - // | | | |
|
| - // | | | |
|
| - // ------------- ---------------
|
| - // RESULT, entire HOST is on screen
|
| - // (-.-) the mouse cursor, XX is black backdrop
|
| - // -------------
|
| - // |XX| |XX|
|
| - // |XX| -.- |XX|
|
| - // |XX| |XX|
|
| - // -------------
|
| - float scale = static_cast<float>(kClientSize.height()) /
|
| - static_cast<float>(kLargeInversed.height());
|
| - // Vertical fits exactly
|
| - EXPECT_EQ(scale, scene.position.z);
|
| -
|
| - // centered
|
| - EXPECT_EQ(
|
| - (kClientSize.width() - static_cast<int>(scale * kLargeInversed.width())) /
|
| - 2,
|
| - scene.position.x);
|
| - // sits on Axis
|
| - EXPECT_EQ(0, scene.position.y);
|
| -
|
| - // bound on all 4 sides
|
| - EXPECT_TRUE(scene.anchored.left);
|
| - EXPECT_TRUE(scene.anchored.right);
|
| - EXPECT_TRUE(scene.anchored.top);
|
| - EXPECT_TRUE(scene.anchored.bottom);
|
| -
|
| - // mouse is in centered both vertical and horizontal
|
| - EXPECT_EQ(kLargeInversed.width() / 2, scene.mousePosition.x());
|
| - EXPECT_EQ(kLargeInversed.height() / 2, scene.mousePosition.y());
|
| -}
|
| -
|
| -TEST(SceneViewTest_Property, FrameSizeSmall) {
|
| - SceneView* scene = [[SceneView alloc] init];
|
| - [scene setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| - [scene setFrameSize:kSmall];
|
| - EXPECT_EQ(kSmall.width(), scene.frameSize.width());
|
| - EXPECT_EQ(kSmall.height(), scene.frameSize.height());
|
| -
|
| - // Screen is positioned in the lower,left corner, zoomed until the vertical
|
| - // fits exactly, and then centered horizontally
|
| - // CLIENT
|
| - // ---------------------------
|
| - // | | HOST
|
| - // | | -------
|
| - // | | | |
|
| - // | | | |
|
| - // | | | |
|
| - // | | | |
|
| - // | | | |
|
| - // --------------------------- -------
|
| - // RESULT, entire HOST is on screen
|
| - // (-.-) the mouse cursor, XX is black backdrop
|
| - // ---------------------------
|
| - // |XXXXXXXXX| |XXXXXXXXX|
|
| - // |XXXXXXXXX| |XXXXXXXXX|
|
| - // |XXXXXXXXX| |XXXXXXXXX|
|
| - // |XXXXXXXXX| -.- |XXXXXXXXX|
|
| - // |XXXXXXXXX| |XXXXXXXXX|
|
| - // |XXXXXXXXX| |XXXXXXXXX|
|
| - // |XXXXXXXXX| |XXXXXXXXX|
|
| - // ---------------------------
|
| - float scale = static_cast<float>(kClientSize.height()) /
|
| - static_cast<float>(kSmall.height());
|
| - // Vertical fits exactly
|
| - EXPECT_EQ(scale, scene.position.z);
|
| -
|
| - // centered
|
| - EXPECT_EQ(
|
| - (kClientSize.width() - static_cast<int>(scale * kSmall.width())) / 2,
|
| - scene.position.x);
|
| - // sits on Axis
|
| - EXPECT_EQ(0, scene.position.y);
|
| -
|
| - // bound on all 4 sides
|
| - EXPECT_TRUE(scene.anchored.left);
|
| - EXPECT_TRUE(scene.anchored.right);
|
| - EXPECT_TRUE(scene.anchored.top);
|
| - EXPECT_TRUE(scene.anchored.bottom);
|
| -
|
| - // mouse is in centered both vertical and horizontal
|
| - EXPECT_EQ((kSmall.width() / 2) - 1, // -1 for pixel rounding
|
| - scene.mousePosition.x());
|
| - EXPECT_EQ(kSmall.height() / 2, scene.mousePosition.y());
|
| -}
|
| -
|
| -TEST(SceneViewTest_Property, FrameSizeSmallInversed) {
|
| - SceneView* scene = [[SceneView alloc] init];
|
| - [scene setContentSize:CGSizeMake(kClientSize.width(), kClientSize.height())];
|
| - [scene setFrameSize:kSmallInversed];
|
| - EXPECT_EQ(kSmallInversed.width(), scene.frameSize.width());
|
| - EXPECT_EQ(kSmallInversed.height(), scene.frameSize.height());
|
| -
|
| - // Screen is positioned in the lower,left corner, zoomed until the vertical
|
| - // fits exactly, and then centered horizontally
|
| - // CLIENT
|
| - // ---------------------------
|
| - // | |
|
| - // | |
|
| - // | | HOST
|
| - // | | ----------------------
|
| - // | | | |
|
| - // | | | |
|
| - // | | | |
|
| - // --------------------------- ----------------------
|
| - // RESULT - ONSCREEN is completely covered, with some of the HOST off screen
|
| - // (-.-) the mouse cursor
|
| - // --------------------------------------------
|
| - // | ONSCREEN | OFFSCREEN |
|
| - // | | |
|
| - // | | |
|
| - // | -.- | |
|
| - // | | |
|
| - // | | |
|
| - // | | |
|
| - // --------------------------------------------
|
| - float scale = static_cast<float>(kClientSize.height()) /
|
| - static_cast<float>(kSmallInversed.height());
|
| - // vertical fits exactly
|
| - EXPECT_EQ(scale, scene.position.z);
|
| -
|
| - // sitting on both Axis
|
| - EXPECT_EQ(0, scene.position.x);
|
| - EXPECT_EQ(0, scene.position.y);
|
| -
|
| - // bound on 3 sides, not on the right
|
| - EXPECT_TRUE(scene.anchored.left);
|
| - EXPECT_FALSE(scene.anchored.right);
|
| - EXPECT_TRUE(scene.anchored.top);
|
| - EXPECT_TRUE(scene.anchored.bottom);
|
| -
|
| - // mouse is off center on the left horizontal
|
| - EXPECT_EQ(kClientSize.width() / (scale * 2), scene.mousePosition.x());
|
| - // mouse is centered vertical
|
| - EXPECT_EQ(kSmallInversed.height() / 2, scene.mousePosition.y());
|
| -}
|
| -
|
| -TEST_F(SceneViewTest, ContainsTouchPoint) {
|
| - int midWidth = kClientWidth / 2;
|
| - int midHeight = kClientHeight / 2;
|
| - // left
|
| - EXPECT_FALSE([scene_ containsTouchPoint:CGPointMake(-1, midHeight)]);
|
| - EXPECT_TRUE([scene_ containsTouchPoint:CGPointMake(0, midHeight)]);
|
| - // right
|
| - EXPECT_FALSE(
|
| - [scene_ containsTouchPoint:CGPointMake(kClientWidth, midHeight)]);
|
| - EXPECT_TRUE(
|
| - [scene_ containsTouchPoint:CGPointMake(kClientWidth - 1, midHeight)]);
|
| - // top
|
| - EXPECT_FALSE(
|
| - [scene_ containsTouchPoint:CGPointMake(midWidth, kClientHeight)]);
|
| - EXPECT_TRUE(
|
| - [scene_ containsTouchPoint:CGPointMake(midWidth, kClientHeight - 1)]);
|
| - // bottom
|
| - EXPECT_FALSE([scene_ containsTouchPoint:CGPointMake(midWidth, -1)]);
|
| - EXPECT_TRUE([scene_ containsTouchPoint:CGPointMake(midWidth, 0)]);
|
| -
|
| - [scene_ setMarginsFromLeft:10 right:10 top:10 bottom:10];
|
| -
|
| - // left
|
| - EXPECT_FALSE([scene_ containsTouchPoint:CGPointMake(9, midHeight)]);
|
| - EXPECT_TRUE([scene_ containsTouchPoint:CGPointMake(10, midHeight)]);
|
| - // right
|
| - EXPECT_FALSE(
|
| - [scene_ containsTouchPoint:CGPointMake(kClientWidth - 10, midHeight)]);
|
| - EXPECT_TRUE(
|
| - [scene_ containsTouchPoint:CGPointMake(kClientWidth - 11, midHeight)]);
|
| - // top
|
| - EXPECT_FALSE(
|
| - [scene_ containsTouchPoint:CGPointMake(midWidth, kClientHeight - 10)]);
|
| - EXPECT_TRUE(
|
| - [scene_ containsTouchPoint:CGPointMake(midWidth, kClientHeight - 11)]);
|
| - // bottom
|
| - EXPECT_FALSE([scene_ containsTouchPoint:CGPointMake(midWidth, 9)]);
|
| - EXPECT_TRUE([scene_ containsTouchPoint:CGPointMake(midWidth, 10)]);
|
| -}
|
| -
|
| -TEST_F(SceneViewTest,
|
| - UpdateMousePositionAndAnchorsWithTranslationNoMovement) {
|
| -
|
| - webrtc::DesktopVector originalPosition = scene_.mousePosition;
|
| - AnchorPosition originalAnchors = scene_.anchored;
|
| -
|
| - [scene_ updateMousePositionAndAnchorsWithTranslation:CGPointMake(0, 0)
|
| - scale:1];
|
| -
|
| - webrtc::DesktopVector newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_EQ(0, abs(originalPosition.x() - newPosition.x()));
|
| - EXPECT_EQ(0, abs(originalPosition.y() - newPosition.y()));
|
| -
|
| - EXPECT_EQ(originalAnchors.right, scene_.anchored.right);
|
| - EXPECT_EQ(originalAnchors.top, scene_.anchored.top);
|
| - EXPECT_EQ(originalAnchors.left, scene_.anchored.left);
|
| - EXPECT_EQ(originalAnchors.bottom, scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.tickPanVelocity);
|
| -}
|
| -
|
| -TEST_F(SceneViewTest,
|
| - UpdateMousePositionAndAnchorsWithTranslationTowardLeftAndTop) {
|
| - // Translation is in a coordinate space where (0,0) is the bottom left of the
|
| - // view. Mouse position in in a coordinate space where (0,0) is the top left
|
| - // of the view. So |y| is moved in the negative direction.
|
| -
|
| - webrtc::DesktopVector originalPosition = scene_.mousePosition;
|
| -
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_ updateMousePositionAndAnchorsWithTranslation:CGPointMake(2, -1)
|
| - scale:1];
|
| -
|
| - webrtc::DesktopVector newPosition = scene_.mousePosition;
|
| -
|
| - // We could do these checks as a single test, for a positive vs negative
|
| - // difference. But this style has a clearer meaning that the position moved
|
| - // toward or away from the origin.
|
| - EXPECT_LT(newPosition.x(), originalPosition.x());
|
| - EXPECT_LT(newPosition.y(), originalPosition.y());
|
| - EXPECT_EQ(2, abs(originalPosition.x() - newPosition.x()));
|
| - EXPECT_EQ(1, abs(originalPosition.y() - newPosition.y()));
|
| -
|
| - EXPECT_TRUE(scene_.anchored.left);
|
| - EXPECT_TRUE(scene_.anchored.top);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.right);
|
| - EXPECT_FALSE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_TRUE(scene_.tickPanVelocity);
|
| -
|
| - // move much further than the bounds allow
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_
|
| - updateMousePositionAndAnchorsWithTranslation:CGPointMake(10000, -10000)
|
| - scale:1];
|
| -
|
| - newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_EQ(0, newPosition.x());
|
| - EXPECT_EQ(0, newPosition.y());
|
| -
|
| - EXPECT_TRUE(scene_.anchored.left);
|
| - EXPECT_TRUE(scene_.anchored.top);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.right);
|
| - EXPECT_FALSE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.tickPanVelocity);
|
| -}
|
| -
|
| -TEST_F(SceneViewTest,
|
| - UpdateMousePositionAndAnchorsWithTranslationTowardLeftAndBottom) {
|
| - webrtc::DesktopVector originalPosition = scene_.mousePosition;
|
| -
|
| - // see notes for Test
|
| - // UpdateMousePositionAndAnchorsWithTranslationTowardLeftAndTop
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_ updateMousePositionAndAnchorsWithTranslation:CGPointMake(2, 1)
|
| - scale:1];
|
| - webrtc::DesktopVector newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_LT(newPosition.x(), originalPosition.x());
|
| - EXPECT_GT(newPosition.y(), originalPosition.y());
|
| - EXPECT_EQ(2, abs(originalPosition.x() - newPosition.x()));
|
| - EXPECT_EQ(1, abs(originalPosition.y() - newPosition.y()));
|
| -
|
| - EXPECT_TRUE(scene_.anchored.left);
|
| - EXPECT_TRUE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.right);
|
| - EXPECT_FALSE(scene_.anchored.top);
|
| -
|
| - EXPECT_TRUE(scene_.tickPanVelocity);
|
| -
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_ updateMousePositionAndAnchorsWithTranslation:CGPointMake(10000, 10000)
|
| - scale:1];
|
| - newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_EQ(0, newPosition.x());
|
| - EXPECT_EQ(scene_.frameSize.height() - 1, newPosition.y());
|
| -
|
| - EXPECT_TRUE(scene_.anchored.left);
|
| - EXPECT_TRUE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.right);
|
| - EXPECT_FALSE(scene_.anchored.top);
|
| -
|
| - EXPECT_FALSE(scene_.tickPanVelocity);
|
| -}
|
| -
|
| -TEST_F(SceneViewTest,
|
| - UpdateMousePositionAndAnchorsWithTranslationTowardRightAndTop) {
|
| - webrtc::DesktopVector originalPosition = scene_.mousePosition;
|
| -
|
| - // see notes for Test
|
| - // UpdateMousePositionAndAnchorsWithTranslationTowardLeftAndTop
|
| -
|
| - // When moving to the right the mouse remains centered since the horizontal
|
| - // display space is larger than the view space
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_ updateMousePositionAndAnchorsWithTranslation:CGPointMake(-2, -1)
|
| - scale:1];
|
| - webrtc::DesktopVector newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_LT(newPosition.y(), originalPosition.y());
|
| - EXPECT_EQ(0, abs(originalPosition.x() - newPosition.x()));
|
| - EXPECT_EQ(1, abs(originalPosition.y() - newPosition.y()));
|
| -
|
| - EXPECT_TRUE(scene_.anchored.top);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.left);
|
| - EXPECT_FALSE(scene_.anchored.right);
|
| - EXPECT_FALSE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_TRUE(scene_.tickPanVelocity);
|
| -
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_
|
| - updateMousePositionAndAnchorsWithTranslation:CGPointMake(-10000, -10000)
|
| - scale:1];
|
| - newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_EQ(scene_.frameSize.width() - 1, newPosition.x());
|
| - EXPECT_EQ(0, newPosition.y());
|
| -
|
| - EXPECT_TRUE(scene_.anchored.right);
|
| - EXPECT_TRUE(scene_.anchored.top);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.left);
|
| - EXPECT_FALSE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.tickPanVelocity);
|
| -}
|
| -
|
| -TEST_F(SceneViewTest,
|
| - UpdateMousePositionAndAnchorsWithTranslationTowardRightAndBottom) {
|
| - webrtc::DesktopVector originalPosition = scene_.mousePosition;
|
| -
|
| - // see notes for Test
|
| - // UpdateMousePositionAndAnchorsWithTranslationTowardLeftAndTop
|
| -
|
| - // When moving to the right the mouse remains centered since the horizontal
|
| - // display space is larger than the view space
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_ updateMousePositionAndAnchorsWithTranslation:CGPointMake(-2, 1)
|
| - scale:1];
|
| - webrtc::DesktopVector newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_GT(newPosition.y(), originalPosition.y());
|
| - EXPECT_EQ(0, abs(originalPosition.x() - newPosition.x()));
|
| - EXPECT_EQ(1, abs(originalPosition.y() - newPosition.y()));
|
| -
|
| - EXPECT_TRUE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.left);
|
| - EXPECT_FALSE(scene_.anchored.right);
|
| - EXPECT_FALSE(scene_.anchored.top);
|
| -
|
| - EXPECT_TRUE(scene_.tickPanVelocity);
|
| -
|
| - [scene_ setPanVelocity:CGPointMake(1, 1)];
|
| - [scene_
|
| - updateMousePositionAndAnchorsWithTranslation:CGPointMake(-10000, 10000)
|
| - scale:1];
|
| - newPosition = scene_.mousePosition;
|
| -
|
| - EXPECT_EQ(scene_.frameSize.width() - 1, newPosition.x());
|
| - EXPECT_EQ(scene_.frameSize.height() - 1, newPosition.y());
|
| -
|
| - EXPECT_TRUE(scene_.anchored.right);
|
| - EXPECT_TRUE(scene_.anchored.bottom);
|
| -
|
| - EXPECT_FALSE(scene_.anchored.left);
|
| - EXPECT_FALSE(scene_.anchored.top);
|
| -
|
| - EXPECT_FALSE(scene_.tickPanVelocity);
|
| -}
|
| -
|
| -TEST(SceneViewTest_Static, PositionDeltaFromScaling) {
|
| -
|
| - // Legend:
|
| - // * anchored point or end point
|
| - // | unanchored endpoint
|
| - // - onscreen
|
| - // # offscreen
|
| -
|
| - // *---|
|
| - // *-------|
|
| - EXPECT_EQ(
|
| - 0,
|
| - [SceneView positionDeltaFromScaling:2.0F position:0 length:100 anchor:0]);
|
| - // *---|
|
| - // *-|
|
| - EXPECT_EQ(
|
| - 0,
|
| - [SceneView positionDeltaFromScaling:0.5F position:0 length:100 anchor:0]);
|
| - // |---*
|
| - // |-------*
|
| - EXPECT_EQ(100,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:0
|
| - length:100
|
| - anchor:100]);
|
| - // |----*
|
| - // |--*
|
| - EXPECT_EQ(-50,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:0
|
| - length:100
|
| - anchor:100]);
|
| - // |*---|
|
| - // |-*-------|
|
| - EXPECT_EQ(25,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:0
|
| - length:100
|
| - anchor:25]);
|
| - // |-*--|
|
| - // |*-|
|
| - EXPECT_EQ(-12.5,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:0
|
| - length:100
|
| - anchor:25]);
|
| - // |---*|
|
| - // |------*-|
|
| - EXPECT_EQ(75,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:0
|
| - length:100
|
| - anchor:75]);
|
| - // |--*-|
|
| - // |-*|
|
| - EXPECT_EQ(-37.5,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:0
|
| - length:100
|
| - anchor:75]);
|
| - // |-*-|
|
| - // |---*---|
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:0
|
| - length:100
|
| - anchor:50]);
|
| - // |--*--|
|
| - // |*|
|
| - EXPECT_EQ(-25,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:0
|
| - length:100
|
| - anchor:50]);
|
| - //////////////////////////////////
|
| - // Change position to 50, anchor is relatively the same
|
| - //////////////////////////////////
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:50
|
| - length:100
|
| - anchor:50]);
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:50
|
| - length:100
|
| - anchor:50]);
|
| - EXPECT_EQ(100,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:50
|
| - length:100
|
| - anchor:150]);
|
| - EXPECT_EQ(-50,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:50
|
| - length:100
|
| - anchor:150]);
|
| - EXPECT_EQ(25,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:50
|
| - length:100
|
| - anchor:75]);
|
| - EXPECT_EQ(-12.5,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:50
|
| - length:100
|
| - anchor:75]);
|
| - EXPECT_EQ(75,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:50
|
| - length:100
|
| - anchor:125]);
|
| - EXPECT_EQ(-37.5,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:50
|
| - length:100
|
| - anchor:125]);
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:50
|
| - length:100
|
| - anchor:100]);
|
| - EXPECT_EQ(-25,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:50
|
| - length:100
|
| - anchor:100]);
|
| -
|
| - //////////////////////////////////
|
| - // Change position to -50, length to 200, anchor is relatively the same
|
| - //////////////////////////////////
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:-50
|
| - length:200
|
| - anchor:-50]);
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:-50
|
| - length:200
|
| - anchor:-50]);
|
| - EXPECT_EQ(200,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:-50
|
| - length:200
|
| - anchor:150]);
|
| - EXPECT_EQ(-100,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:-50
|
| - length:200
|
| - anchor:150]);
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:-50
|
| - length:200
|
| - anchor:0]);
|
| - EXPECT_EQ(-25,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:-50
|
| - length:200
|
| - anchor:0]);
|
| - EXPECT_EQ(150,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:-50
|
| - length:200
|
| - anchor:100]);
|
| - EXPECT_EQ(-75,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:-50
|
| - length:200
|
| - anchor:100]);
|
| - EXPECT_EQ(100,
|
| - [SceneView positionDeltaFromScaling:2.0F
|
| - position:-50
|
| - length:200
|
| - anchor:50]);
|
| - EXPECT_EQ(-50,
|
| - [SceneView positionDeltaFromScaling:0.5F
|
| - position:-50
|
| - length:200
|
| - anchor:50]);
|
| -}
|
| -
|
| -TEST(SceneViewTest_Static, PositionDeltaFromTranslation) {
|
| - // Anchored on both sides. Center it by using 1/2 the free space, offset by
|
| - // the current position
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromTranslation:100
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(-50,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:100
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:100
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(100,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:200
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| -
|
| - // Anchored only on the left. Don't move it
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromTranslation:100
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:100
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:200
|
| - scaleingPositionDelta:100
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:200
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - // Anchored only on the right. Move by the scaling delta
|
| - EXPECT_EQ(25,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:25
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromTranslation:100
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:50
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(75,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:100
|
| - freeSpace:100
|
| - scaleingPositionDelta:75
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(100,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:100
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(125,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:200
|
| - scaleingPositionDelta:125
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - // Not anchored, translate and move by the scaling delta
|
| - EXPECT_EQ(0,
|
| - [SceneView positionDeltaFromTranslation:0
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(25,
|
| - [SceneView positionDeltaFromTranslation:25
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(50,
|
| - [SceneView positionDeltaFromTranslation:50
|
| - position:100
|
| - freeSpace:100
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(175,
|
| - [SceneView positionDeltaFromTranslation:75
|
| - position:0
|
| - freeSpace:100
|
| - scaleingPositionDelta:100
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(100,
|
| - [SceneView positionDeltaFromTranslation:100
|
| - position:0
|
| - freeSpace:200
|
| - scaleingPositionDelta:0
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| -}
|
| -
|
| -TEST(SceneViewTest_Static, BoundDeltaFromPosition) {
|
| - // Entire entity fits in our view, lower bound is not less than the
|
| - // upperBound. The delta is bounded to the lowerBound.
|
| - EXPECT_EQ(200,
|
| - [SceneView boundDeltaFromPosition:0
|
| - delta:0
|
| - lowerBound:200
|
| - upperBound:100]);
|
| - EXPECT_EQ(100,
|
| - [SceneView boundDeltaFromPosition:100
|
| - delta:0
|
| - lowerBound:200
|
| - upperBound:100]);
|
| - EXPECT_EQ(200,
|
| - [SceneView boundDeltaFromPosition:0
|
| - delta:100
|
| - lowerBound:200
|
| - upperBound:100]);
|
| - EXPECT_EQ(150,
|
| - [SceneView boundDeltaFromPosition:50
|
| - delta:100
|
| - lowerBound:200
|
| - upperBound:200]);
|
| - // Entity does not fit in our view. The result would be out of bounds on the
|
| - // high bound. The delta is bounded to the upper bound and the delta from the
|
| - // position is returned.
|
| - EXPECT_EQ(100,
|
| - [SceneView boundDeltaFromPosition:0
|
| - delta:1000
|
| - lowerBound:0
|
| - upperBound:100]);
|
| - EXPECT_EQ(99,
|
| - [SceneView boundDeltaFromPosition:1
|
| - delta:1000
|
| - lowerBound:0
|
| - upperBound:100]);
|
| - EXPECT_EQ(-50,
|
| - [SceneView boundDeltaFromPosition:150
|
| - delta:1000
|
| - lowerBound:50
|
| - upperBound:100]);
|
| - EXPECT_EQ(100,
|
| - [SceneView boundDeltaFromPosition:100
|
| - delta:1000
|
| - lowerBound:0
|
| - upperBound:200]);
|
| - // Entity does not fit in our view. The result would be out of bounds on the
|
| - // low bound. The delta is bounded to the lower bound and the delta from the
|
| - // position is returned.
|
| - EXPECT_EQ(0,
|
| - [SceneView boundDeltaFromPosition:0
|
| - delta:-1000
|
| - lowerBound:0
|
| - upperBound:100]);
|
| - EXPECT_EQ(-20,
|
| - [SceneView boundDeltaFromPosition:20
|
| - delta:-1000
|
| - lowerBound:0
|
| - upperBound:100]);
|
| - EXPECT_EQ(21,
|
| - [SceneView boundDeltaFromPosition:29
|
| - delta:-1000
|
| - lowerBound:50
|
| - upperBound:100]);
|
| - EXPECT_EQ(1,
|
| - [SceneView boundDeltaFromPosition:-1
|
| - delta:-1000
|
| - lowerBound:0
|
| - upperBound:200]);
|
| - // Entity does not fit in our view. The result is in bounds. The delta is
|
| - // returned unchanged.
|
| - EXPECT_EQ(50,
|
| - [SceneView boundDeltaFromPosition:0
|
| - delta:50
|
| - lowerBound:0
|
| - upperBound:100]);
|
| - EXPECT_EQ(-10,
|
| - [SceneView boundDeltaFromPosition:20
|
| - delta:-10
|
| - lowerBound:0
|
| - upperBound:100]);
|
| - EXPECT_EQ(31,
|
| - [SceneView boundDeltaFromPosition:29
|
| - delta:31
|
| - lowerBound:50
|
| - upperBound:100]);
|
| - EXPECT_EQ(50,
|
| - [SceneView boundDeltaFromPosition:100
|
| - delta:50
|
| - lowerBound:0
|
| - upperBound:200]);
|
| -}
|
| -
|
| -TEST(SceneViewTest_Static, BoundMouseGivenNextPosition) {
|
| - // Mouse would move off screen in the negative
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:-1
|
| - maxPosition:50
|
| - centerPosition:2
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:-1
|
| - maxPosition:25
|
| - centerPosition:99
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:-11
|
| - maxPosition:0
|
| - centerPosition:-52
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:-11
|
| - maxPosition:-100
|
| - centerPosition:44
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:-1
|
| - maxPosition:50
|
| - centerPosition:-20
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| -
|
| - // Mouse would move off screen in the positive
|
| - EXPECT_EQ(49,
|
| - [SceneView boundMouseGivenNextPosition:50
|
| - maxPosition:50
|
| - centerPosition:2
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(24,
|
| - [SceneView boundMouseGivenNextPosition:26
|
| - maxPosition:25
|
| - centerPosition:99
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(-1,
|
| - [SceneView boundMouseGivenNextPosition:1
|
| - maxPosition:0
|
| - centerPosition:-52
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(-101,
|
| - [SceneView boundMouseGivenNextPosition:0
|
| - maxPosition:-100
|
| - centerPosition:44
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(49,
|
| - [SceneView boundMouseGivenNextPosition:60
|
| - maxPosition:50
|
| - centerPosition:-20
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| -
|
| - // Mouse is not out of bounds, and not anchored. The Center is returned.
|
| - EXPECT_EQ(2,
|
| - [SceneView boundMouseGivenNextPosition:0
|
| - maxPosition:100
|
| - centerPosition:2
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(99,
|
| - [SceneView boundMouseGivenNextPosition:25
|
| - maxPosition:100
|
| - centerPosition:99
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(-52,
|
| - [SceneView boundMouseGivenNextPosition:99
|
| - maxPosition:100
|
| - centerPosition:-52
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(44,
|
| - [SceneView boundMouseGivenNextPosition:120
|
| - maxPosition:200
|
| - centerPosition:44
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(-20,
|
| - [SceneView boundMouseGivenNextPosition:180
|
| - maxPosition:200
|
| - centerPosition:-20
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:NO]);
|
| -
|
| - // Mouse is not out of bounds, and anchored. The position closest
|
| - // to the anchor is returned.
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:0
|
| - maxPosition:100
|
| - centerPosition:2
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(25,
|
| - [SceneView boundMouseGivenNextPosition:25
|
| - maxPosition:100
|
| - centerPosition:99
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(-52,
|
| - [SceneView boundMouseGivenNextPosition:99
|
| - maxPosition:100
|
| - centerPosition:-52
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(44,
|
| - [SceneView boundMouseGivenNextPosition:120
|
| - maxPosition:200
|
| - centerPosition:44
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(-20,
|
| - [SceneView boundMouseGivenNextPosition:180
|
| - maxPosition:200
|
| - centerPosition:-20
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:NO]);
|
| - EXPECT_EQ(2,
|
| - [SceneView boundMouseGivenNextPosition:0
|
| - maxPosition:100
|
| - centerPosition:2
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(99,
|
| - [SceneView boundMouseGivenNextPosition:25
|
| - maxPosition:100
|
| - centerPosition:99
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(99,
|
| - [SceneView boundMouseGivenNextPosition:99
|
| - maxPosition:100
|
| - centerPosition:-52
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(120,
|
| - [SceneView boundMouseGivenNextPosition:120
|
| - maxPosition:200
|
| - centerPosition:44
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(180,
|
| - [SceneView boundMouseGivenNextPosition:180
|
| - maxPosition:200
|
| - centerPosition:-20
|
| - isAnchoredLow:NO
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(0,
|
| - [SceneView boundMouseGivenNextPosition:0
|
| - maxPosition:100
|
| - centerPosition:2
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(25,
|
| - [SceneView boundMouseGivenNextPosition:25
|
| - maxPosition:100
|
| - centerPosition:99
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(99,
|
| - [SceneView boundMouseGivenNextPosition:99
|
| - maxPosition:100
|
| - centerPosition:-52
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(120,
|
| - [SceneView boundMouseGivenNextPosition:120
|
| - maxPosition:200
|
| - centerPosition:44
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| - EXPECT_EQ(180,
|
| - [SceneView boundMouseGivenNextPosition:180
|
| - maxPosition:200
|
| - centerPosition:-20
|
| - isAnchoredLow:YES
|
| - isAnchoredHigh:YES]);
|
| -}
|
| -
|
| -TEST(SceneViewTest_Static, BoundVelocity) {
|
| - // Outside bounds of the axis
|
| - EXPECT_EQ(0, [SceneView boundVelocity:5.0f axisLength:100 mousePosition:0]);
|
| - EXPECT_EQ(0, [SceneView boundVelocity:5.0f axisLength:100 mousePosition:99]);
|
| - EXPECT_EQ(0, [SceneView boundVelocity:5.0f axisLength:200 mousePosition:200]);
|
| - // Not outside bounds of the axis
|
| - EXPECT_EQ(5.0f,
|
| - [SceneView boundVelocity:5.0f axisLength:100 mousePosition:1]);
|
| - EXPECT_EQ(5.0f,
|
| - [SceneView boundVelocity:5.0f axisLength:100 mousePosition:98]);
|
| - EXPECT_EQ(5.0f,
|
| - [SceneView boundVelocity:5.0f axisLength:200 mousePosition:100]);
|
| -}
|
| -
|
| -TEST_F(SceneViewTest, TickPanVelocity) {
|
| - // We are in the large frame, which can pan left and right but not up and
|
| - // down. Start by resizing it to allow panning up and down.
|
| -
|
| - [scene_ panAndZoom:CGPointMake(0, 0) scaleBy:2.0f];
|
| -
|
| - // Going up and right
|
| - [scene_ setPanVelocity:CGPointMake(1000, 1000)];
|
| - [scene_ tickPanVelocity];
|
| -
|
| - webrtc::DesktopVector pos = scene_.mousePosition;
|
| - int loopLimit = 0;
|
| - bool didMove = false;
|
| - bool inMotion = true;
|
| -
|
| - while (inMotion && loopLimit < 100) {
|
| - inMotion = [scene_ tickPanVelocity];
|
| - if (inMotion) {
|
| - ASSERT_TRUE(pos.x() <= scene_.mousePosition.x()) << " after " << loopLimit
|
| - << " iterations.";
|
| - ASSERT_TRUE(pos.y() <= scene_.mousePosition.y()) << " after " << loopLimit
|
| - << " iterations.";
|
| - didMove = true;
|
| - }
|
| - pos = scene_.mousePosition;
|
| - loopLimit++;
|
| - }
|
| -
|
| - EXPECT_LT(1, loopLimit);
|
| - EXPECT_TRUE(!inMotion);
|
| - EXPECT_TRUE(didMove);
|
| -
|
| - // Going down and left
|
| - [scene_ setPanVelocity:CGPointMake(-1000, -1000)];
|
| - [scene_ tickPanVelocity];
|
| -
|
| - pos = scene_.mousePosition;
|
| - loopLimit = 0;
|
| - didMove = false;
|
| - inMotion = true;
|
| -
|
| - while (inMotion && loopLimit < 100) {
|
| - inMotion = [scene_ tickPanVelocity];
|
| - if (inMotion) {
|
| - ASSERT_TRUE(pos.x() >= scene_.mousePosition.x()) << " after " << loopLimit
|
| - << " iterations.";
|
| - ASSERT_TRUE(pos.y() >= scene_.mousePosition.y()) << " after " << loopLimit
|
| - << " iterations.";
|
| - didMove = true;
|
| - }
|
| - pos = scene_.mousePosition;
|
| - loopLimit++;
|
| - }
|
| -
|
| - EXPECT_LT(1, loopLimit);
|
| - EXPECT_TRUE(!inMotion);
|
| - EXPECT_TRUE(didMove);
|
| -}
|
| -
|
| -} // namespace remoting
|
|
|