/* Not all of this test's Asserts will pass. Because of the nature of the draggable elements on the page. It could be adjusted to pass, though
         *  - by calculating the correct cursor positions and offsets - get the size of the element, divide by two.
         *  Then for the "-5" element - extract from the expected offset 5 and extract also size/2 - for both horizontal and vertical coordinates
         *  For the "bottom" element - extract from expected offset size(height)/2 for the vertical coordinate
         */
        public void CursorStyle_DragDiagonallyAllElements_ElementsMovedAccordingly()
        {
            var draggablePage     = new DraggablePage(this.driver);
            InteractionPages drag = AccessExcelData.GetInteractionTestsData(TestContext.CurrentContext.Test.Name); // Get the current test method name (CursorStyle_DragDiagonallyAllElements_ElementsMovedAccordingly) and use it as a Key in the xlsx file

            // Get the tab number (e.g. "Default functionality", Constrain movement") from the test property above and give it to the URL
            draggablePage.tabNo = TestContext.CurrentContext.Test.Properties.Get("Draggable test tab Number:").ToString();
            draggablePage.NavigateTo(draggablePage.URL);
            // Scroll page Up so the element is into view. Because when Firefox opens the desired page/tab, somehow the page is scrolled down
            ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", draggablePage.TopOfPage);

            draggablePage.DragObject(int.Parse(drag.HorizontalOffset), int.Parse(drag.VerticalOffset), draggablePage.DraggableElementCursor1);
            draggablePage.DragObject(int.Parse(drag.HorizontalOffset), int.Parse(drag.VerticalOffset), draggablePage.DraggableElementCursor2);
            draggablePage.DragObject(int.Parse(drag.HorizontalOffset), int.Parse(drag.VerticalOffset), draggablePage.DraggableElementCursor3);

            draggablePage.AssertElementIsMovedCorrectly(int.Parse(drag.HorizontalOffset), int.Parse(drag.VerticalOffset), draggablePage.DraggableElementCursor1);
            draggablePage.AssertElementIsMovedCorrectly(int.Parse(drag.HorizontalOffset), int.Parse(drag.VerticalOffset), draggablePage.DraggableElementCursor2);
            draggablePage.AssertElementIsMovedCorrectly(int.Parse(drag.HorizontalOffset), int.Parse(drag.VerticalOffset), draggablePage.DraggableElementCursor3);
        }