diff --git a/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs b/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs
index f2be9bdc..83d83224 100644
--- a/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs
+++ b/src/CalculatorUITestFramework/UnitConverterOperatorsPanel.cs
@@ -13,5 +13,7 @@ namespace CalculatorUITestFramework
public NumberPad NumberPad = new NumberPad();
public WindowsElement ClearButton => this.session.TryFindElementByAccessibilityId("ClearEntryButtonPos0");
public WindowsElement BackSpaceButton => this.session.TryFindElementByAccessibilityId("BackSpaceButtonSmall");
+ public WindowsElement Units1 => this.session.TryFindElementByAccessibilityId("Units1");
+ public WindowsElement Units2 => this.session.TryFindElementByAccessibilityId("Units2");
}
}
diff --git a/src/CalculatorUITestFramework/UnitConverterPage.cs b/src/CalculatorUITestFramework/UnitConverterPage.cs
index e3984cf9..011f642b 100644
--- a/src/CalculatorUITestFramework/UnitConverterPage.cs
+++ b/src/CalculatorUITestFramework/UnitConverterPage.cs
@@ -64,5 +64,35 @@ namespace CalculatorUITestFramework
}
}
+ ///
+ /// Ensure Units1 and Units2 are the same
+ ///
+ public void EnsureSameUnitsAreSelected()
+ {
+ SelectUnits1("United States - Dollar");
+ SelectUnits2("United States - Dollar");
+ }
+
+ ///
+ /// Select value in Units1 ComboBox
+ ///
+ /// Value in ComboBox Units1
+ public void SelectUnits1(string value)
+ {
+ UnitConverterOperators.Units1.SendKeys(OpenQA.Selenium.Keys.Home);
+ UnitConverterOperators.Units1.SendKeys(value);
+ UnitConverterOperators.Units1.SendKeys(OpenQA.Selenium.Keys.Enter);
+ }
+
+ ///
+ /// Select value in Units2 ComboBox
+ ///
+ /// Value in ComboBox Units2
+ public void SelectUnits2(string value)
+ {
+ UnitConverterOperators.Units2.SendKeys(OpenQA.Selenium.Keys.Home);
+ UnitConverterOperators.Units2.SendKeys(value);
+ UnitConverterOperators.Units2.SendKeys(OpenQA.Selenium.Keys.Enter);
+ }
}
}
diff --git a/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs b/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs
index fc8d669e..0bd3b921 100644
--- a/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs
+++ b/src/CalculatorUITests/CurrencyConverterFunctionalTests.cs
@@ -42,6 +42,7 @@ namespace CalculatorUITests
CalculatorApp.EnsureCalculatorHasFocus();
page.EnsureCalculatorIsCurrencyMode();
page.EnsureCalculatorResultTextIsZero();
+ page.EnsureSameUnitsAreSelected();
}
[TestCleanup]
@@ -50,6 +51,23 @@ namespace CalculatorUITests
page.ClearAll();
}
+ private string NormalizeCurrencyText(string realValue, int fractionDigits)
+ {
+ if (!realValue.Contains('.')) return realValue;
+
+ var parts = realValue.Split('.');
+ if (parts[1].Length < fractionDigits)
+ {
+ parts[1] += new string('0', fractionDigits - parts[1].Length);
+ }
+ else
+ {
+ parts[1] = parts[1].Substring(0, fractionDigits);
+ }
+
+ return $"{parts[0]}.{parts[1]}".TrimEnd('.');
+ }
+
#region Basic UI Functionality via Mouse Input Tests
///
/// These automated tests verify clicking each of the buttons in the Calculator UI and getting an expected result
@@ -129,6 +147,36 @@ namespace CalculatorUITests
Assert.AreEqual("0", page.UnitConverterResults.GetCalculationResult2Text()); //verifies Backspace button clicks
}
+ ///
+ /// These automated tests verify different currencies use different formatter that the display value should have expected fraction digits
+ /// Via mouse input, all basic UI functionality is checked
+ ///
+ [TestMethod]
+ [DataRow("Japan - Yen", 0)]
+ [DataRow("Korea - Won", 0)]
+ [DataRow("Tunisia - Dinar", 3)]
+ [DataRow("Jordan - Dinar", 3)]
+ [DataRow("China - Yuan", 2)]
+ [Priority(0)]
+ public void MouseInput_SelectCurrencyEnterInputWithDecimalAndCheckTheFractionDigits(string currency, int fractionDigits)
+ {
+ //Verifies fraction digits in given currency
+ page.SelectUnits1(currency);
+ Assert.AreEqual(currency.Replace(" - ", " "), page.UnitConverterOperators.Units1.Text); // Text is the AccessibleName of Unit
+ page.UnitConverterOperators.NumberPad.Num2Button.Click();
+ Assert.AreEqual(NormalizeCurrencyText("2", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 2 button
+ page.UnitConverterOperators.NumberPad.DecimalButton.Click();
+ Assert.AreEqual(NormalizeCurrencyText("2.", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies decimal button
+ page.UnitConverterOperators.NumberPad.Num4Button.Click();
+ Assert.AreEqual(NormalizeCurrencyText("2.4", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 4 button
+ page.UnitConverterOperators.NumberPad.Num3Button.Click();
+ Assert.AreEqual(NormalizeCurrencyText("2.43", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 3 button
+ page.UnitConverterOperators.NumberPad.Num5Button.Click();
+ Assert.AreEqual(NormalizeCurrencyText("2.435", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 5 button
+ page.UnitConverterOperators.NumberPad.Num6Button.Click();
+ Assert.AreEqual(NormalizeCurrencyText("2.4356", fractionDigits), page.UnitConverterResults.GetCalculationResult1Text()); //verifies 6 button
+ }
+
#endregion
}
}