From 17fdde66d94155fc62a034fa6658995bef6fd6e5 Mon Sep 17 00:00:00 2001 From: Jason Smith Date: Tue, 22 Mar 2016 13:02:25 -0700 Subject: Initial import --- Xamarin.Forms.Core.UnitTests/MotionTests.cs | 118 ++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Xamarin.Forms.Core.UnitTests/MotionTests.cs (limited to 'Xamarin.Forms.Core.UnitTests/MotionTests.cs') diff --git a/Xamarin.Forms.Core.UnitTests/MotionTests.cs b/Xamarin.Forms.Core.UnitTests/MotionTests.cs new file mode 100644 index 00000000..acb764d7 --- /dev/null +++ b/Xamarin.Forms.Core.UnitTests/MotionTests.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; + +namespace Xamarin.Forms.Core.UnitTests +{ + internal class BlockingTicker : Ticker + { + bool enabled; + + protected override void EnableTimer () + { + enabled = true; + + while (enabled) { + SendSignals (16); + } + } + + protected override void DisableTimer () + { + enabled = false; + } + } + + [TestFixture] + public class MotionTests : BaseTestFixture + { + [TestFixtureSetUp] + public void Init () + { + Device.PlatformServices = new MockPlatformServices (); + Ticker.Default = new BlockingTicker (); + } + + [TestFixtureTearDown] + public void End () + { + Device.PlatformServices = null; + Ticker.Default = null; + } + + [Test] + public void TestLinearTween () + { + var tweener = new Tweener (250); + + double value = 0; + int updates = 0; + tweener.ValueUpdated += (sender, args) => { + Assert.That (tweener.Value, Is.GreaterThanOrEqualTo (value)); + value = tweener.Value; + updates++; + }; + tweener.Start (); + + Assert.That (updates, Is.GreaterThanOrEqualTo (10)); + } + + [Test] + public void ThrowsWithNullCallback () + { + Assert.Throws (() => new View().Animate ("Test", (Action) null)); + } + + [Test] + public void ThrowsWithNullTransform () + { + Assert.Throws (() => new View().Animate ("Test", null, f => { })); + } + + [Test] + public void ThrowsWithNullSelf () + { + Assert.Throws (() => AnimationExtensions.Animate (null, "Foo", d => (float)d, f => { })); + } + + [Test] + public void Kinetic () + { + var view = new View (); + var resultList = new List> (); + view.AnimateKinetic ( + name: "Kinetics", + callback: (distance, velocity) => { + resultList.Add (new Tuple (distance, velocity)); + return true; + }, + velocity: 100, + drag: 1); + + Assert.That (resultList, Is.Not.Empty); + int checkVelo = 100; + int dragStep = 16; + + foreach (var item in resultList) { + checkVelo -= dragStep; + Assert.AreEqual (checkVelo, item.Item2); + Assert.AreEqual (checkVelo * dragStep, item.Item1); + } + } + + [Test] + public void KineticFinished () + { + var view = new View (); + bool finished = false; + view.AnimateKinetic ( + name: "Kinetics", + callback: (distance, velocity) => true, + velocity: 100, + drag: 1, + finished: () => finished = true); + + Assert.True (finished); + } + } +} -- cgit v1.2.3