From 0b971c5ca151bebe05ef81496556e63a55fcee43 Mon Sep 17 00:00:00 2001 From: Eric Maupin Date: Thu, 5 Jul 2018 17:09:27 -0400 Subject: [Core] Add ValueConverter --- .../AddValueConverterViewModelTests.cs | 83 ++++++++++++++++++++++ .../MockControls/MockResourceProvider.cs | 7 +- .../Xamarin.PropertyEditing.Tests.csproj | 1 + 3 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 Xamarin.PropertyEditing.Tests/AddValueConverterViewModelTests.cs (limited to 'Xamarin.PropertyEditing.Tests') diff --git a/Xamarin.PropertyEditing.Tests/AddValueConverterViewModelTests.cs b/Xamarin.PropertyEditing.Tests/AddValueConverterViewModelTests.cs new file mode 100644 index 0000000..61be5c5 --- /dev/null +++ b/Xamarin.PropertyEditing.Tests/AddValueConverterViewModelTests.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Moq; +using NUnit.Framework; +using NUnit.Framework.Internal; +using Xamarin.PropertyEditing.ViewModels; + +namespace Xamarin.PropertyEditing.Tests +{ + [TestFixture] + public class AddValueConverterViewModelTests + { + [SetUp] + public void Setup () + { + this.syncContext = new AsyncSynchronizationContext (); + SynchronizationContext.SetSynchronizationContext (this.syncContext); + } + + [TearDown] + public void TearDown () + { + this.syncContext.WaitForPendingOperationsToComplete (); + SynchronizationContext.SetSynchronizationContext (null); + } + + [Test] + public void ConverterNameSuggestedWithProvider () + { + object target = new object(); + + var editorProvider = new Mock (); + + var type = new TypeInfo (new AssemblyInfo ("Assembly", false), "Namespace", "Name"); + + const string suggested = "SuggestedName"; + + var resourcesProvider = new Mock (); + resourcesProvider.Setup (rp => rp.SuggestResourceNameAsync (It.IsAny> (), type)) + .ReturnsAsync (suggested); + + var types = new AssignableTypesResult (new [] { type }); + var vm = new AddValueConverterViewModel ( + new TargetPlatform (editorProvider.Object, resourcesProvider.Object), target, + new AsyncValue>> ( + Task.FromResult (types.GetTypeTree ()))); + + Assume.That (vm.ConverterName, Is.Null); + + vm.SelectedType = type; + + Assert.That (vm.ConverterName, Is.EqualTo (suggested)); + } + + [Test] + public void ConverterNameSuggestedWithoutProvider () + { + object target = new object (); + + var editorProvider = new Mock (); + + var type = new TypeInfo (new AssemblyInfo ("Assembly", false), "Namespace", "Name"); + + var types = new AssignableTypesResult (new[] { type }); + var vm = new AddValueConverterViewModel ( + new TargetPlatform (editorProvider.Object), target, + new AsyncValue>> ( + Task.FromResult (types.GetTypeTree ()))); + + Assume.That (vm.ConverterName, Is.Null); + + vm.SelectedType = type; + + Assert.That (vm.ConverterName, Is.EqualTo (type.Name)); + } + + private AsyncSynchronizationContext syncContext; + } +} diff --git a/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs b/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs index 60e0532..cadded8 100644 --- a/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs +++ b/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs @@ -58,11 +58,16 @@ namespace Xamarin.PropertyEditing.Tests } public Task SuggestResourceNameAsync (IReadOnlyCollection targets, IPropertyInfo property) + { + return SuggestResourceNameAsync (targets, property.RealType); + } + + public Task SuggestResourceNameAsync (IReadOnlyCollection targets, ITypeInfo resourceType) { int i = 1; string key; do { - key = property.Type.Name + i++; + key = resourceType.Name + i++; } while (this.resources[ApplicationResourcesSource].Any (r => r.Name == key)); return Task.FromResult (key); diff --git a/Xamarin.PropertyEditing.Tests/Xamarin.PropertyEditing.Tests.csproj b/Xamarin.PropertyEditing.Tests/Xamarin.PropertyEditing.Tests.csproj index 10e1eda..ddcdd7d 100644 --- a/Xamarin.PropertyEditing.Tests/Xamarin.PropertyEditing.Tests.csproj +++ b/Xamarin.PropertyEditing.Tests/Xamarin.PropertyEditing.Tests.csproj @@ -57,6 +57,7 @@ + -- cgit v1.2.3