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
|
using System;
using System.Collections.Generic;
using NUnit.Framework;
using Xamarin.Forms;
using Xamarin.Forms.Core.UnitTests;
namespace Xamarin.Forms.Xaml.UnitTests
{
public class Bz54334App : Application
{
bool daymode = true;
public Bz54334App(bool useCompiledXaml)
{
Resources = new ResourceDictionary{
new Style(typeof(Label)) {
Setters = {
new Setter {Property = Label.TextColorProperty, Value=Color.Blue}
}
}
};
MainPage = new Bz54334(useCompiledXaml);
MessagingCenter.Subscribe<ContentPage>(this, "ChangeTheme", (s) => {
ToggleTheme();
});
}
void ToggleTheme()
{
Resources = daymode ? new ResourceDictionary{
new Style(typeof(Label)) {
Setters = {
new Setter {Property = Label.TextColorProperty, Value=Color.Red}
}
}
} : new ResourceDictionary{
new Style(typeof(Label)) {
Setters = {
new Setter {Property = Label.TextColorProperty, Value=Color.Blue}
}
}
};
daymode = !daymode;
}
}
public partial class Bz54334 : ContentPage
{
public Bz54334()
{
InitializeComponent();
}
public Bz54334(bool useCompiledXaml)
{
//this stub will be replaced at compile time
}
[TestFixture]
class Tests
{
[SetUp]
public void Setup()
{
Device.PlatformServices = new MockPlatformServices();
}
[TearDown]
public void TearDown()
{
Application.Current = null;
Device.PlatformServices = null;
}
[TestCase(true)]
[TestCase(false)]
public void Foo(bool useCompiledXaml)
{
var app = Application.Current = new Bz54334App(useCompiledXaml);
var page = app.MainPage as Bz54334;
var l0 = page.label;
var l1 = page.themedLabel;
Assert.That(l0.TextColor, Is.EqualTo(Color.Black));
Assert.That(l1.TextColor, Is.EqualTo(Color.Blue));
MessagingCenter.Send<ContentPage>(page, "ChangeTheme");
Assert.That(l0.TextColor, Is.EqualTo(Color.Black));
Assert.That(l1.TextColor, Is.EqualTo(Color.Red));
MessagingCenter.Send<ContentPage>(page, "ChangeTheme");
Assert.That(l0.TextColor, Is.EqualTo(Color.Black));
Assert.That(l1.TextColor, Is.EqualTo(Color.Blue));
}
}
}
}
|