diff options
Diffstat (limited to 'Xamarin.Forms.Core.UnitTests/DependencyServiceTests.cs')
-rw-r--r-- | Xamarin.Forms.Core.UnitTests/DependencyServiceTests.cs | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/DependencyServiceTests.cs b/Xamarin.Forms.Core.UnitTests/DependencyServiceTests.cs new file mode 100644 index 00000000..30e38b62 --- /dev/null +++ b/Xamarin.Forms.Core.UnitTests/DependencyServiceTests.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using NUnit.Framework; +using Xamarin.Forms; +using Xamarin.Forms.Core.UnitTests; + +[assembly: Dependency(typeof (DependencyTestImpl))] + +namespace Xamarin.Forms.Core.UnitTests +{ + public interface IDependencyTest + { + bool Works { get; } + } + + public interface IDependencyTestRegister + { + bool Works { get; } + } + + public interface IUnsatisfied + { + bool Broken { get; } + } + + public class DependencyTestImpl : IDependencyTest + { + public bool Works { get { return true; } } + } + + public class DependencyTestRegisterImpl : IDependencyTestRegister + { + public bool Works { get { return true; } } + } + + public class DependencyTestRegisterImpl2 : IDependencyTestRegister + { + public bool Works { get { return false; } } + } + + public class DependencyServiceTests : BaseTestFixture + { + [SetUp] + public override void Setup() + { + base.Setup (); + Device.PlatformServices = new MockPlatformServices (); + } + + [TearDown] + public override void TearDown() + { + base.TearDown (); + Device.PlatformServices = null; + } + + [Test] + public void GetGlobalInstance () + { + var global = DependencyService.Get<IDependencyTest> (); + + Assert.NotNull (global); + + var secondFetch = DependencyService.Get<IDependencyTest> (); + + Assert.True (ReferenceEquals (global, secondFetch)); + } + + [Test] + public void NewInstanceIsNotGlobalInstance () + { + var global = DependencyService.Get<IDependencyTest> (); + + Assert.NotNull (global); + + var secondFetch = DependencyService.Get<IDependencyTest> (DependencyFetchTarget.NewInstance); + + Assert.False (ReferenceEquals (global, secondFetch)); + } + + [Test] + public void NewInstanceIsAlwaysNew () + { + var firstFetch = DependencyService.Get<IDependencyTest> (DependencyFetchTarget.NewInstance); + + Assert.NotNull (firstFetch); + + var secondFetch = DependencyService.Get<IDependencyTest> (DependencyFetchTarget.NewInstance); + + Assert.False (ReferenceEquals (firstFetch, secondFetch)); + } + + [Test] + public void UnsatisfiedReturnsNull () + { + Assert.Null (DependencyService.Get<IUnsatisfied> ()); + } + + [Test] + public void RegisterTypeImplementation () + { + DependencyService.Register<DependencyTestRegisterImpl> (); + var global = DependencyService.Get<DependencyTestRegisterImpl> (); + Assert.NotNull (global); + } + + + [Test] + public void RegisterInterfaceAndImplementations () + { + DependencyService.Register<IDependencyTestRegister, DependencyTestRegisterImpl2> (); + var global = DependencyService.Get<IDependencyTestRegister> (); + Assert.IsInstanceOf<DependencyTestRegisterImpl2> (global); + } + + [Test] + public void RegisterInterfaceAndOverrideImplementations () + { + DependencyService.Register<IDependencyTestRegister, DependencyTestRegisterImpl> (); + DependencyService.Register<IDependencyTestRegister, DependencyTestRegisterImpl2> (); + var global = DependencyService.Get<IDependencyTestRegister> (); + Assert.IsInstanceOf<DependencyTestRegisterImpl2> (global); + } + } +} |