|
|
|
@ -218,6 +218,204 @@ namespace Avalonia.Styling.UnitTests |
|
|
|
Assert.Equal(new[] { "foodefault", "Bar" }, values); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Inactive_Values_Should_Not_Be_Made_Active_During_Style_Attach() |
|
|
|
{ |
|
|
|
using var app = UnitTestApplication.Start(TestServices.RealStyler); |
|
|
|
|
|
|
|
var root = new TestRoot |
|
|
|
{ |
|
|
|
Styles = |
|
|
|
{ |
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, "Foo"), |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, "Bar"), |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var values = new List<string>(); |
|
|
|
var target = new Class1(); |
|
|
|
|
|
|
|
target.GetObservable(Class1.FooProperty).Subscribe(x => values.Add(x)); |
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
Assert.Equal(new[] { "foodefault", "Bar" }, values); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Inactive_Bindings_Should_Not_Be_Made_Active_During_Style_Attach() |
|
|
|
{ |
|
|
|
using var app = UnitTestApplication.Start(TestServices.RealStyler); |
|
|
|
|
|
|
|
var root = new TestRoot |
|
|
|
{ |
|
|
|
Styles = |
|
|
|
{ |
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, new Binding("Foo")), |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, new Binding("Bar")), |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var values = new List<string>(); |
|
|
|
var target = new Class1 |
|
|
|
{ |
|
|
|
DataContext = new |
|
|
|
{ |
|
|
|
Foo = "Foo", |
|
|
|
Bar = "Bar", |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
target.GetObservable(Class1.FooProperty).Subscribe(x => values.Add(x)); |
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
Assert.Equal(new[] { "foodefault", "Bar" }, values); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Inactive_Values_Should_Not_Be_Made_Active_During_Style_Detach() |
|
|
|
{ |
|
|
|
using var app = UnitTestApplication.Start(TestServices.RealStyler); |
|
|
|
|
|
|
|
var root = new TestRoot |
|
|
|
{ |
|
|
|
Styles = |
|
|
|
{ |
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, "Foo"), |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, "Bar"), |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var target = new Class1(); |
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
var values = new List<string>(); |
|
|
|
target.GetObservable(Class1.FooProperty).Subscribe(x => values.Add(x)); |
|
|
|
root.Child = null; |
|
|
|
|
|
|
|
Assert.Equal(new[] { "Bar", "foodefault" }, values); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Inactive_Values_Should_Not_Be_Made_Active_During_Style_Detach_2() |
|
|
|
{ |
|
|
|
using var app = UnitTestApplication.Start(TestServices.RealStyler); |
|
|
|
|
|
|
|
var root = new TestRoot |
|
|
|
{ |
|
|
|
Styles = |
|
|
|
{ |
|
|
|
new Style(x => x.OfType<Class1>().Class("foo")) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, "Foo"), |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, "Bar"), |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var target = new Class1 { Classes = { "foo" } }; |
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
var values = new List<string>(); |
|
|
|
target.GetObservable(Class1.FooProperty).Subscribe(x => values.Add(x)); |
|
|
|
root.Child = null; |
|
|
|
|
|
|
|
Assert.Equal(new[] { "Foo", "foodefault" }, values); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Inactive_Bindings_Should_Not_Be_Made_Active_During_Style_Detach() |
|
|
|
{ |
|
|
|
using var app = UnitTestApplication.Start(TestServices.RealStyler); |
|
|
|
|
|
|
|
var root = new TestRoot |
|
|
|
{ |
|
|
|
Styles = |
|
|
|
{ |
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, new Binding("Foo")), |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
new Style(x => x.OfType<Class1>()) |
|
|
|
{ |
|
|
|
Setters = |
|
|
|
{ |
|
|
|
new Setter(Class1.FooProperty, new Binding("Bar")), |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
var target = new Class1 |
|
|
|
{ |
|
|
|
DataContext = new |
|
|
|
{ |
|
|
|
Foo = "Foo", |
|
|
|
Bar = "Bar", |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
root.Child = target; |
|
|
|
|
|
|
|
var values = new List<string>(); |
|
|
|
target.GetObservable(Class1.FooProperty).Subscribe(x => values.Add(x)); |
|
|
|
root.Child = null; |
|
|
|
|
|
|
|
Assert.Equal(new[] { "Bar", "foodefault" }, values); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Template_In_Non_Matching_Style_Is_Not_Built() |
|
|
|
{ |
|
|
|
|