예제 #1
0
        public void ToFocusChangedEvent()
        {
            if (WindowsVersion.IsWindows10())
            {
                Assert.Inconclusive("This fails on Win 10 for some reason.");
            }

            using var app = Application.AttachOrLaunch(ExeFileName, "FocusWindow");
            var changes = new List <int>();
            var window  = app.MainWindow;

            using (Subscribe.ToFocusChangedEvent((sender, args) => changes.Add(args.EventId.Id)))
            {
                var textBox = window.FindTextBox("TextBox2");
                textBox.Focus();
                Wait.For(TimeSpan.FromMilliseconds(200));
                CollectionAssert.AreEqual(new[] { 20005 }, changes);
                Assert.AreEqual(textBox, window.FocusedElement());

                var button = window.FindButton("Button1");
                button.Focus();
                Wait.For(TimeSpan.FromMilliseconds(200));
                CollectionAssert.AreEqual(new[] { 20005, 20005 }, changes);
                Assert.AreEqual(button, window.FocusedElement());
            }
        }
예제 #2
0
        public void TapThenClickNoMove()
        {
            if (WindowsVersion.IsAppVeyor() ||
                WindowsVersion.IsAzureDevops())
            {
                Assert.Inconclusive("Not sure why this breaks on AppVeyor.");
            }

            using var app = Application.AttachOrLaunch(ExeFileName, WindowName);
            var window = app.MainWindow;
            var area   = window.FindGroupBox("Touch area");
            var events = window.FindListBox("Events");

            Touch.Tap(area.Bounds.Center());
            var expected = WindowsVersion.IsWindows10()
                ? new[]
            {
                "TouchEnter Position: 250,300",
                "PreviewTouchDown Position: 250,300",
                "TouchDown Position: 250,300",
                "ManipulationStarting",
                "ManipulationStarted",
                "StylusSystemGesture SystemGesture: Tap",
                "PreviewTouchUp Position: 250,300",
                "TouchUp Position: 250,300",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 250,300",
            }
                : new[]
            {
                "TouchEnter Position: 249,299",
                "PreviewTouchDown Position: 249,299",
                "TouchDown Position: 249,299",
                "ManipulationStarting",
                "ManipulationStarted",
                "StylusSystemGesture SystemGesture: Tap",
                "PreviewTouchUp Position: 249,299",
                "TouchUp Position: 249,299",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 249,299",
            };

            CollectionAssert.AreEqual(expected, events.Items.Select(x => x.Text).ToArray(), EventStringComparer.Default);

            window.FindButton("Clear").Click();
            window.WaitUntilResponsive();
            CollectionAssert.IsEmpty(events.Items);
            Assert.AreEqual(CursorState.CURSOR_SHOWING, Mouse.GetCursorState());
        }
예제 #3
0
        private static Application StartApplication()
        {
            if (WindowsVersion.IsWindows10())
            {
                // Use the store application on those systems
                return(Application.LaunchStoreApp("Microsoft.WindowsCalculator_8wekyb3d8bbwe!App"));
            }

            if (WindowsVersion.IsWindowsServer2016())
            {
                // The calc.exe on this system is just a stub which launches win32calc.exe
                return(Application.Launch("win32calc.exe"));
            }

            return(Application.Launch("calc.exe"));
        }
예제 #4
0
        public void CalculatorTest()
        {
            if (WindowsVersion.IsAppVeyor() ||
                WindowsVersion.IsAzureDevops())
            {
                Assert.Inconclusive("Bug in store calc.");
            }

            using var app = StartApplication();

            // Looks like it can take a long time on CI
            app.WaitForMainWindow(TimeSpan.FromSeconds(30));
            var window = app.MainWindow;
            var calc   = WindowsVersion.IsWindows10()
                ? (ICalculator) new Win10Calc(window)
                : new LegacyCalc(window);

            Wait.For(TimeSpan.FromMilliseconds(200));

            // Switch to default mode
            Keyboard.TypeSimultaneously(Key.ALT, Key.KEY_1);
            window.WaitUntilResponsive();

            // Simple addition
            calc.Button1.Click();
            calc.Button2.Click();
            calc.Button3.Click();
            calc.Button4.Click();
            calc.ButtonAdd.Click();
            calc.Button5.Click();
            calc.Button6.Click();
            calc.Button7.Click();
            calc.Button8.Click();
            calc.ButtonEquals.Click();
            app.WaitWhileBusy();
            var result = calc.Result;

            Assert.AreEqual("6912", result);

            // Date comparison
            using (Keyboard.Hold(Key.CONTROL))
            {
                Keyboard.Type(Key.KEY_E);
            }
        }
