public void TestRegimes_ClickPrehistoryBarNoOverlay_PrehistoryTimelineIsVisible() { var vc = new VirtualCanvasComponent(Driver); vc.SetVisible(new JsVisible(-21.173972602739752, 226047946.84065938, 0.02607632093933464)); vc.UpdateViewport(); Thread.Sleep(100); Point barPosition = vcPageObj.PrehistoryBar.Location; JsVisible visibleBefore = vcPageObj.GetViewport(); action = new ActionsExtension(Driver); // Click on the regime bar. action.MoveByOffset(barPosition.X + 5, barPosition.Y + 2).Click().Perform(); vcPageObj.WaitAnimation(); JsVisible visibleAfter = vcPageObj.GetViewport(); JsTimeline timeline = GetPrehistoryTimeline(); double width = timeline.right - timeline.left; JsCoordinates timelineCenter = new JsCoordinates(timeline.left + width / 2, timeline.y + timeline.height / 2); Assert.IsTrue(IsTimlineInFullSize(visibleAfter, timeline)); Assert.AreEqual(visibleAfter.CenterX, timelineCenter.X, AnimationImplicity); Assert.AreEqual(visibleAfter.CenterY, timelineCenter.Y, AnimationImplicity); Assert.AreNotEqual(visibleBefore, visibleAfter); }
public void TestRegimes_ClickPrehistoryLink_PrehistoryTimelineIsVisible() { Point linkPosition = vcPageObj.PrehistoryLink.Location; JsVisible visibleBefore = vcPageObj.GetViewport(); action = new ActionsExtension(Driver); // Click on the regime link. action.MoveByOffset(linkPosition.X + 5, linkPosition.Y + 2).Click().Perform(); vcPageObj.WaitAnimation(); JsVisible visibleAfter = vcPageObj.GetViewport(); JsTimeline timeline = GetPrehistoryTimeline(); double width = timeline.right - timeline.left; JsCoordinates timelineCenter = new JsCoordinates(timeline.left + width / 2, timeline.y + timeline.height / 2); Assert.IsTrue(IsTimlineInFullSize(visibleAfter, timeline)); Assert.AreEqual(visibleAfter.CenterX, timelineCenter.X, AnimationImplicity); Assert.AreEqual(visibleAfter.CenterY, timelineCenter.Y, AnimationImplicity); Assert.AreNotEqual(visibleBefore, visibleAfter); }
public void TestMouseBehavior_SingleClickOnTimeline_ZoomIntoTimeline() { // Compute coordinates of timeline's center on the screen. // k = 200; timeStart: -18.7 * k, timeEnd: 0, top: 0, height: 5 * k const double Width = 3740; const double Height = 1000; JsCoordinates offsetVirtual = new JsCoordinates(-3740 + Width / 2, 0 + Height / 2); JsCoordinates offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); JsVisible visibleBefore = vcPageObj.GetViewport(); action = new ActionsExtension(Driver); action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); action.Click().Perform(); vcPageObj.WaitAnimation(); JsVisible visibleAfter = vcPageObj.GetViewport(); Size vcSize = vcPageObj.VirtualCanvas.Size; double timelineScreenWidth = Width / visibleAfter.Scale; double timelineScreenHeight = Height / visibleAfter.Scale; double timelineAspectRatio = timelineScreenWidth / timelineScreenHeight; double canvasAspectRatio = (double)vcSize.Width / vcSize.Height; double ratio = 0; // Check the side, that should fit the corresponding side of canvas. if (timelineAspectRatio >= canvasAspectRatio) { ratio = timelineScreenWidth / vcSize.Width; } else { ratio = timelineScreenHeight / vcSize.Height; } // Timeline fills more than 90% of canvas' side, but less or equal than 100% of the same side. // Also check, that center of viewport in the same point as center of the timeline. // It indicates, that timeline is inside of visible region and that timeline fills most of its space. Console.WriteLine(ratio); Assert.IsTrue(ratio > 0.9 && ratio <= 1); Assert.IsTrue(visibleAfter.CenterX == offsetVirtual.X && visibleAfter.CenterY == offsetVirtual.Y); Assert.AreNotEqual(visibleBefore, visibleAfter); }
public void TestRegimes_ClickCosmosBarWithOverlay_CosmosTimelineIsVisible() { Point cosmosBarPosition = vcPageObj.CosmosBar.Location; Point earthBarPosition = vcPageObj.EarthBar.Location; action = new ActionsExtension(Driver); // Click on the earth regime bar. action.MoveByOffset(earthBarPosition.X + 5, earthBarPosition.Y + 2).Click().Perform(); vcPageObj.WaitAnimation(); action.SetDefault(); JsVisible visibleBefore = vcPageObj.GetViewport(); // Click on the cosmos regime bar. action.MoveByOffset(cosmosBarPosition.X + 100, cosmosBarPosition.Y + 2).Click().Perform(); vcPageObj.WaitAnimation(); JsVisible visibleAfter = vcPageObj.GetViewport(); JsTimeline timeline = GetCosmosTimeline(); double width = timeline.right - timeline.left; JsCoordinates timelineCenter = new JsCoordinates(timeline.left + width / 2, timeline.y + timeline.height / 2); Assert.IsTrue(IsTimlineInFullSize(visibleAfter, timeline)); Assert.AreEqual(visibleAfter.CenterX, timelineCenter.X, AnimationImplicity); Assert.AreEqual(visibleAfter.CenterY, timelineCenter.Y, AnimationImplicity); Assert.AreNotEqual(visibleBefore, visibleAfter); }
public void TestMouseBehavior_SingleClickOnInfodot_ZoomIntoInfodot() { // Compute coordinates of infodot on the screen. JsCoordinates offsetVirtual = new JsCoordinates(-3200, 400); // k = 200; time = -16 * k, vyc = 2.0 * k, radv = 0.6 * k; JsCoordinates offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); JsVisible visibleBefore = vcPageObj.GetViewport(); action = new ActionsExtension(Driver); action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); action.Click().Perform(); vcPageObj.WaitAnimation(); JsVisible visibleAfter = vcPageObj.GetViewport(); Size vcSize = vcPageObj.VirtualCanvas.Size; double infodotVirtualSize = 240; // k = 200; radv = 0.6 * k; double infodotScreenSize = infodotVirtualSize / visibleAfter.Scale; // Infodot fills more than 90% of canvas' height. This condition can be regulated. // Also check, that center of viewport in the same point as center of the infodot. // It indicates, that infodot is inside of visible region and that infodot fills most of its space. double ratio = infodotScreenSize / vcSize.Height; Assert.IsTrue(ratio > 0.9 && ratio < 1); Assert.IsTrue(visibleAfter.CenterX == offsetVirtual.X && visibleAfter.CenterY == offsetVirtual.Y); Assert.AreNotEqual(visibleBefore, visibleAfter); }
public void TestMouseBehavior_SingleClickOnContentItem_ZoomIntoContentItem() { Thread.Sleep(5000); // Compute coordinates of infodot on the screen. JsCoordinates offsetVirtual = new JsCoordinates(-3200, 400); // k = 200; time = -16 * k, vyc = 2.0 * k, radv = 0.6 * k; JsCoordinates offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); JsVisible visibleBefore = vcPageObj.GetViewport(); // Click on the infodot and wait animation. action = new ActionsExtension(Driver); action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); action.Click().Perform(); vcPageObj.WaitAnimation(); action.SetDefault(); offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); // Click on the content item. action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); vcPageObj.WaitAnimation(); action.Click().Perform(); vcPageObj.WaitAnimation(); JsVisible visibleAfter = vcPageObj.GetViewport(); Size vcSize = vcPageObj.VirtualCanvas.Size; // From Javascript code: // // var _rad = 450.0 / 2.0; //489.0 / 2.0; // var k = 1.0 / _rad; // var _wc = 260.0 * k; // var _hc = 270.0 * k; // Width = _wc * rad, Height = _hc * rad, rad = 120. const double Width = 1.155555555555556 * 120; const double Height = 1.2 * 120; double contentItemScreenWidth = Width / visibleAfter.Scale; double contentItemScreenHeight = Height / visibleAfter.Scale; double contentItemAspectRatio = contentItemScreenWidth / contentItemScreenHeight; double canvasAspectRatio = (double)vcSize.Width / vcSize.Height; double ratio = 0; // Check the side, that should fit the corresponding side of canvas. if (contentItemAspectRatio >= canvasAspectRatio) { ratio = contentItemScreenWidth / vcSize.Width; } else { ratio = contentItemScreenHeight / vcSize.Height; } // Content item fills more than 90% of canvas' side, but less or equal than 100% of the same side. // Also check, that center of viewport in the same point as center of the timeline. // It indicates, that timeline is inside of visible region and that timeline fills most of its space. Assert.IsTrue(ratio > 0.9 && ratio <= 1); Assert.IsTrue(visibleAfter.CenterX == offsetVirtual.X && visibleAfter.CenterY == offsetVirtual.Y); Assert.AreNotEqual(visibleBefore, visibleAfter); }
public void TestMouseBehavior_HoverOverInfodot_HighlightAndPreview() { // Compute coordinates of infodot on the screen. JsCoordinates offsetVirtual = new JsCoordinates(-3200, 400); // k = 200; time = -16 * k, vyc = 2.0 * k, radv = 0.6 * k JsCoordinates offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); // Get the color of stroke and its width. string colorBefore = (string)ExecuteScript("return infodot.settings.strokeStyle;"); double lineWidthBefore = ExecuteScriptGetNumber("return infodot.settings.lineWidth;"); action = new ActionsExtension(Driver); action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); // Get the color of stroke and its width. string colorAfter = (string)ExecuteScript("return infodot.settings.strokeStyle;"); double lineWidthAfter = ExecuteScriptGetNumber("return infodot.settings.lineWidth;"); Assert.AreNotEqual(colorBefore, colorAfter); Assert.IsTrue(lineWidthAfter > lineWidthBefore); }
public void TestMouseBehavior_HoverOverContentItem_Highlight() { // Compute coordinates of infodot on the screen. JsCoordinates offsetVirtual = new JsCoordinates(-3200, 400); // k = 200; time = -16 * k, vyc = 2.0 * k, radv = 0.6 * k; JsCoordinates offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); // Click on the infodot and wait animation. action = new ActionsExtension(Driver); action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); action.Click().Perform(); vcPageObj.WaitAnimation(); action.SetDefault(); string colorBefore = (string)ExecuteScript("return majorBorder.settings.strokeStyle;"); offsetScreen = vcPageObj.PointVirtualToScreen(offsetVirtual); // Mouse move over the content item. action.MoveToElement(vcPageObj.VirtualCanvas, (int)offsetScreen.X, (int)offsetScreen.Y).Perform(); string colorAfter = (string)ExecuteScript("return majorBorder.settings.strokeStyle;"); Assert.AreNotEqual(colorBefore, colorAfter); }
public JsCoordinates VectorVirtualToScreen(JsCoordinates v) { // var vp = $("#id").virtualCanvas("getViewport"); // return vp.vectorVirtualToScreen(v.X, v.Y); StringBuilder script = new StringBuilder("var vp = $('#"); script.Append(virtualCanvas.GetAttribute("id")); script.Append("').virtualCanvas('getViewport');"); script.AppendLine("return vp.vectorVirtualToScreen("); script.AppendFormat("{0},{1});", v.X, v.Y); string json = JSONHelper.Stringify(jsExecutor.ExecuteScript(script.ToString()) as Dictionary<string, object>); return (JsCoordinates)JSONHelper.Parse(typeof(JsCoordinates), json); }