|
|
@@ -1,5 +1,7 @@
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using Avalonia.Animation;
|
|
|
+using Avalonia.Base.UnitTests.Animation;
|
|
|
using Avalonia.Controls;
|
|
|
using Avalonia.Controls.Templates;
|
|
|
using Avalonia.Data;
|
|
|
@@ -794,6 +796,56 @@ namespace Avalonia.Base.UnitTests.Styling
|
|
|
Assert.Throws<InvalidOperationException>(() => parent.Children.Add(nested));
|
|
|
}
|
|
|
|
|
|
+ [Fact]
|
|
|
+ public void Animations_Should_Be_Activated_And_Deactivated()
|
|
|
+ {
|
|
|
+ Style style = new Style(x => x.OfType<Class1>().Class("foo"))
|
|
|
+ {
|
|
|
+ Animations =
|
|
|
+ {
|
|
|
+ new Avalonia.Animation.Animation
|
|
|
+ {
|
|
|
+ Duration = TimeSpan.FromSeconds(1),
|
|
|
+ Children =
|
|
|
+ {
|
|
|
+ new KeyFrame
|
|
|
+ {
|
|
|
+ Setters =
|
|
|
+ {
|
|
|
+ new Setter { Property = Class1.DoubleProperty, Value = 5.0 }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ new KeyFrame
|
|
|
+ {
|
|
|
+ Setters =
|
|
|
+ {
|
|
|
+ new Setter { Property = Class1.DoubleProperty, Value = 10.0 }
|
|
|
+ },
|
|
|
+ Cue = new Cue(1d)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var clock = new TestClock();
|
|
|
+ var target = new Class1 { Clock = clock };
|
|
|
+
|
|
|
+ style.TryAttach(target, null);
|
|
|
+
|
|
|
+ Assert.Equal(0.0, target.Double);
|
|
|
+
|
|
|
+ target.Classes.Add("foo");
|
|
|
+ clock.Step(TimeSpan.Zero);
|
|
|
+ Assert.Equal(5.0, target.Double);
|
|
|
+
|
|
|
+ clock.Step(TimeSpan.FromSeconds(0.5));
|
|
|
+ Assert.Equal(7.5, target.Double);
|
|
|
+
|
|
|
+ target.Classes.Remove("foo");
|
|
|
+ Assert.Equal(0.0, target.Double);
|
|
|
+ }
|
|
|
+
|
|
|
private class Class1 : Control
|
|
|
{
|
|
|
public static readonly StyledProperty<string> FooProperty =
|
|
|
@@ -802,6 +854,9 @@ namespace Avalonia.Base.UnitTests.Styling
|
|
|
public static readonly StyledProperty<Class1> ChildProperty =
|
|
|
AvaloniaProperty.Register<Class1, Class1>(nameof(Child));
|
|
|
|
|
|
+ public static readonly StyledProperty<double> DoubleProperty =
|
|
|
+ AvaloniaProperty.Register<Class1, double>(nameof(Double));
|
|
|
+
|
|
|
public string Foo
|
|
|
{
|
|
|
get { return GetValue(FooProperty); }
|
|
|
@@ -814,6 +869,12 @@ namespace Avalonia.Base.UnitTests.Styling
|
|
|
set => SetValue(ChildProperty, value);
|
|
|
}
|
|
|
|
|
|
+ public double Double
|
|
|
+ {
|
|
|
+ get => GetValue(DoubleProperty);
|
|
|
+ set => SetValue(DoubleProperty, value);
|
|
|
+ }
|
|
|
+
|
|
|
protected override Size MeasureOverride(Size availableSize)
|
|
|
{
|
|
|
throw new NotImplementedException();
|