예제 #5
0
        private static string GetCurrent()
        {
            if (WindowsVersion.IsWindows7())
            {
                return("Win7");
            }

            if (WindowsVersion.IsWindows10())
            {
                return("Win10");
            }

            if (WindowsVersion.CurrentContains("Windows Server 2019"))
            {
                return("WinServer2019");
            }

            return(WindowsVersion.CurrentVersionProductName);
        }
예제 #6
0
        public void Tap()
        {
            using var app = Application.AttachOrLaunch(ExeFileName, WindowName);
            var window = app.MainWindow;
            var area   = window.FindGroupBox("Touch area");
            var events = window.FindListBox("Events");

            Touch.Tap(area.Bounds.Center());
            var expected = WindowsVersion.IsWindows10()
                ? new[]
            {
                "TouchEnter Position: 250,300",
                "PreviewTouchDown Position: 250,300",
                "TouchDown Position: 250,300",
                "ManipulationStarting",
                "ManipulationStarted",
                "StylusSystemGesture SystemGesture: Tap",
                "PreviewTouchUp Position: 250,300",
                "TouchUp Position: 250,300",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 250,300",
            }
                : new[]
            {
                "TouchEnter Position: 249,299",
                "PreviewTouchDown Position: 249,299",
                "TouchDown Position: 249,299",
                "ManipulationStarting",
                "ManipulationStarted",
                "StylusSystemGesture SystemGesture: Tap",
                "PreviewTouchUp Position: 249,299",
                "TouchUp Position: 249,299",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 249,299",
            };

            Dump(events);
            CollectionAssert.AreEqual(expected, events.Items.Select(x => x.Text).ToArray(), EventStringComparer.Default);
        }
예제 #7
0
        public void CalculatorTest()
        {
            using (var app = StartApplication())
            {
                var window = app.MainWindow;
                var calc   = WindowsVersion.IsWindows10()
                    ? (ICalculator) new Win10Calc(window)
                    : new LegacyCalc(window);
                if (WindowsVersion.IsWindows7())
                {
                    Wait.For(TimeSpan.FromMilliseconds(200));
                }

                // Switch to default mode
                Keyboard.TypeSimultaneously(Key.ALT, Key.KEY_1);
                window.WaitUntilResponsive();

                // Simple addition
                calc.Button1.Click();
                calc.Button2.Click();
                calc.Button3.Click();
                calc.Button4.Click();
                calc.ButtonAdd.Click();
                calc.Button5.Click();
                calc.Button6.Click();
                calc.Button7.Click();
                calc.Button8.Click();
                calc.ButtonEquals.Click();
                app.WaitWhileBusy();
                var result = calc.Result;
                Assert.AreEqual("6912", result);

                // Date comparison
                using (Keyboard.Pressing(Key.CONTROL))
                {
                    Keyboard.Type(Key.KEY_E);
                }
            }
        }
