From 3241fae11d6804268d1f67545e9d9eeb42f371e7 Mon Sep 17 00:00:00 2001 From: Stephane Delcroix Date: Fri, 10 Feb 2017 11:07:00 +0100 Subject: Xaml empty service provider (#736) * [Xaml] AcceptEmptyServiceProvider * [XamlC] AcceptEmptyServiceProvider * docs --- .../AcceptEmptyServiceProvider.xaml | 6 +++ .../AcceptEmptyServiceProvider.xaml.cs | 61 ++++++++++++++++++++++ .../Xamarin.Forms.Xaml.UnitTests.csproj | 7 +++ 3 files changed, 74 insertions(+) create mode 100644 Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml create mode 100644 Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml.cs (limited to 'Xamarin.Forms.Xaml.UnitTests') diff --git a/Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml b/Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml new file mode 100644 index 00000000..b39bd287 --- /dev/null +++ b/Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml.cs b/Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml.cs new file mode 100644 index 00000000..611cb36e --- /dev/null +++ b/Xamarin.Forms.Xaml.UnitTests/AcceptEmptyServiceProvider.xaml.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using NUnit.Framework; +using Xamarin.Forms; +using Xamarin.Forms.Core.UnitTests; + +namespace Xamarin.Forms.Xaml.UnitTests +{ + [AcceptEmptyServiceProvider] + public class FooExtension : IMarkupExtension + { + public IServiceProvider ProvideValue(IServiceProvider serviceProvider) + { + return serviceProvider; + } + + object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider) + { + return (this as IMarkupExtension).ProvideValue(serviceProvider); + } + } + + public partial class AcceptEmptyServiceProvider : ContentPage + { + public AcceptEmptyServiceProvider() + { + InitializeComponent(); + } + + public AcceptEmptyServiceProvider(bool useCompiledXaml) + { + //this stub will be replaced at compile time + } + + public IServiceProvider ServiceProvider { get; set; } + + [TestFixture] + class Tests + { + [SetUp] + public void Setup() + { + Device.PlatformServices = new MockPlatformServices(); + } + + [TearDown] + public void TearDown() + { + Device.PlatformServices = null; + } + + [TestCase(true)] + [TestCase(false)] + public void ServiceProviderIsNullOnAttributedExtensions(bool useCompiledXaml) + { + var p = new AcceptEmptyServiceProvider(useCompiledXaml); + Assert.IsNull(p.ServiceProvider); + } + } + } +} diff --git a/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj b/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj index 4b3e5c86..90bab284 100644 --- a/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj +++ b/Xamarin.Forms.Xaml.UnitTests/Xamarin.Forms.Xaml.UnitTests.csproj @@ -441,6 +441,10 @@ Bz44216.xaml + AcceptEmptyServiceProvider.xaml + + + AcceptEmptyServiceProvider.xaml @@ -805,6 +809,9 @@ MSBuild:UpdateDesignTimeXaml + + MSBuild:UpdateDesignTimeXaml + -- cgit v1.2.3