diff options
author | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 13:02:25 -0700 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 16:13:41 -0700 |
commit | 17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch) | |
tree | b5e5073a2a7b15cdbe826faa5c763e270a505729 /Xamarin.Forms.Core.UnitTests/MotionTests.cs | |
download | xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2 xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip |
Initial import
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/MotionTests.cs')
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/MotionTests.cs | 118 |
1 files changed, 118 insertions, 0 deletions
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<ArgumentNullException> (() => new View().Animate ("Test", (Action<double>) null)); + } + + [Test] + public void ThrowsWithNullTransform () + { + Assert.Throws<ArgumentNullException> (() => new View().Animate<float> ("Test", null, f => { })); + } + + [Test] + public void ThrowsWithNullSelf () + { + Assert.Throws<ArgumentNullException> (() => AnimationExtensions.Animate (null, "Foo", d => (float)d, f => { })); + } + + [Test] + public void Kinetic () + { + var view = new View (); + var resultList = new List<Tuple<double, double>> (); + view.AnimateKinetic ( + name: "Kinetics", + callback: (distance, velocity) => { + resultList.Add (new Tuple<double, double> (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); + } + } +} |