// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using CalculatorUITestFramework; using Microsoft.VisualStudio.TestTools.UnitTesting; using OpenQA.Selenium; using OpenQA.Selenium.Appium.Windows; using System; using System.Collections.Generic; namespace CalculatorUITests { [TestClass] public class ProgrammerModeFunctionalTests { private static ProgrammerCalculatorPage page = new ProgrammerCalculatorPage(); /// /// Initializes the WinAppDriver web driver session. /// /// [ClassInitialize] public static void ClassInitialize(TestContext context) { // Create session to launch a Calculator window WinAppDriver.Instance.SetupCalculatorSession(context); // Ensure that calculator is in programmer mode page.NavigateToProgrammerCalculator(); // Ensure that calculator window is large enough to display the memory/history panel; a good size for most tests page.MemoryPanel.ResizeWindowToDisplayMemoryLabel(); } /// /// Closes the app and WinAppDriver web driver session. /// [ClassCleanup] public static void ClassCleanup() { // Tear down Calculator session. WinAppDriver.Instance.TearDownCalculatorSession(); } /// /// Ensures the calculator is in a cleared state with the correct default options /// [TestInitialize] public void TestInit() { if ("0" != page.CalculatorResults.GetCalculatorResultText()) { page.ClearAll(); } CalculatorApp.EnsureCalculatorHasFocus(); page.ProgrammerOperators.SetArithmeticShift(); page.ProgrammerOperators.ResetWordSize(); page.ProgrammerOperators.ResetNumberSystem(); } [TestCleanup] public void TestCleanup() { page.ClearAll(); } /// /// Arithmetic shift, decimal notation, QWord /// #region Smoke Tests [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_LeftShift() { page.StandardOperators.NumberPad.Input(5); page.ProgrammerOperators.LeftShiftButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("10", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_RightShift() { page.StandardOperators.NumberPad.Input(25); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RightShiftButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("-13", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_And() { page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.AndButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_Nand() { page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NandButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("-2", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_Or() { page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.OrButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("31", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_Nor() { page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NorButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("-32", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_Not() { page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NotButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("-26", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(0)] public void SmokeTest_Arithmetic_Decimal_Xor() { page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.XorButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("30", page.CalculatorResults.GetCalculatorResultText()); } /// /// Checks for the highest value bit that should be enabled according to the Word size setting /// [TestMethod] [Priority(0)] public void SmokeTest_WordSize() { page.ProgrammerOperators.BitFlip.Click(); if (page.ProgrammerOperators.Bit63.GetAttribute("IsEnabled") != "True") { throw new NotFoundException("According to the current Word size setting, some bits that should be enabled are disabled"); } else { page.ProgrammerOperators.QWordButton.Click(); if (page.ProgrammerOperators.Bit31.GetAttribute("IsEnabled") != "True") { throw new NotFoundException("According to the current Word size setting, some bits that should be enabled are disabled"); } else { page.ProgrammerOperators.DWordButton.Click(); if (page.ProgrammerOperators.Bit15.GetAttribute("IsEnabled") != "True") { throw new NotFoundException("According to the current Word size setting, some bits that should be enabled are disabled"); } else { page.ProgrammerOperators.WordButton.Click(); if (page.ProgrammerOperators.Bit7.GetAttribute("IsEnabled") != "True") { throw new NotFoundException("According to the current Word size setting, some bits that should be enabled are disabled"); } else { page.ProgrammerOperators.ByteButton.Click(); if (page.ProgrammerOperators.Bit63.GetAttribute("IsEnabled") != "True") { throw new NotFoundException("According to the current Word size setting, some bits that should be enabled are disabled"); } } } } page.ProgrammerOperators.FullKeypad.Click(); } } /// /// Toggles each bit on and off /// [TestMethod] [Priority(0)] public void SmokeTest_BitFlipKeypad() { page.ProgrammerOperators.BitFlip.Click(); page.ProgrammerOperators.Bit63.Click(); Assert.AreEqual("-9,223,372,036,854,775,808", page.CalculatorResults.GetCalculatorResultText()); page.ProgrammerOperators.FullKeypad.Click(); } #endregion /// /// Arithmetic shift, octal notation, QWord /// #region Arithmetic logic operators [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_LeftShift() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(7); page.ProgrammerOperators.LeftShiftButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 6", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_RightShift() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(25); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RightShiftButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 5", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_And() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(16); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.AndButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("6", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_Nand() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(16); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NandButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_Or() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(16); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.OrButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 7", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_Nor() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(16); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NorButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_Not() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(16); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NotButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Octal_Xor() { page.ProgrammerOperators.OctButton.Click(); page.StandardOperators.NumberPad.Input(16); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.XorButton.Click(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 1", page.CalculatorResults.GetCalculatorResultText()); } /// /// Arithmetic shift, binary notation, QWord /// [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_LeftShift() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.LeftShiftButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 1 0 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_RightShift() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.RightShiftButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_And() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.AndButton.Click(); page.StandardOperators.NumberPad.Input(1000); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 0 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_Nand() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NandButton.Click(); page.StandardOperators.NumberPad.Input(1000); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_Or() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.OrButton.Click(); page.StandardOperators.NumberPad.Input(1100); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 1 1 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_Nor() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NorButton.Click(); page.StandardOperators.NumberPad.Input(1100); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_Not() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NotButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Binary_Xor() { page.ProgrammerOperators.BinButton.Click(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.XorButton.Click(); page.StandardOperators.NumberPad.Input(1100); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 1 0", page.CalculatorResults.GetCalculatorResultText()); } /// /// Arithmetic shift, hexadecimal notation, QWord /// [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_LeftShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.LeftShiftButton.Click(); page.ProgrammerOperators.BButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("5 0 0 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_RightShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.FButton.Click(); page.ProgrammerOperators.RightShiftButton.Click(); page.StandardOperators.NumberPad.Input(2); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("3", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_And() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.BButton.Click(); page.ProgrammerOperators.CButton.Click(); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.AndButton.Click(); page.ProgrammerOperators.FButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("C", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_Nand() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.BButton.Click(); page.ProgrammerOperators.CButton.Click(); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NandButton.Click(); page.ProgrammerOperators.FButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("F F F F F F F F F F F F F F F 3", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_Or() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.BButton.Click(); page.ProgrammerOperators.CButton.Click(); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.OrButton.Click(); page.ProgrammerOperators.FButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("A B F", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_Nor() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.BButton.Click(); page.ProgrammerOperators.CButton.Click(); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NorButton.Click(); page.ProgrammerOperators.FButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("F F F F F F F F F F F F F 5 4 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_Not() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.BButton.Click(); page.ProgrammerOperators.CButton.Click(); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.NotButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("F F F F F F F F F F F F F 5 4 3", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Arithmetic_Operator_Hex_Xor() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.BButton.Click(); page.ProgrammerOperators.CButton.Click(); page.ProgrammerOperators.BitwiseButton.Click(); page.ProgrammerOperators.XorButton.Click(); page.ProgrammerOperators.FButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("A B 3", page.CalculatorResults.GetCalculatorResultText()); } #endregion /// /// Logical shift, decimal notation, QWord - AND/NAND/OR/NOR/NOT/XOR will always be the same regardless of what shift setting is selected, so the previous section should have those covered /// #region Logical-shift operators [TestMethod] [Priority(1)] public void Logical_Operator_Decimal_LeftShift() { page.ProgrammerOperators.DecButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.StandardOperators.NumberPad.Input(7); page.ProgrammerOperators.LeftShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("14", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Logical_Operator_Decimal_RightShift() { page.ProgrammerOperators.DecButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.StandardOperators.NumberPad.Input(16); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RightShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("9,223,372,036,854,775,800", page.CalculatorResults.GetCalculatorResultText()); } /// /// Logical shift, octal notation, QWord /// [TestMethod] [Priority(1)] public void Logical_Operator_Octal_LeftShift() { page.ProgrammerOperators.OctButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.StandardOperators.NumberPad.Input(7); page.ProgrammerOperators.LeftShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 6", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Logical_Operator_Octal_RightShift() { page.ProgrammerOperators.OctButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.StandardOperators.NumberPad.Input(16); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RightShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 1", page.CalculatorResults.GetCalculatorResultText()); } /// /// Logical shift, binary notation, QWord /// [TestMethod] [Priority(1)] public void Logical_Operator_Binary_LeftShift() { page.ProgrammerOperators.BinButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.LeftShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 1 0 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Logical_Operator_Binary_RightShift() { page.ProgrammerOperators.BinButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.StandardOperators.NumberPad.Input(1010); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RightShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.IsTrue(String.Equals(page.CalculatorResults.GetCalculatorResultText(), "1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1", StringComparison.OrdinalIgnoreCase)); } /// /// Logical shift, hexadecimal notation, QWord /// [TestMethod] [Priority(1)] public void Logical_Operator_Hex_LeftShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.LeftShiftLogicalButton.Click(); page.ProgrammerOperators.BButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("5 0 0 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Logical_Operator_Hex_RightShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.SetLogicalShift(); page.ProgrammerOperators.FButton.Click(); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RightShiftLogicalButton.Click(); page.StandardOperators.NumberPad.Input(1); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("7 F F F F F F F F F F F F F F 8", page.CalculatorResults.GetCalculatorResultText()); } #endregion /// /// Rotate circular shift, decimal notation, QWord /// #region Rotate-Circular-shift operators [TestMethod] [Priority(1)] public void Circular_Operator_Decimal_LeftShift() { page.ProgrammerOperators.SetRotateCircularShift(); page.StandardOperators.NumberPad.Input(7); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("14", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Circular_Operator_Decimal_RightShift() { page.ProgrammerOperators.SetRotateCircularShift(); page.StandardOperators.NumberPad.Input(16); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RoRButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("9,223,372,036,854,775,800", page.CalculatorResults.GetCalculatorResultText()); } /// /// Rotate circular shift, octal notation, QWord /// [TestMethod] [Priority(1)] public void Circular_Operator_Octal_LeftShift() { page.ProgrammerOperators.OctButton.Click(); page.ProgrammerOperators.SetRotateCircularShift(); page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("5 2", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Circular_Operator_Octal_RightShift() { page.ProgrammerOperators.OctButton.Click(); page.ProgrammerOperators.SetRotateCircularShift(); page.StandardOperators.NumberPad.Input(25); page.ProgrammerOperators.RoRButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2", page.CalculatorResults.GetCalculatorResultText()); } /// /// Rotate circular shift, binary notation, QWord /// [TestMethod] [Priority(1)] public void Circular_Operator_Binary_LeftShift() { page.ProgrammerOperators.BinButton.Click(); page.ProgrammerOperators.SetRotateCircularShift(); page.StandardOperators.NumberPad.Input(1011); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 1 1 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Circular_Operator_Binary_RightShift() { page.ProgrammerOperators.BinButton.Click(); page.ProgrammerOperators.SetRotateCircularShift(); page.StandardOperators.NumberPad.Input(1011); page.ProgrammerOperators.RoRButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1", page.CalculatorResults.GetCalculatorResultText()); } /// /// Rotate circular shift, hexadecimal notation, QWord /// [TestMethod] [Priority(1)] public void Circular_Operator_Hex_LeftShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.SetRotateCircularShift(); page.ProgrammerOperators.AButton.Click(); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 4", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void Circular_Operator_Hex_RightShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.SetRotateCircularShift(); page.ProgrammerOperators.FButton.Click(); page.ProgrammerOperators.RoRButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7", page.CalculatorResults.GetCalculatorResultText()); } #endregion /// /// Rotate through carry circular shift, decimal notation, QWord /// #region Rotate-Through-Carry-Circular-shift operators [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Decimal_LeftShift() { page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(7); page.StandardOperators.NegateButton.Click(); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("-14", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Decimal_RightShift() { page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(17); page.ProgrammerOperators.RoRCarryButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("8", page.CalculatorResults.GetCalculatorResultText()); } /// /// Rotate through carry circular shift, octal notation, QWord /// [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Octal_LeftShift() { page.ProgrammerOperators.OctButton.Click(); page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(111); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("2 2 2", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Octal_RightShift() { page.ProgrammerOperators.OctButton.Click(); page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(111); page.ProgrammerOperators.RoRCarryButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("4 4", page.CalculatorResults.GetCalculatorResultText()); } /// /// Rotate through carry circular shift, binary notation, QWord /// [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Binary_LeftShift() { page.ProgrammerOperators.BinButton.Click(); page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 1 0 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Binary_RightShift() { page.ProgrammerOperators.BinButton.Click(); page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(1011); page.ProgrammerOperators.RoRCarryButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("1 0 1", page.CalculatorResults.GetCalculatorResultText()); } /// /// Rotate through carry circular shift, hexadecimal notation, QWord /// [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Hex_LeftShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.RoLButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("2 0 2 0", page.CalculatorResults.GetCalculatorResultText()); } [TestMethod] [Priority(1)] public void ThroughCarry_Operator_Hex_RightShift() { page.ProgrammerOperators.HexButton.Click(); page.ProgrammerOperators.SetRotateThroughCarryCircularShift(); page.StandardOperators.NumberPad.Input(1010); page.ProgrammerOperators.RoRCarryButton.Click(); page.StandardOperators.EqualButton.Click(); Assert.AreEqual("8 0 8", page.CalculatorResults.GetCalculatorResultText()); } #endregion } }