diff --git a/build/pipelines/azure-pipelines.ci.yaml b/build/pipelines/azure-pipelines.ci.yaml index 34b98507..2d55627a 100644 --- a/build/pipelines/azure-pipelines.ci.yaml +++ b/build/pipelines/azure-pipelines.ci.yaml @@ -6,11 +6,11 @@ trigger: - master -- servicing/* +- release/* - feature/* pr: - master -- servicing/* +- release/* - feature/* name: 0.$(Date:yyMM).$(DayOfMonth)$(Rev:rr).0 diff --git a/build/pipelines/templates/build-app-internal.yaml b/build/pipelines/templates/build-app-internal.yaml index 460c1c30..41b0cc7a 100644 --- a/build/pipelines/templates/build-app-internal.yaml +++ b/build/pipelines/templates/build-app-internal.yaml @@ -27,7 +27,7 @@ jobs: inputs: command: download downloadDirectory: $(Build.SourcesDirectory) - vstsFeed: WindowsApps + vstsFeed: WindowsInboxApps vstsFeedPackage: calculator-internals vstsPackageVersion: 0.0.45 diff --git a/build/pipelines/templates/prepare-release-internalonly.yaml b/build/pipelines/templates/prepare-release-internalonly.yaml index 2c9dcd55..b13441f8 100644 --- a/build/pipelines/templates/prepare-release-internalonly.yaml +++ b/build/pipelines/templates/prepare-release-internalonly.yaml @@ -78,7 +78,7 @@ jobs: inputs: command: download downloadDirectory: $(Build.SourcesDirectory) - vstsFeed: WindowsApps + vstsFeed: WindowsInboxApps vstsFeedPackage: calculator-internals vstsPackageVersion: 0.0.45 diff --git a/src/CalcViewModel/HistoryItemViewModel.h b/src/CalcViewModel/HistoryItemViewModel.h index cc479518..0e30b0c8 100644 --- a/src/CalcViewModel/HistoryItemViewModel.h +++ b/src/CalcViewModel/HistoryItemViewModel.h @@ -9,7 +9,7 @@ namespace CalculatorApp { namespace ViewModel { - [Windows::UI::Xaml::Data::Bindable] public ref class HistoryItemViewModel sealed : Windows::UI::Xaml::Data::ICustomPropertyProvider + [Windows::UI::Xaml::Data::Bindable] public ref class HistoryItemViewModel sealed { internal : @@ -42,23 +42,6 @@ namespace CalculatorApp property Platform::String ^ AccResult { Platform::String ^ get() { return m_accResult; } } - virtual Windows::UI::Xaml::Data::ICustomProperty - ^ GetCustomProperty(Platform::String ^ name) { return nullptr; } - - virtual Windows::UI::Xaml::Data::ICustomProperty - ^ GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type) { return nullptr; } - - virtual property Windows::UI::Xaml::Interop::TypeName Type - { - Windows::UI::Xaml::Interop::TypeName get() - { - return this->GetType(); - } - } - - virtual Platform::String - ^ GetStringRepresentation() { return m_accExpression + " " + m_accResult; } - private : static Platform::String ^ GetAccessibleExpressionFromTokens( _In_ std::shared_ptr>> const& spTokens, diff --git a/src/CalcViewModel/MemoryItemViewModel.h b/src/CalcViewModel/MemoryItemViewModel.h index 9a85a2bc..fc5dce0c 100644 --- a/src/CalcViewModel/MemoryItemViewModel.h +++ b/src/CalcViewModel/MemoryItemViewModel.h @@ -14,8 +14,7 @@ namespace CalculatorApp /// /// Model representation of a single item in the Memory list /// - [Windows::UI::Xaml::Data::Bindable] public ref class MemoryItemViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged, - Windows::UI::Xaml::Data::ICustomPropertyProvider + [Windows::UI::Xaml::Data::Bindable] public ref class MemoryItemViewModel sealed : public Windows::UI::Xaml::Data::INotifyPropertyChanged { public: MemoryItemViewModel(StandardCalculatorViewModel ^ calcVM) @@ -27,24 +26,7 @@ namespace CalculatorApp OBSERVABLE_PROPERTY_RW(int, Position); OBSERVABLE_PROPERTY_RW(Platform::String ^, Value); - virtual Windows::UI::Xaml::Data::ICustomProperty - ^ GetCustomProperty(Platform::String ^ name) { return nullptr; } - - virtual Windows::UI::Xaml::Data::ICustomProperty - ^ GetIndexedProperty(Platform::String ^ name, Windows::UI::Xaml::Interop::TypeName type) { return nullptr; } - - virtual property Windows::UI::Xaml::Interop::TypeName Type - { - Windows::UI::Xaml::Interop::TypeName get() - { - return this->GetType(); - } - } - - virtual Platform::String - ^ GetStringRepresentation() { return Value; } - - void Clear(); + void Clear(); void MemoryAdd(); void MemorySubtract(); diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index a148fe31..56f2bda4 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -132,7 +132,7 @@ StandardCalculatorViewModel::StandardCalculatorViewModel() IsOperandEnabled = true; IsNegateEnabled = true; IsDecimalEnabled = true; - AreProgrammerRadixOperatorsEnabled = false; + AreProgrammerRadixOperatorsVisible = false; } String ^ StandardCalculatorViewModel::LocalizeDisplayValue(_In_ wstring const& displayValue) diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h index 1dbcc926..d60122bf 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.h +++ b/src/CalcViewModel/StandardCalculatorViewModel.h @@ -76,7 +76,7 @@ namespace CalculatorApp OBSERVABLE_PROPERTY_R(CalculatorApp::Common::NumberBase, CurrentRadixType); OBSERVABLE_PROPERTY_R(bool, AreTokensUpdated); OBSERVABLE_PROPERTY_R(bool, AreAlwaysOnTopResultsUpdated); - OBSERVABLE_PROPERTY_R(bool, AreProgrammerRadixOperatorsEnabled); + OBSERVABLE_PROPERTY_R(bool, AreProgrammerRadixOperatorsVisible); OBSERVABLE_PROPERTY_R(bool, IsInputEmpty); OBSERVABLE_PROPERTY_R(CalculatorApp::Common::Automation::NarratorAnnouncement ^, Announcement); OBSERVABLE_PROPERTY_R(unsigned int, OpenParenthesisCount); @@ -103,7 +103,7 @@ namespace CalculatorApp { m_isBitFlipChecked = value; IsBinaryBitFlippingEnabled = IsProgrammer && m_isBitFlipChecked; - AreProgrammerRadixOperatorsEnabled = IsProgrammer && !m_isBitFlipChecked; + AreProgrammerRadixOperatorsVisible = IsProgrammer && !m_isBitFlipChecked; RaisePropertyChanged(L"IsBitFlipChecked"); } } @@ -178,7 +178,7 @@ namespace CalculatorApp IsBitFlipChecked = false; } IsBinaryBitFlippingEnabled = m_isProgrammer && IsBitFlipChecked; - AreProgrammerRadixOperatorsEnabled = m_isProgrammer && !IsBitFlipChecked; + AreProgrammerRadixOperatorsVisible = m_isProgrammer && !IsBitFlipChecked; if (value) { IsStandard = false; diff --git a/src/Calculator/Calculator.vcxproj b/src/Calculator/Calculator.vcxproj index 4ac84f07..de554cdd 100644 --- a/src/Calculator/Calculator.vcxproj +++ b/src/Calculator/Calculator.vcxproj @@ -135,7 +135,7 @@ - /bigobj /await /std:c++17 /utf-8 + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 4453;28204 $(SolutionDir)..\src\;%(AdditionalIncludeDirectories) Level4 @@ -144,7 +144,7 @@ - /bigobj /await /std:c++17 /utf-8 + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 4453;28204 $(SolutionDir)..\src\;%(AdditionalIncludeDirectories) Level4 @@ -177,7 +177,7 @@ - /bigobj /await /std:c++17 /utf-8 + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 4453;28204 $(SolutionDir)..\src\;%(AdditionalIncludeDirectories) Level4 @@ -198,7 +198,7 @@ - /bigobj /await /std:c++17 /utf-8 + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 4453;28204 $(SolutionDir)..\src\;%(AdditionalIncludeDirectories) Level4 @@ -965,4 +965,4 @@ - \ No newline at end of file + diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml index a863a7c8..871314c0 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml @@ -346,13 +346,13 @@ + Placement="Bottom" + Opened="BitShiftFlyout_Opened"> + Checked="BitshiftFlyout_Checked"/> ArithmeticShiftButton->IsChecked = true; + LoadDeferredLoadButtons(); + + if (IsButtonLoaded()) + { + return; + } + + CollapseBitshiftButtons(); + + m_selectedShiftButtonMode = BitShiftMode::Arithmetic; + LshButton->Visibility = ::Visibility::Visible; + RshButton->Visibility = ::Visibility::Visible; + LshButton->IsEnabled = true; + RshButton->IsEnabled = true; } -void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +bool CalculatorApp::CalculatorProgrammerRadixOperators::IsButtonLoaded() +{ + // Since arithmeticShiftButton defaults to IsChecked = true, this event an fire before we can load the deferred loaded controls. If that is the case, just + // return and do nothing. + return RolButton == nullptr || RorButton == nullptr || RolCarryButton == nullptr || RorCarryButton == nullptr || LshLogicalButton == nullptr + || RshLogicalButton == nullptr; +} + +void CalculatorApp::CalculatorProgrammerRadixOperators::LoadDeferredLoadButtons() { // Load deferred load buttons if (RolButton == nullptr) @@ -62,11 +83,14 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object FindName("LshLogicalButton"); FindName("RshLogicalButton"); } +} - // Since arithmeticShiftButton defaults to IsChecked = true, this event an fire before we can load the deferred loaded controls. If that is the case, just - // return and do nothing. - if (RolButton == nullptr || RorButton == nullptr || RolCarryButton == nullptr || RorCarryButton == nullptr || LshLogicalButton == nullptr - || RshLogicalButton == nullptr) +void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) +{ + // Load deferred load buttons + LoadDeferredLoadButtons(); + + if (IsButtonLoaded()) { return; } @@ -75,6 +99,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object auto radioButton = static_cast(sender); Platform::String ^ announcementString = L""; + BitShiftMode selectedButtonMode = m_selectedShiftButtonMode; if (radioButton == ArithmeticShiftButton) { @@ -83,6 +108,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object LshButton->IsEnabled = true; RshButton->IsEnabled = true; announcementString = m_arithmeticShiftButtonContent; + selectedButtonMode = BitShiftMode::Arithmetic; } else if (radioButton == LogicalShiftButton) { @@ -91,6 +117,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object LshLogicalButton->IsEnabled = true; RshLogicalButton->IsEnabled = true; announcementString = m_logicalShiftButtonContent; + selectedButtonMode = BitShiftMode::LogicalShift; } else if (radioButton == RotateCircularButton) { @@ -99,6 +126,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RolButton->IsEnabled = true; RorButton->IsEnabled = true; announcementString = m_rotateCircularButtonContent; + selectedButtonMode = BitShiftMode::RotateCircular; } else if (radioButton == RotateCarryShiftButton) { @@ -107,9 +135,15 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RolCarryButton->IsEnabled = true; RorCarryButton->IsEnabled = true; announcementString = m_rotateCarryShiftButtonContent; + selectedButtonMode = BitShiftMode::RotateCarry; + } + + if (selectedButtonMode != m_selectedShiftButtonMode) + { + this->BitShiftFlyout->Hide(); + m_selectedShiftButtonMode = selectedButtonMode; } - this->BitShiftFlyout->Hide(); Model->SetBitshiftRadioButtonCheckedAnnouncement(announcementString); } @@ -176,3 +210,23 @@ void CalculatorProgrammerRadixOperators::ClearButton_LostFocus(Object ^ sender, ClearEntryButton->Focus(::FocusState::Programmatic); } } + +void CalculatorApp::CalculatorProgrammerRadixOperators::BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e) +{ + if (m_selectedShiftButtonMode == BitShiftMode::Arithmetic) + { + ArithmeticShiftButton->IsChecked = true; + } + else if (m_selectedShiftButtonMode == BitShiftMode::LogicalShift) + { + LogicalShiftButton->IsChecked = true; + } + else if (m_selectedShiftButtonMode == BitShiftMode::RotateCircular) + { + RotateCircularButton->IsChecked = true; + } + else if (m_selectedShiftButtonMode == BitShiftMode::RotateCarry) + { + RotateCarryShiftButton->IsChecked = true; + } +} diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h index 2412bfc5..c46667ac 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h @@ -29,19 +29,30 @@ namespace CalculatorApp Platform::String ^ ParenthesisCountToString(unsigned int count); DEPENDENCY_PROPERTY_OWNER(CalculatorProgrammerRadixOperators); - void checkDefaultBitShift(); private: + enum class BitShiftMode + { + Arithmetic, + LogicalShift, + RotateCircular, + RotateCarry + }; + void BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void FlyoutButton_Clicked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e); void CollapseBitshiftButtons(); void LoadResourceStrings(); + void LoadDeferredLoadButtons(); + bool IsButtonLoaded(); bool m_isErrorVisualState; void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearEntryButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + void BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e); + BitShiftMode m_selectedShiftButtonMode; Platform::String ^ m_arithmeticShiftButtonContent; Platform::String ^ m_logicalShiftButtonContent; Platform::String ^ m_rotateCircularButtonContent; diff --git a/src/Calculator/Views/HistoryList.xaml b/src/Calculator/Views/HistoryList.xaml index 6fc5281d..0004054d 100644 --- a/src/Calculator/Views/HistoryList.xaml +++ b/src/Calculator/Views/HistoryList.xaml @@ -63,6 +63,7 @@ Margin="0,0,0,4" HorizontalAlignment="Right" Style="{ThemeResource BodyTextBlockMediumStyle}" + AutomationProperties.AutomationId="HistoryItemExpression" AutomationProperties.Name="{x:Bind AccExpression}" IsTextSelectionEnabled="True" Text="{x:Bind Expression}" @@ -72,6 +73,7 @@ HorizontalAlignment="Right" Style="{ThemeResource TitleTextBlockStyle}" FontWeight="SemiBold" + AutomationProperties.AutomationId="HistoryItemValue" AutomationProperties.Name="{x:Bind AccResult}" IsTextSelectionEnabled="True" Text="{x:Bind Result}" diff --git a/src/Calculator/Views/MainPage.xaml b/src/Calculator/Views/MainPage.xaml index 07eef666..a2bad010 100644 --- a/src/Calculator/Views/MainPage.xaml +++ b/src/Calculator/Views/MainPage.xaml @@ -142,6 +142,7 @@ AutomationProperties.AutomationId="NormalAlwaysOnTopButton" Click="AlwaysOnTopButtonClick" Content="" + TabIndex="3" Visibility="{x:Bind Model.DisplayNormalAlwaysOnTopOption, Mode=OneWay}"> diff --git a/src/Calculator/Views/MemoryListItem.xaml b/src/Calculator/Views/MemoryListItem.xaml index 1b59f886..4242ffa2 100644 --- a/src/Calculator/Views/MemoryListItem.xaml +++ b/src/Calculator/Views/MemoryListItem.xaml @@ -54,6 +54,7 @@ HorizontalAlignment="Right" Style="{ThemeResource TitleTextBlockStyle}" FontWeight="SemiBold" + AutomationProperties.AutomationId="MemoryItemValue" FlowDirection="LeftToRight" IsTextSelectionEnabled="True" Text="{x:Bind Model.Value, Mode=OneWay}" diff --git a/src/Calculator/Views/OperatorsPanel.xaml b/src/Calculator/Views/OperatorsPanel.xaml index 1623792b..b9b22f6a 100644 --- a/src/Calculator/Views/OperatorsPanel.xaml +++ b/src/Calculator/Views/OperatorsPanel.xaml @@ -27,8 +27,8 @@ diff --git a/src/Calculator/Views/OperatorsPanel.xaml.cpp b/src/Calculator/Views/OperatorsPanel.xaml.cpp index 810a8e20..83c16e3d 100644 --- a/src/Calculator/Views/OperatorsPanel.xaml.cpp +++ b/src/Calculator/Views/OperatorsPanel.xaml.cpp @@ -72,10 +72,7 @@ void OperatorsPanel::EnsureProgrammerRadixOps() this->FindName(L"ProgrammerRadixOperators"); } - if (ProgrammerRadixOperators) - { - ProgrammerRadixOperators->checkDefaultBitShift(); - } + ProgrammerRadixOperators->checkDefaultBitShift(); } void OperatorsPanel::EnsureProgrammerBitFlipPanel() diff --git a/src/CalculatorUITestFramework/HistoryItem.cs b/src/CalculatorUITestFramework/HistoryItem.cs new file mode 100644 index 00000000..cc5f7367 --- /dev/null +++ b/src/CalculatorUITestFramework/HistoryItem.cs @@ -0,0 +1,29 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using OpenQA.Selenium.Appium; +using System; +using System.Collections.Generic; +using System.Text; + +namespace CalculatorUITestFramework +{ + public class HistoryItem + { + public AppiumWebElement Item { get; } + + public HistoryItem(AppiumWebElement item) + { + Item = item; + } + + public string GetValue() + { + return Item.FindElementByAccessibilityId("HistoryItemValue")?.Text; + } + public string GetExpression() + { + return Item.FindElementByAccessibilityId("HistoryItemExpression")?.Text; + } + } +} diff --git a/src/CalculatorUITestFramework/HistoryPanel.cs b/src/CalculatorUITestFramework/HistoryPanel.cs index f366a7e1..849c1f31 100644 --- a/src/CalculatorUITestFramework/HistoryPanel.cs +++ b/src/CalculatorUITestFramework/HistoryPanel.cs @@ -5,8 +5,10 @@ using OpenQA.Selenium; using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Interactions; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing; +using System.Linq; namespace CalculatorUITestFramework { @@ -34,10 +36,10 @@ namespace CalculatorUITestFramework /// Gets all of the history items listed in the History Pane. /// /// A readonly collection of history items. - public ReadOnlyCollection GetAllHistoryListViewItems() + public List GetAllHistoryListViewItems() { OpenHistoryPanel(); - return this.HistoryListView.FindElementsByClassName("ListViewItem"); + return (from item in this.HistoryListView.FindElementsByClassName("ListViewItem") select new HistoryItem(item)).ToList(); } /// @@ -92,10 +94,10 @@ namespace CalculatorUITestFramework /// Gets all of the History items listed in the History Flyout. /// /// A read only collection of History items. - public ReadOnlyCollection GetAllHistoryFlyoutListViewItems() + public List GetAllHistoryFlyoutListViewItems() { OpenHistoryFlyout(); - return this.HistoryListView.FindElementsByClassName("ListViewItem"); + return (from item in this.HistoryListView.FindElementsByClassName("ListViewItem") select new HistoryItem(item)).ToList(); } /// diff --git a/src/CalculatorUITestFramework/MemoryItem.cs b/src/CalculatorUITestFramework/MemoryItem.cs new file mode 100644 index 00000000..5bc2289b --- /dev/null +++ b/src/CalculatorUITestFramework/MemoryItem.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using OpenQA.Selenium.Appium; +using System; +using System.Collections.Generic; +using System.Text; + +namespace CalculatorUITestFramework +{ + public class MemoryItem + { + public AppiumWebElement Item { get; } + + public MemoryItem(AppiumWebElement item) + { + Item = item; + } + + public string GetValue() + { + return Item.FindElementByAccessibilityId("MemoryItemValue")?.Text; + } + } +} diff --git a/src/CalculatorUITestFramework/MemoryPanel.cs b/src/CalculatorUITestFramework/MemoryPanel.cs index a02954bd..f1233d16 100644 --- a/src/CalculatorUITestFramework/MemoryPanel.cs +++ b/src/CalculatorUITestFramework/MemoryPanel.cs @@ -6,8 +6,10 @@ using OpenQA.Selenium; using OpenQA.Selenium.Appium; using OpenQA.Selenium.Appium.Windows; using OpenQA.Selenium.Interactions; +using System.Collections.Generic; using System.Collections.ObjectModel; using System.Drawing; +using System.Linq; namespace CalculatorUITestFramework { @@ -43,10 +45,10 @@ namespace CalculatorUITestFramework /// Gets all of the memory items listed in the Memory Pane. /// /// A read-only collection of memory items. - public ReadOnlyCollection GetAllMemoryListViewItems() + public List GetAllMemoryListViewItems() { OpenMemoryPanel(); - return this.MemoryListView.FindElementsByClassName("ListViewItem"); + return (from item in this.MemoryListView.FindElementsByClassName("ListViewItem") select new MemoryItem(item)).ToList(); } /// @@ -119,10 +121,10 @@ namespace CalculatorUITestFramework /// Gets all of the memory items listed in the Memory Flyout. /// /// A read only collection of memory items. - public ReadOnlyCollection GetAllMemoryFlyoutListViewItems() + public List GetAllMemoryFlyoutListViewItems() { OpenMemoryFlyout(); - return this.MemoryListView.FindElementsByClassName("ListViewItem"); + return (from item in this.MemoryListView.FindElementsByClassName("ListViewItem") select new MemoryItem(item)).ToList(); } /// diff --git a/src/CalculatorUITests/HistoryFunctionalTests.cs b/src/CalculatorUITests/HistoryFunctionalTests.cs index a54da1d3..406f8423 100644 --- a/src/CalculatorUITests/HistoryFunctionalTests.cs +++ b/src/CalculatorUITests/HistoryFunctionalTests.cs @@ -88,20 +88,22 @@ namespace CalculatorUITests page.StandardOperators.EqualButton.Click(); var historyItems = page.HistoryPanel.GetAllHistoryListViewItems(); - Assert.IsTrue(historyItems[0].Text.Equals("2 Minus ( 3= Minus (1", StringComparison.InvariantCultureIgnoreCase)); - Assert.IsTrue(historyItems[1].Text.Equals("-3 + -2.6= Minus (5.6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetValue().Equals("-1", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetExpression().Equals("2 - 3 =", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[1].GetValue().Equals("-5.6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[1].GetExpression().Equals("-3 + -2.6 =", StringComparison.InvariantCultureIgnoreCase)); Assert.AreEqual("-1", page.CalculatorResults.GetCalculatorResultText()); Actions clickHistoryItemsw1 = new Actions(WinAppDriver.Instance.CalculatorSession); - clickHistoryItemsw1.Click(historyItems[1]); + clickHistoryItemsw1.Click(historyItems[1].Item); clickHistoryItemsw1.Perform(); Assert.AreEqual("-5.6", page.CalculatorResults.GetCalculatorResultText()); Assert.AreEqual("-3 + -2.6=", page.CalculatorResults.GetCalculatorExpressionText()); Actions clickHistoryItemsw0 = new Actions(WinAppDriver.Instance.CalculatorSession); - clickHistoryItemsw0.Click(historyItems[0]); + clickHistoryItemsw0.Click(historyItems[0].Item); clickHistoryItemsw0.Perform(); Assert.AreEqual("-1", page.CalculatorResults.GetCalculatorResultText()); @@ -131,14 +133,18 @@ namespace CalculatorUITests page.StandardOperators.EqualButton.Click(); var historyPanelItems = page.HistoryPanel.GetAllHistoryListViewItems(); - Assert.IsTrue(historyPanelItems[0].Text.Equals("2 Minus ( 3= Minus (1", StringComparison.InvariantCultureIgnoreCase)); - Assert.IsTrue(historyPanelItems[1].Text.Equals("-3 + -2.6= Minus (5.6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyPanelItems[0].GetValue().Equals("-1", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyPanelItems[0].GetExpression().Equals("2 - 3 =", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyPanelItems[1].GetValue().Equals("-5.6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyPanelItems[1].GetExpression().Equals("-3 + -2.6 =", StringComparison.InvariantCultureIgnoreCase)); Assert.AreEqual("-1", page.CalculatorResults.GetCalculatorResultText()); var historyItems = page.HistoryPanel.GetAllHistoryFlyoutListViewItems(); - Assert.IsTrue(historyItems[0].Text.Equals("2 Minus ( 3= Minus (1", StringComparison.InvariantCultureIgnoreCase)); - Assert.IsTrue(historyItems[1].Text.Equals("-3 + -2.6= Minus (5.6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetValue().Equals("-1", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetExpression().Equals("2 - 3 =", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[1].GetValue().Equals("-5.6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[1].GetExpression().Equals("-3 + -2.6 =", StringComparison.InvariantCultureIgnoreCase)); Assert.AreEqual("-1", page.CalculatorResults.GetCalculatorResultText()); diff --git a/src/CalculatorUITests/MemoryFunctionalTests.cs b/src/CalculatorUITests/MemoryFunctionalTests.cs index bd4eed9d..0e1ed18f 100644 --- a/src/CalculatorUITests/MemoryFunctionalTests.cs +++ b/src/CalculatorUITests/MemoryFunctionalTests.cs @@ -77,20 +77,20 @@ namespace CalculatorUITests Actions moveToListView = new Actions(WinAppDriver.Instance.CalculatorSession); var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems(); - moveToListView.MoveToElement(memoryItems[0]); - moveToListView.ContextClick(memoryItems[0]); + 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].Text.Equals("0", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(memoryItems[0].GetValue().Equals("0", StringComparison.InvariantCultureIgnoreCase)); moveToListView.Perform(); CalculatorApp.Window.SendKeys(Keys.ArrowUp + Keys.ArrowUp + Keys.Enter); - Assert.IsTrue(memoryItems[0].Text.Equals("3", StringComparison.InvariantCultureIgnoreCase)); + 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].Text.Equals("3", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(memoryItems2[0].GetValue().Equals("3", StringComparison.InvariantCultureIgnoreCase)); page.MemoryPanel.PanelClearMemoryButton.Click(); Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("MemoryPaneEmpty")); @@ -108,22 +108,22 @@ namespace CalculatorUITests page.MemoryPanel.OpenMemoryFlyout(); var memoryItems = page.MemoryPanel.GetAllMemoryFlyoutListViewItems(); Actions moveToListView = new Actions(WinAppDriver.Instance.CalculatorSession); - moveToListView.MoveToElement(memoryItems[0]); - moveToListView.ContextClick(memoryItems[0]); + 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].Text.Equals("0", StringComparison.InvariantCultureIgnoreCase)); + 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].Text.Equals("3", StringComparison.InvariantCultureIgnoreCase)); + 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].Text.Equals("3", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(memoryItems2[0].GetValue().Equals("3", StringComparison.InvariantCultureIgnoreCase)); page.MemoryPanel.OpenMemoryFlyout(); page.MemoryPanel.PanelClearMemoryButton.Click(); diff --git a/src/CalculatorUITests/StandardModeFunctionalTests.cs b/src/CalculatorUITests/StandardModeFunctionalTests.cs index 4b0f43c7..b1730a9e 100644 --- a/src/CalculatorUITests/StandardModeFunctionalTests.cs +++ b/src/CalculatorUITests/StandardModeFunctionalTests.cs @@ -171,10 +171,12 @@ namespace CalculatorUITests page.HistoryPanel.ResizeWindowToDisplayHistoryButton(); page.HistoryPanel.HistoryButton.Click(); var historyFlyoutItems = page.HistoryPanel.GetAllHistoryFlyoutListViewItems(); - Assert.IsTrue(historyFlyoutItems[0].Text.Equals("4 × 5 ÷ 6= 3.333333333333333", StringComparison.InvariantCultureIgnoreCase)); //verifies History button + Assert.IsTrue(historyFlyoutItems[0].GetValue().Equals("3.333333333333333", StringComparison.InvariantCultureIgnoreCase)); //verifies History button + Assert.IsTrue(historyFlyoutItems[0].GetExpression().Equals("4 × 5 ÷ 6 =", StringComparison.InvariantCultureIgnoreCase)); //verifies History button page.HistoryPanel.ResizeWindowToDisplayHistoryLabel(); var historyItems = page.HistoryPanel.GetAllHistoryListViewItems(); - Assert.IsTrue(historyItems[0].Text.Equals("4 × 5 ÷ 6= 3.333333333333333", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetValue().Equals("3.333333333333333", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetExpression().Equals("4 × 5 ÷ 6 =", StringComparison.InvariantCultureIgnoreCase)); page.HistoryPanel.ClearHistoryButton.Click(); Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("HistoryEmpty")); //verifies the History panel's clear history button } @@ -187,16 +189,16 @@ namespace CalculatorUITests page.StandardOperators.NumberPad.Num1Button.Click(); page.MemoryPanel.NumberpadMSButton.Click(); var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems(); - Assert.IsTrue(memoryItems[0].Text.Equals("1", StringComparison.InvariantCultureIgnoreCase)); //verifies memory button + Assert.IsTrue(memoryItems[0].GetValue().Equals("1", StringComparison.InvariantCultureIgnoreCase)); //verifies memory button page.MemoryPanel.NumberpadMPlusButton.Click(); - Assert.IsTrue(memoryItems[0].Text.Equals("2", StringComparison.InvariantCultureIgnoreCase)); //verifies memory plus button + Assert.IsTrue(memoryItems[0].GetValue().Equals("2", StringComparison.InvariantCultureIgnoreCase)); //verifies memory plus button page.MemoryPanel.NumberpadMRButton.Click(); Assert.AreEqual("2", page.CalculatorResults.GetCalculatorResultText()); //verifies memory recall button page.StandardOperators.MinusButton.Click(); page.StandardOperators.NumberPad.Num1Button.Click(); page.StandardOperators.EqualButton.Click(); page.MemoryPanel.NumberpadMMinusButton.Click(); - Assert.IsTrue(memoryItems[0].Text.Equals("1", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(memoryItems[0].GetValue().Equals("1", StringComparison.InvariantCultureIgnoreCase)); Assert.AreEqual("1", page.CalculatorResults.GetCalculatorResultText()); //verifies MemMinus button page.MemoryPanel.NumberpadMCButton.Click(); Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("MemoryPaneEmpty")); //verifies the Memory panel's memory clear button @@ -344,9 +346,9 @@ namespace CalculatorUITests CalculatorApp.Window.SendKeys("1"); CalculatorApp.Window.SendKeys(Keys.Control + "m" + Keys.Control); var memoryItems = page.MemoryPanel.GetAllMemoryListViewItems(); - Assert.IsTrue(memoryItems[0].Text.Equals("1", StringComparison.InvariantCultureIgnoreCase)); //verifies memory hotkey + Assert.IsTrue(memoryItems[0].GetValue().Equals("1", StringComparison.InvariantCultureIgnoreCase)); //verifies memory hotkey CalculatorApp.Window.SendKeys(Keys.Control + "p" + Keys.Control); - Assert.IsTrue(memoryItems[0].Text.Equals("2", StringComparison.InvariantCultureIgnoreCase)); //verifies memory plus hotkey + Assert.IsTrue(memoryItems[0].GetValue().Equals("2", StringComparison.InvariantCultureIgnoreCase)); //verifies memory plus hotkey CalculatorApp.Window.SendKeys(Keys.Control + "r" + Keys.Control); Assert.AreEqual("2", page.CalculatorResults.GetCalculatorResultText()); //verifies memory recall hotkey CalculatorApp.Window.SendKeys(Keys.Subtract); @@ -354,7 +356,7 @@ namespace CalculatorUITests CalculatorApp.Window.SendKeys(Keys.Equal); CalculatorApp.Window.SendKeys(Keys.Subtract); CalculatorApp.Window.SendKeys(Keys.Control + "q" + Keys.Control); - Assert.IsTrue(memoryItems[0].Text.Equals("1", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(memoryItems[0].GetValue().Equals("1", StringComparison.InvariantCultureIgnoreCase)); Assert.AreEqual("1", page.CalculatorResults.GetCalculatorResultText()); //verifies MemMinus hotkey CalculatorApp.Window.SendKeys(Keys.Control + "l" + Keys.Control); Assert.IsNotNull(WinAppDriver.Instance.CalculatorSession.FindElementByAccessibilityId("MemoryPaneEmpty")); //verifies the Memory panel's memory clear button hotkey @@ -536,8 +538,10 @@ namespace CalculatorUITests CalculatorApp.Window.SendKeys(Keys.Equal); Assert.AreEqual("0", page.CalculatorResults.GetCalculatorResultText()); var historyItems = page.HistoryPanel.GetAllHistoryListViewItems(); - Assert.IsTrue(historyItems[0].Text.Equals("0= 0", StringComparison.InvariantCultureIgnoreCase)); - Assert.IsTrue(historyItems[1].Text.Equals("0= 0", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetValue().Equals("0", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetExpression().Equals("0 =", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[1].GetValue().Equals("0", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[1].GetExpression().Equals("0 =", StringComparison.InvariantCultureIgnoreCase)); CalculatorApp.Window.SendKeys(Keys.Escape); } @@ -670,7 +674,8 @@ namespace CalculatorUITests { page.StandardAoTCalculatorPage.NavigateToStandardMode(); var historyItems = page.HistoryPanel.GetAllHistoryListViewItems(); - Assert.IsTrue(historyItems[0].Text.Equals("3 + 3= 6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetValue().Equals("6", StringComparison.InvariantCultureIgnoreCase)); + Assert.IsTrue(historyItems[0].GetExpression().Equals("3 + 3 =", StringComparison.InvariantCultureIgnoreCase)); } } diff --git a/src/TraceLogging/TraceLogging.vcxproj b/src/TraceLogging/TraceLogging.vcxproj index ba0a960e..b167a791 100644 --- a/src/TraceLogging/TraceLogging.vcxproj +++ b/src/TraceLogging/TraceLogging.vcxproj @@ -168,7 +168,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -183,7 +183,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -198,7 +198,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -213,7 +213,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -228,7 +228,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -243,7 +243,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -258,7 +258,7 @@ pch.h $(IntDir)pch.pch $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) - /bigobj %(AdditionalOptions) + /bigobj /await /std:c++17 /utf-8 %(AdditionalOptions) 28204 @@ -291,4 +291,4 @@ - \ No newline at end of file +