Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Maupin <ermaup@microsoft.com>2018-07-06 00:09:27 +0300
committerEric Maupin <ermaup@microsoft.com>2018-07-19 00:20:56 +0300
commit0b971c5ca151bebe05ef81496556e63a55fcee43 (patch)
tree53f76c5eeaf647fe24a9af512e1124a452273cf9 /Xamarin.PropertyEditing.Tests
parent1f19f945eceaa30a3259b0117d910db091d739e5 (diff)
[Core] Add ValueConverter
Diffstat (limited to 'Xamarin.PropertyEditing.Tests')
-rw-r--r--Xamarin.PropertyEditing.Tests/AddValueConverterViewModelTests.cs83
-rw-r--r--Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs7
-rw-r--r--Xamarin.PropertyEditing.Tests/Xamarin.PropertyEditing.Tests.csproj1
3 files changed, 90 insertions, 1 deletions
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<IEditorProvider> ();
+
+ var type = new TypeInfo (new AssemblyInfo ("Assembly", false), "Namespace", "Name");
+
+ const string suggested = "SuggestedName";
+
+ var resourcesProvider = new Mock<IResourceProvider> ();
+ resourcesProvider.Setup (rp => rp.SuggestResourceNameAsync (It.IsAny<IReadOnlyCollection<object>> (), type))
+ .ReturnsAsync (suggested);
+
+ var types = new AssignableTypesResult (new [] { type });
+ var vm = new AddValueConverterViewModel (
+ new TargetPlatform (editorProvider.Object, resourcesProvider.Object), target,
+ new AsyncValue<IReadOnlyDictionary<IAssemblyInfo, ILookup<string, ITypeInfo>>> (
+ 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<IEditorProvider> ();
+
+ 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<IReadOnlyDictionary<IAssemblyInfo, ILookup<string, ITypeInfo>>> (
+ 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
@@ -59,10 +59,15 @@ namespace Xamarin.PropertyEditing.Tests
public Task<string> SuggestResourceNameAsync (IReadOnlyCollection<object> targets, IPropertyInfo property)
{
+ return SuggestResourceNameAsync (targets, property.RealType);
+ }
+
+ public Task<string> SuggestResourceNameAsync (IReadOnlyCollection<object> 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 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
+ <Compile Include="AddValueConverterViewModelTests.cs" />
<Compile Include="AsyncSynchronizationContext.cs" />
<Compile Include="AsyncValueTests.cs" />
<Compile Include="AsyncWorkQueueTests.cs" />