/
PlatformTestFixture.cs
105 lines (92 loc) · 2.83 KB
/
PlatformTestFixture.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using NUnit.Framework;
using Windows.UI.Xaml.Controls;
using Xamarin.Forms.Platform.UWP;
namespace Xamarin.Forms.Platform.UAP.UnitTests
{
public class PlatformTestFixture
{
// Sequence for generating test cases
protected static IEnumerable<View> BasicViews
{
get
{
yield return new BoxView { };
yield return new Button { };
yield return new CheckBox { };
yield return new DatePicker { };
yield return new Editor { };
yield return new Entry { };
yield return new Frame { };
yield return new Image { };
yield return new ImageButton { };
yield return new Label { };
yield return new Picker { };
yield return new ProgressBar { };
yield return new SearchBar { };
yield return new Slider { };
yield return new Stepper { };
yield return new Switch { };
yield return new TimePicker { };
}
}
protected static TestCaseData CreateTestCase(VisualElement element)
{
// We set the element type as a category on the test so that if you
// filter by category, say, "Button", you'll get any Button test
// generated from here.
return new TestCaseData(element).SetCategory(element.GetType().Name);
}
protected IVisualElementRenderer GetRenderer(VisualElement element)
{
return element.GetOrCreateRenderer();
}
protected Control GetNativeControl(VisualElement element)
{
return GetRenderer(element).GetNativeElement() as Control;
}
protected Panel GetPanel(VisualElement element)
{
return GetRenderer(element).ContainerElement as Panel;
}
protected Border GetBorder(VisualElement element)
{
var renderer = GetRenderer(element);
var nativeElement = renderer.GetNativeElement();
return nativeElement as Border;
}
protected TextBlock GetNativeControl(Label label)
{
return GetRenderer(label).GetNativeElement() as TextBlock;
}
protected async Task<TProperty> GetControlProperty<TProperty>(Label label, Func<TextBlock, TProperty> getProperty)
{
return await Device.InvokeOnMainThreadAsync(() => {
var textBlock = GetNativeControl(label);
return getProperty(textBlock);
});
}
protected FormsButton GetNativeControl(Button button)
{
return GetRenderer(button).GetNativeElement() as FormsButton;
}
protected FormsTextBox GetNativeControl(Entry entry)
{
return GetRenderer(entry).GetNativeElement() as FormsTextBox;
}
protected FormsTextBox GetNativeControl(Editor editor)
{
return GetRenderer(editor).GetNativeElement() as FormsTextBox;
}
protected async Task<TProperty> GetRendererProperty<TProperty>(View view,
Func<IVisualElementRenderer, TProperty> getProperty)
{
return await Device.InvokeOnMainThreadAsync(() => {
var renderer = GetRenderer(view);
return getProperty(renderer);
});
}
}
}