예제 #8
0
        public void Pinch()
        {
            using var app = Application.AttachOrLaunch(ExeFileName, WindowName);
            var window = app.MainWindow;
            var area   = window.FindGroupBox("Touch area");
            var events = window.FindListBox("Events");
            var cp     = area.Bounds.Center();

            Touch.Pinch(cp, 100, 50, TimeSpan.FromMilliseconds(10));
            var expected = WindowsVersion.IsWindows10()
                ? new[]
            {
                "TouchEnter Position: 320,370",
                "PreviewTouchDown Position: 320,370",
                "TouchDown Position: 320,370",
                "ManipulationStarting",
                "ManipulationStarted",
                "TouchEnter Position: 178,229",
                "PreviewTouchDown Position: 178,229",
                "TouchDown Position: 178,229",
                "ManipulationDelta",
                "StylusSystemGesture SystemGesture: Drag",
                "PreviewTouchMove Position: 285,335",
                "TouchMove Position: 285,335",
                "PreviewTouchMove Position: 213,264",
                "TouchMove Position: 213,264",
                "PreviewTouchUp Position: 285,335",
                "TouchUp Position: 285,335",
                "TouchLeave Position: 285,335",
                "PreviewTouchUp Position: 213,264",
                "TouchUp Position: 213,264",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 213,264",
            }
                : new[]
            {
                "TouchEnter Position: 319,369",
                "PreviewTouchDown Position: 319,369",
                "TouchDown Position: 319,369",
                "ManipulationStarting",
                "ManipulationStarted",
                "TouchEnter Position: 178,228",
                "PreviewTouchDown Position: 178,228",
                "TouchDown Position: 178,228",
                "ManipulationDelta",
                "StylusSystemGesture SystemGesture: Drag",
                "PreviewTouchMove Position: 284,334",
                "TouchMove Position: 284,334",
                "PreviewTouchMove Position: 213,263",
                "TouchMove Position: 213,263",
                "PreviewTouchUp Position: 284,334",
                "TouchUp Position: 284,334",
                "TouchLeave Position: 284,334",
                "PreviewTouchUp Position: 213,263",
                "TouchUp Position: 213,263",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 213,263",
            };

            CollectionAssert.AreEqual(expected, events.Items.Select(x => x.Text).ToArray(), EventStringComparer.Default);
        }
예제 #9
0
        public void TwoFingers()
        {
            using var app = Application.AttachOrLaunch(ExeFileName, WindowName);
            var window = app.MainWindow;
            var area   = window.FindGroupBox("Touch area");
            var events = window.FindListBox("Events");
            var cp     = area.Bounds.Center();

            Touch.Multi(
                new TwoFingers(cp + new Vector(-100, 0), cp + new Vector(100, 0)),
                new TwoFingers(cp + new Vector(-50, 0), cp + new Vector(50, 0)),
                TimeSpan.FromMilliseconds(10));
            var expected = WindowsVersion.IsWindows10()
                ? new[]
            {
                "TouchEnter Position: 150,300",
                "PreviewTouchDown Position: 150,300",
                "TouchDown Position: 150,300",
                "ManipulationStarting",
                "ManipulationStarted",
                "TouchEnter Position: 350,300",
                "PreviewTouchDown Position: 350,300",
                "TouchDown Position: 350,300",
                "ManipulationDelta",
                "StylusSystemGesture SystemGesture: Drag",
                "PreviewTouchMove Position: 200,300",
                "TouchMove Position: 200,300",
                "PreviewTouchMove Position: 300,300",
                "TouchMove Position: 300,300",
                "PreviewTouchUp Position: 200,300",
                "TouchUp Position: 200,300",
                "TouchLeave Position: 200,300",
                "PreviewTouchUp Position: 300,300",
                "TouchUp Position: 300,300",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 300,300",
            }
                : new[]
            {
                "TouchEnter Position: 149,299",
                "PreviewTouchDown Position: 149,299",
                "TouchDown Position: 149,299",
                "ManipulationStarting",
                "ManipulationStarted",
                "TouchEnter Position: 349,299",
                "PreviewTouchDown Position: 349,299",
                "TouchDown Position: 349,299",
                "ManipulationDelta",
                "StylusSystemGesture SystemGesture: Drag",
                "PreviewTouchMove Position: 199,299",
                "TouchMove Position: 199,299",
                "PreviewTouchMove Position: 299,299",
                "TouchMove Position: 299,299",
                "PreviewTouchUp Position: 199,299",
                "TouchUp Position: 199,299",
                "TouchLeave Position: 199,299",
                "PreviewTouchUp Position: 299,299",
                "TouchUp Position: 299,299",
                "ManipulationInertiaStarting",
                "ManipulationCompleted",
                "TouchLeave Position: 299,299",
            };

            CollectionAssert.AreEqual(expected, events.Items.Select(x => x.Text).ToArray(), EventStringComparer.Default);
        }