Skip to content

Commit 77aef85

Browse files
committed
Add RangeSelector UItest env and basic test
1 parent 6827aab commit 77aef85

File tree

4 files changed

+296
-0
lines changed

4 files changed

+296
-0
lines changed

UITests/UITests.App/UITests.App.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,10 @@
207207
<Project>{daeb9cec-c817-33b2-74b2-bc379380db72}</Project>
208208
<Name>Microsoft.Toolkit.Uwp.UI.Controls.DataGrid</Name>
209209
</ProjectReference>
210+
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Controls.Input\Microsoft.Toolkit.Uwp.UI.Controls.Input.csproj">
211+
<Project>{af1be4e9-e2e1-4729-b076-b3725d8e21ee}</Project>
212+
<Name>Microsoft.Toolkit.Uwp.UI.Controls.Input</Name>
213+
</ProjectReference>
210214
<ProjectReference Include="..\..\Microsoft.Toolkit.Uwp.UI.Controls.Layout\Microsoft.Toolkit.Uwp.UI.Controls.Layout.csproj">
211215
<Project>{cb444381-18ba-4a51-bb32-3a498bcc1e99}</Project>
212216
<Name>Microsoft.Toolkit.Uwp.UI.Controls.Layout</Name>
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using Microsoft.Windows.Apps.Test.Foundation.Controls;
6+
using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common;
7+
using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra;
8+
9+
#if USING_TAEF
10+
using WEX.Logging.Interop;
11+
using WEX.TestExecution;
12+
using WEX.TestExecution.Markup;
13+
#else
14+
using Microsoft.VisualStudio.TestTools.UnitTesting;
15+
#endif
16+
17+
namespace UITests.Tests
18+
{
19+
20+
[TestClass]
21+
public class RangeSelectorTest : UITestBase
22+
{
23+
[ClassInitialize]
24+
[TestProperty("RunAs", "User")]
25+
[TestProperty("Classification", "ScenarioTestSuite")]
26+
[TestProperty("Platform", "Any")]
27+
public static void ClassInitialize(TestContext testContext)
28+
{
29+
TestEnvironment.Initialize(testContext, WinUICsUWPSampleApp);
30+
}
31+
32+
[ClassCleanup]
33+
public static void ClassCleanup()
34+
{
35+
TestEnvironment.AssemblyCleanupWorker(WinUICsUWPSampleApp);
36+
}
37+
38+
[TestMethod]
39+
[TestPage("RangeSelectorTestPage")]
40+
public void SimpleTestMethod()
41+
{
42+
43+
var inputStepFrequency = new TextBlock(FindElement.ById("inputStepFrequency"));
44+
var inputMinimum = new TextBlock(FindElement.ById("inputMinimum"));
45+
var inputRangeStart = new TextBlock(FindElement.ById("inputRangeStart"));
46+
var inputRangeEnd = new TextBlock(FindElement.ById("inputRangeEnd"));
47+
var inputMaximum = new TextBlock(FindElement.ById("inputMaximum"));
48+
49+
var submitStepFrequency = new Button(FindElement.ById("submitStepFrequency"));
50+
var submitMinimum = new Button(FindElement.ById("submitMinimum"));
51+
var submitRangeStart = new Button(FindElement.ById("submitRangeStart"));
52+
var submitRangeEnd = new Button(FindElement.ById("submitRangeEnd"));
53+
var submitMaximum = new Button(FindElement.ById("submitMaximum"));
54+
var submitAll = new Button(FindElement.ById("submitAll"));
55+
56+
inputStepFrequency.SendKeys("1");
57+
inputMinimum.SendKeys("0");
58+
inputRangeStart.SendKeys("10");
59+
inputRangeEnd.SendKeys("90");
60+
inputMaximum.SendKeys("100");
61+
62+
submitAll.Click();
63+
64+
var currentStepFrequency = new TextBlock(FindElement.ById("currentStepFrequency"));
65+
var currentMinimum = new TextBlock(FindElement.ById("currentMinimum"));
66+
var currentRangeStart = new TextBlock(FindElement.ById("currentRangeStart"));
67+
var currentRangeEnd = new TextBlock(FindElement.ById("currentRangeEnd"));
68+
var currentMaximum = new TextBlock(FindElement.ById("currentMaximum"));
69+
70+
Verify.AreEqual("1", currentStepFrequency.GetText());
71+
Verify.AreEqual("0", currentMinimum.GetText());
72+
Verify.AreEqual("10", currentRangeStart.GetText());
73+
Verify.AreEqual("90", currentRangeEnd.GetText());
74+
Verify.AreEqual("100", currentMaximum.GetText());
75+
}
76+
}
77+
}
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
<Page x:Class="UITests.App.Pages.RangeSelectorTestPage"
2+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:local="using:UITests.Tests.Shared.Controls"
7+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
8+
xmlns:sys="using:System"
9+
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
10+
mc:Ignorable="d">
11+
<Grid HorizontalAlignment="Center"
12+
VerticalAlignment="Center">
13+
<Grid.RowDefinitions>
14+
<RowDefinition Height="Auto" />
15+
<RowDefinition Height="5" />
16+
<RowDefinition Height="Auto" />
17+
<RowDefinition Height="5" />
18+
<RowDefinition Height="Auto" />
19+
<RowDefinition Height="5" />
20+
<RowDefinition Height="Auto" />
21+
</Grid.RowDefinitions>
22+
<Grid.ColumnDefinitions>
23+
<ColumnDefinition MinWidth="100" />
24+
<ColumnDefinition Width="5" />
25+
<ColumnDefinition MinWidth="100" />
26+
<ColumnDefinition Width="5" />
27+
<ColumnDefinition MinWidth="100" />
28+
<ColumnDefinition Width="5" />
29+
<ColumnDefinition MinWidth="100" />
30+
<ColumnDefinition Width="5" />
31+
<ColumnDefinition MinWidth="100" />
32+
<ColumnDefinition Width="5" />
33+
<ColumnDefinition MinWidth="100" />
34+
</Grid.ColumnDefinitions>
35+
36+
<!-- Input -->
37+
<TextBox x:Name="inputStepFrequency"
38+
Grid.Row="0"
39+
Grid.Column="0"
40+
Header="Step Frequency" />
41+
<Button x:Name="submitStepFrequency"
42+
Grid.Row="2"
43+
Grid.Column="0"
44+
Click="submitStepFrequency_Click"
45+
Content="Submit" />
46+
47+
<TextBox x:Name="inputMinimum"
48+
Grid.Row="0"
49+
Grid.Column="2"
50+
Header="Minimum" />
51+
<Button x:Name="submitMinimum"
52+
Grid.Row="2"
53+
Grid.Column="2"
54+
Click="submitMinimum_Click"
55+
Content="Submit" />
56+
57+
<TextBox x:Name="inputRangeStart"
58+
Grid.Row="0"
59+
Grid.Column="4"
60+
Header="RangeStart" />
61+
<Button x:Name="submitRangeStart"
62+
Grid.Row="2"
63+
Grid.Column="4"
64+
Click="submitRangeStart_Click"
65+
Content="Submit" />
66+
67+
<TextBox x:Name="inputRangeEnd"
68+
Grid.Row="0"
69+
Grid.Column="6"
70+
Header="RangeEnd" />
71+
<Button x:Name="submitRangeEnd"
72+
Grid.Row="2"
73+
Grid.Column="6"
74+
Click="submitRangeEnd_Click"
75+
Content="Submit" />
76+
77+
<TextBox x:Name="inputMaximum"
78+
Grid.Row="0"
79+
Grid.Column="8"
80+
Header="Maximum" />
81+
<Button x:Name="submitMaximum"
82+
Grid.Row="2"
83+
Grid.Column="8"
84+
Click="submitMaximum_Click"
85+
Content="Submit" />
86+
87+
<Button x:Name="submitAll"
88+
Grid.Row="0"
89+
Grid.RowSpan="3"
90+
Grid.Column="10"
91+
Click="submitAll_Click"
92+
Content="Submit All" />
93+
94+
<controls:RangeSelector x:Name="rangeSelector"
95+
Grid.Row="4"
96+
Grid.ColumnSpan="11" />
97+
98+
<!-- Results -->
99+
<TextBlock x:Name="currentStepFrequency"
100+
Grid.Row="6"
101+
Grid.Column="0"
102+
Text="{x:Bind rangeSelector.StepFrequency, Mode=OneWay}" />
103+
104+
<TextBlock x:Name="currentMinimum"
105+
Grid.Row="6"
106+
Grid.Column="2"
107+
Text="{x:Bind rangeSelector.Minimum, Mode=OneWay}" />
108+
109+
<TextBlock x:Name="currentRangeStart"
110+
Grid.Row="6"
111+
Grid.Column="4"
112+
Text="{x:Bind rangeSelector.RangeStart, Mode=OneWay}" />
113+
114+
<TextBlock x:Name="currentRangeEnd"
115+
Grid.Row="6"
116+
Grid.Column="6"
117+
Text="{x:Bind rangeSelector.RangeEnd, Mode=OneWay}" />
118+
119+
<TextBlock x:Name="currentMaximum"
120+
Grid.Row="6"
121+
Grid.Column="8"
122+
Text="{x:Bind rangeSelector.Maximum, Mode=OneWay}" />
123+
</Grid>
124+
</Page>
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using Windows.UI.Xaml;
6+
using Windows.UI.Xaml.Controls;
7+
8+
namespace UITests.App.Pages
9+
{
10+
/// <summary>
11+
/// An empty page that can be used on its own or navigated to within a Frame.
12+
/// </summary>
13+
public sealed partial class RangeSelectorTestPage : Page
14+
{
15+
public RangeSelectorTestPage()
16+
{
17+
this.InitializeComponent();
18+
}
19+
20+
private void submitStepFrequency_Click(object sender, RoutedEventArgs e)
21+
{
22+
if(tryDoubleFromTextBox(inputStepFrequency, out var sf))
23+
{
24+
rangeSelector.StepFrequency = sf;
25+
}
26+
}
27+
28+
private void submitMinimum_Click(object sender, RoutedEventArgs e)
29+
{
30+
if(tryDoubleFromTextBox(inputMinimum, out var min))
31+
{
32+
rangeSelector.Minimum = min;
33+
}
34+
}
35+
36+
private void submitRangeStart_Click(object sender, RoutedEventArgs e)
37+
{
38+
if(tryDoubleFromTextBox(inputRangeStart, out var rStart))
39+
{
40+
rangeSelector.RangeStart = rStart;
41+
}
42+
}
43+
44+
private void submitRangeEnd_Click(object sender, RoutedEventArgs e)
45+
{
46+
if(tryDoubleFromTextBox(inputRangeEnd, out var rEnd))
47+
{
48+
rangeSelector.RangeEnd = rEnd;
49+
}
50+
}
51+
52+
private void submitMaximum_Click(object sender, RoutedEventArgs e)
53+
{
54+
if(tryDoubleFromTextBox(inputMaximum, out var max))
55+
{
56+
rangeSelector.Maximum = max;
57+
}
58+
}
59+
60+
private void submitAll_Click(object sender, RoutedEventArgs e)
61+
{
62+
if(tryDoubleFromTextBox(inputStepFrequency, out var sf)
63+
&& tryDoubleFromTextBox(inputMinimum, out var min)
64+
&& tryDoubleFromTextBox(inputRangeStart, out var rStart)
65+
&& tryDoubleFromTextBox(inputRangeEnd, out var rEnd)
66+
&& tryDoubleFromTextBox(inputMaximum, out var max))
67+
{
68+
// This order is important.
69+
// TODO (2021.04.28) - document that this order for changing these props is the most predicable.
70+
rangeSelector.Minimum = min;
71+
rangeSelector.Maximum = max;
72+
rangeSelector.StepFrequency = sf;
73+
rangeSelector.RangeStart = rStart;
74+
rangeSelector.RangeEnd = rEnd;
75+
}
76+
}
77+
78+
private bool tryDoubleFromTextBox(TextBox tbx, out double value)
79+
{
80+
if (tbx.Text is string s && double.TryParse(s, out value))
81+
{
82+
return true;
83+
}
84+
else
85+
{
86+
value = default;
87+
return false;
88+
}
89+
}
90+
}
91+
}

0 commit comments

Comments
 (0)