// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. using OpenQA.Selenium; using OpenQA.Selenium.Appium.Windows; using System.Collections.Generic; using System.Diagnostics.Contracts; using System.Runtime.InteropServices.ComTypes; using System; using System.Diagnostics; namespace CalculatorUITestFramework { /// /// UI elements unique to programmer mode /// public class ProgrammerOperatorsPanel { private WindowsDriver session => WinAppDriver.Instance.CalculatorSession; public NumberPad NumberPad = new NumberPad(); public WindowsElement HexButton => this.session.TryFindElementByAccessibilityId("hexButton"); public WindowsElement DecButton => this.session.TryFindElementByAccessibilityId("decimalButton"); public WindowsElement OctButton => this.session.TryFindElementByAccessibilityId("octolButton"); public WindowsElement BinButton => this.session.TryFindElementByAccessibilityId("binaryButton"); public WindowsElement FullKeypad => this.session.TryFindElementByAccessibilityId("fullKeypad"); public WindowsElement BitFlip => this.session.TryFindElementByAccessibilityId("bitFlip"); public WindowsElement WordButton => this.session.TryFindElementByAccessibilityId("wordButton"); public WindowsElement QWordButton => this.session.TryFindElementByAccessibilityId("qwordButton"); public WindowsElement DWordButton => this.session.TryFindElementByAccessibilityId("dwordButton"); public WindowsElement ByteButton => this.session.TryFindElementByAccessibilityId("byteButton"); public WindowsElement BitwiseButton => this.session.TryFindElementByAccessibilityId("bitwiseButton"); public WindowsElement BitShiftButton => this.session.TryFindElementByAccessibilityId("bitShiftButton"); public WindowsElement AndButton => this.session.TryFindElementByAccessibilityId("andButton"); public WindowsElement NandButton => this.session.TryFindElementByAccessibilityId("nandButton"); public WindowsElement OrButton => this.session.TryFindElementByAccessibilityId("orButton"); public WindowsElement NorButton => this.session.TryFindElementByAccessibilityId("norButton"); public WindowsElement NotButton => this.session.TryFindElementByAccessibilityId("notButton"); public WindowsElement XorButton => this.session.TryFindElementByAccessibilityId("xorButton"); public WindowsElement ArithmeticShiftButton => this.session.TryFindElementByAccessibilityId("arithmeticShiftButton"); public WindowsElement LogicalShiftButton => this.session.TryFindElementByAccessibilityId("logicalShiftButton"); public WindowsElement RotateCircularButton => this.session.TryFindElementByAccessibilityId("rotateCircularButton"); public WindowsElement RotateCarryShiftButton => this.session.TryFindElementByAccessibilityId("rotateCarryShiftButton"); public WindowsElement AButton => this.session.TryFindElementByAccessibilityId("aButton"); public WindowsElement BButton => this.session.TryFindElementByAccessibilityId("bButton"); public WindowsElement CButton => this.session.TryFindElementByAccessibilityId("cButton"); public WindowsElement DButton => this.session.TryFindElementByAccessibilityId("dButton"); public WindowsElement EButton => this.session.TryFindElementByAccessibilityId("eButton"); public WindowsElement FButton => this.session.TryFindElementByAccessibilityId("fButton"); public WindowsElement LeftShiftButton => this.session.TryFindElementByAccessibilityId("lshButton"); public WindowsElement RightShiftButton => this.session.TryFindElementByAccessibilityId("rshButton"); public WindowsElement LeftShiftLogicalButton => this.session.TryFindElementByAccessibilityId("lshLogicalButton"); public WindowsElement RightShiftLogicalButton => this.session.TryFindElementByAccessibilityId("rshLogicalButton"); public WindowsElement RoLButton => this.session.TryFindElementByAccessibilityId("rolButton"); public WindowsElement RoRButton => this.session.TryFindElementByAccessibilityId("rorButton"); public WindowsElement RoRCarryButton => this.session.TryFindElementByAccessibilityId("rorCarryButton"); public WindowsElement Bit0 => this.session.TryFindElementByAccessibilityId("Bit0"); public WindowsElement Bit1 => this.session.TryFindElementByAccessibilityId("Bit1"); public WindowsElement Bit2 => this.session.TryFindElementByAccessibilityId("Bit2"); public WindowsElement Bit3 => this.session.TryFindElementByAccessibilityId("Bit3"); public WindowsElement Bit4 => this.session.TryFindElementByAccessibilityId("Bit4"); public WindowsElement Bit5 => this.session.TryFindElementByAccessibilityId("Bit5"); public WindowsElement Bit6 => this.session.TryFindElementByAccessibilityId("Bit6"); public WindowsElement Bit7 => this.session.TryFindElementByAccessibilityId("Bit7"); public WindowsElement Bit8 => this.session.TryFindElementByAccessibilityId("Bit8"); public WindowsElement Bit9 => this.session.TryFindElementByAccessibilityId("Bit9"); public WindowsElement Bit10 => this.session.TryFindElementByAccessibilityId("Bit10"); public WindowsElement Bit11 => this.session.TryFindElementByAccessibilityId("Bit11"); public WindowsElement Bit12 => this.session.TryFindElementByAccessibilityId("Bit12"); public WindowsElement Bit13 => this.session.TryFindElementByAccessibilityId("Bit13"); public WindowsElement Bit14 => this.session.TryFindElementByAccessibilityId("Bit14"); public WindowsElement Bit15 => this.session.TryFindElementByAccessibilityId("Bit15"); public WindowsElement Bit16 => this.session.TryFindElementByAccessibilityId("Bit16"); public WindowsElement Bit17 => this.session.TryFindElementByAccessibilityId("Bit17"); public WindowsElement Bit18 => this.session.TryFindElementByAccessibilityId("Bit18"); public WindowsElement Bit19 => this.session.TryFindElementByAccessibilityId("Bit19"); public WindowsElement Bit20 => this.session.TryFindElementByAccessibilityId("Bit20"); public WindowsElement Bit21 => this.session.TryFindElementByAccessibilityId("Bit21"); public WindowsElement Bit22 => this.session.TryFindElementByAccessibilityId("Bit22"); public WindowsElement Bit23 => this.session.TryFindElementByAccessibilityId("Bit23"); public WindowsElement Bit24 => this.session.TryFindElementByAccessibilityId("Bit24"); public WindowsElement Bit25 => this.session.TryFindElementByAccessibilityId("Bit25"); public WindowsElement Bit26 => this.session.TryFindElementByAccessibilityId("Bit26"); public WindowsElement Bit27 => this.session.TryFindElementByAccessibilityId("Bit27"); public WindowsElement Bit28 => this.session.TryFindElementByAccessibilityId("Bit28"); public WindowsElement Bit29 => this.session.TryFindElementByAccessibilityId("Bit29"); public WindowsElement Bit30 => this.session.TryFindElementByAccessibilityId("Bit30"); public WindowsElement Bit31 => this.session.TryFindElementByAccessibilityId("Bit31"); public WindowsElement Bit32 => this.session.TryFindElementByAccessibilityId("Bit32"); public WindowsElement Bit33 => this.session.TryFindElementByAccessibilityId("Bit33"); public WindowsElement Bit34 => this.session.TryFindElementByAccessibilityId("Bit34"); public WindowsElement Bit35 => this.session.TryFindElementByAccessibilityId("Bit35"); public WindowsElement Bit36 => this.session.TryFindElementByAccessibilityId("Bit36"); public WindowsElement Bit37 => this.session.TryFindElementByAccessibilityId("Bit37"); public WindowsElement Bit38 => this.session.TryFindElementByAccessibilityId("Bit38"); public WindowsElement Bit39 => this.session.TryFindElementByAccessibilityId("Bit39"); public WindowsElement Bit40 => this.session.TryFindElementByAccessibilityId("Bit40"); public WindowsElement Bit41 => this.session.TryFindElementByAccessibilityId("Bit41"); public WindowsElement Bit42 => this.session.TryFindElementByAccessibilityId("Bit42"); public WindowsElement Bit43 => this.session.TryFindElementByAccessibilityId("Bit43"); public WindowsElement Bit44 => this.session.TryFindElementByAccessibilityId("Bit44"); public WindowsElement Bit45 => this.session.TryFindElementByAccessibilityId("Bit45"); public WindowsElement Bit46 => this.session.TryFindElementByAccessibilityId("Bit46"); public WindowsElement Bit47 => this.session.TryFindElementByAccessibilityId("Bit47"); public WindowsElement Bit48 => this.session.TryFindElementByAccessibilityId("Bit48"); public WindowsElement Bit49 => this.session.TryFindElementByAccessibilityId("Bit49"); public WindowsElement Bit50 => this.session.TryFindElementByAccessibilityId("Bit50"); public WindowsElement Bit51 => this.session.TryFindElementByAccessibilityId("Bit51"); public WindowsElement Bit52 => this.session.TryFindElementByAccessibilityId("Bit52"); public WindowsElement Bit53 => this.session.TryFindElementByAccessibilityId("Bit53"); public WindowsElement Bit54 => this.session.TryFindElementByAccessibilityId("Bit54"); public WindowsElement Bit55 => this.session.TryFindElementByAccessibilityId("Bit55"); public WindowsElement Bit56 => this.session.TryFindElementByAccessibilityId("Bit56"); public WindowsElement Bit57 => this.session.TryFindElementByAccessibilityId("Bit57"); public WindowsElement Bit58 => this.session.TryFindElementByAccessibilityId("Bit58"); public WindowsElement Bit59 => this.session.TryFindElementByAccessibilityId("Bit59"); public WindowsElement Bit60 => this.session.TryFindElementByAccessibilityId("Bit60"); public WindowsElement Bit61 => this.session.TryFindElementByAccessibilityId("Bit61"); public WindowsElement Bit62 => this.session.TryFindElementByAccessibilityId("Bit62"); public WindowsElement Bit63 => this.session.TryFindElementByAccessibilityId("Bit63"); public void SetArithmeticShift() { BitShiftButton.Click(); if (this.ArithmeticShiftButton.GetAttribute("isEnabled") != "True") { ArithmeticShiftButton.Click(); } else { BitShiftButton.Click(); } } public void SetLogicalShift() { BitShiftButton.Click(); if (this.LogicalShiftButton.GetAttribute("isEnabled") != "True") { LogicalShiftButton.Click(); } else { BitShiftButton.Click(); } } public void SetRotateCircularShift() { BitShiftButton.Click(); if (this.RotateCircularButton.GetAttribute("isEnabled") != "True") { RotateCircularButton.Click(); } else { BitShiftButton.Click(); } } public void SetRotateThroughCarryCircularShift() { BitShiftButton.Click(); if (this.RotateCarryShiftButton.GetAttribute("isEnabled") != "True") { RotateCarryShiftButton.Click(); } else { BitShiftButton.Click(); } } public void ResetWordSize() { string source = this.session.PageSource; if (source.Contains("qwordButton")) { return; } else if (source.Contains("dwordButton")) { DWordButton.Click(); WordButton.Click(); ByteButton.Click(); } else if (source.Contains("wordButton")) { WordButton.Click(); ByteButton.Click(); } else if (source.Contains("byteButton")) { ByteButton.Click(); } else { throw new NotFoundException("Could not find word size buttons in page source"); } } public void ResetNumberSystem() { DecButton.Click(); } } }