// 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.Interactions;
using System;
namespace CalculatorUITests
{
[TestClass]
public class MemoryFunctionalTests
{
private static StandardCalculatorPage page = new StandardCalculatorPage();
///
/// 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 standard mode
page.NavigateToStandardCalculator();
// 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
///
[TestInitialize]
public void TestInit()
{
CalculatorApp.EnsureCalculatorHasFocus();
page.EnsureCalculatorIsInStandardMode();
page.EnsureCalculatorResultTextIsZero();
}
[TestCleanup]
public void TestCleanup()
{
page.EnsureCalculatorIsInStandardMode();
page.ClearAll();
}
#region Standard Memory Tests
///
/// These automated tests verify using memory related buttons in the Memory Panel, and in the memory flyout
/// Memory control buttons are verified at the end of automated tested in MouseInput_MemoryButtons()
///
[TestMethod]
[Priority(2)]
public void StandardMemory_Panel()
{
//Verify context menu MC, M+, M-, and verify the clear memory button in the Memory panel
page.StandardOperators.NumberPad.Num3Button.Click();
page.MemoryPanel.NumberpadMSButton.Click();
page.MemoryPanel.NumberpadMSButton.Click();
page.MemoryPanel.OpenMemoryPanel();
Actions moveToListView = new Actions(WinAppDriver.Instance.CalculatorSession);
var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems();
moveToListView.MoveToElement(memoryItems[0].Item);
moveToListView.ContextClick(memoryItems[0].Item);
moveToListView.Perform();
CalculatorApp.Window.SendKeys(Keys.ArrowDown + Keys.ArrowDown + Keys.Enter);
Assert.IsTrue(memoryItems[0].GetValue().Equals("0", StringComparison.InvariantCultureIgnoreCase));
moveToListView.Perform();
CalculatorApp.Window.SendKeys(Keys.ArrowUp + Keys.ArrowUp + Keys.Enter);
Assert.IsTrue(memoryItems[0].GetValue().Equals("3", StringComparison.InvariantCultureIgnoreCase));
moveToListView.Perform();
CalculatorApp.Window.SendKeys(Keys.ArrowDown + Keys.ArrowUp + Keys.Enter);
var memoryItems2 = page.MemoryPanel.GetAllMemoryListViewItems();
Assert.IsTrue(memoryItems2[0].GetValue().Equals("3", StringComparison.InvariantCultureIgnoreCase));
page.MemoryPanel.PanelClearMemoryButton.Click();
Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("MemoryPaneEmpty"));
}
[TestMethod]
[Priority(2)]
public void StandardMemory_Flyout()
{
//Verify context menu MC, M+, M-, and ClearMemoryItemButton, and verify the clear memory button in the Memory flyout
page.StandardOperators.NumberPad.Num3Button.Click();
page.MemoryPanel.NumberpadMSButton.Click();
page.MemoryPanel.NumberpadMSButton.Click();
page.MemoryPanel.OpenMemoryFlyout();
var memoryItems = page.MemoryPanel.GetAllMemoryFlyoutListViewItems();
Actions moveToListView = new Actions(WinAppDriver.Instance.CalculatorSession);
moveToListView.MoveToElement(memoryItems[0].Item);
moveToListView.ContextClick(memoryItems[0].Item);
moveToListView.Perform();
CalculatorApp.Window.SendKeys(Keys.ArrowDown + Keys.ArrowDown + Keys.Enter);
Assert.IsTrue(memoryItems[0].GetValue().Equals("0", StringComparison.InvariantCultureIgnoreCase));
page.MemoryPanel.OpenMemoryFlyout();
moveToListView.Perform();
CalculatorApp.Window.SendKeys(Keys.ArrowUp + Keys.ArrowUp + Keys.Enter);
Assert.IsTrue(memoryItems[0].GetValue().Equals("3", StringComparison.InvariantCultureIgnoreCase));
page.MemoryPanel.OpenMemoryFlyout();
moveToListView.Perform();
CalculatorApp.Window.SendKeys(Keys.ArrowDown + Keys.ArrowUp + Keys.Enter);
var memoryItems2 = page.MemoryPanel.GetAllMemoryListViewItems();
Assert.IsTrue(memoryItems2[0].GetValue().Equals("3", StringComparison.InvariantCultureIgnoreCase));
page.MemoryPanel.OpenMemoryFlyout();
page.MemoryPanel.PanelClearMemoryButton.Click();
Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("MemoryPaneEmpty"));
page.MemoryPanel.ResizeWindowToDisplayMemoryLabel();
Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("MemoryPaneEmpty"));
}
#endregion
}
}