Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(498)

Unified Diff: remoting/ios/ui/scene_view_unittest.mm

Issue 475333004: Remove old Chromoting iOS client (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/ios/ui/scene_view.mm ('k') | remoting/ios/utility.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « remoting/ios/ui/scene_view.mm ('k') | remoting/ios/utility.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698