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-03-23 20:18:07 +0300
committerEric Maupin <ermaup@microsoft.com>2018-03-23 20:18:07 +0300
commitc67e3f14b30d91f804937e6261ae6235b00059c9 (patch)
tree1b9982805e37846f55d11b900cfacda9d1a043e7 /Xamarin.PropertyEditing.Tests
parent1b7362132a466acd37b5841e6ce4683b1d1bc08d (diff)
[Core/Win] Add Convert to Local Value
Diffstat (limited to 'Xamarin.PropertyEditing.Tests')
-rw-r--r--Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs72
1 files changed, 72 insertions, 0 deletions
diff --git a/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs
index 29c0a18..03d5507 100644
--- a/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs
+++ b/Xamarin.PropertyEditing.Tests/PropertyViewModelTests.cs
@@ -427,6 +427,78 @@ namespace Xamarin.PropertyEditing.Tests
}
[Test]
+ public async Task ConvertToLocalValue ()
+ {
+ var value = GetNonDefaultRandomTestValue ();
+
+ var mockProperty = GetPropertyMock ();
+
+ var resource = new Resource ("name");
+
+ var resourcesMock = new Mock<IResourceProvider> ();
+ resourcesMock.Setup (rp => rp.GetResourcesAsync (new object(), mockProperty.Object, It.IsAny<CancellationToken> ())).ReturnsAsync (new[] { resource });
+
+ var editor = new MockObjectEditor (mockProperty.Object);
+ await editor.SetValueAsync (mockProperty.Object, new ValueInfo<TValue> {
+ Source = ValueSource.Resource,
+ ValueDescriptor = resource,
+ Value = value
+ });
+
+ var vm = GetViewModel (mockProperty.Object, new[] { editor });
+ vm.ResourceProvider = resourcesMock.Object;
+ Assume.That (vm.Value, Is.EqualTo (value));
+ Assume.That (vm.ValueSource, Is.EqualTo (ValueSource.Resource));
+
+ Assert.That (vm.ConvertToLocalValueCommand.CanExecute (null), Is.True);
+
+ bool changed = false;
+ vm.ConvertToLocalValueCommand.CanExecuteChanged += (o, e) => changed = true;
+ vm.ConvertToLocalValueCommand.Execute (null);
+
+ Assert.That (vm.Value, Is.EqualTo (value));
+ Assert.That (vm.ValueSource, Is.EqualTo (ValueSource.Local));
+ Assert.That (changed, Is.True, "CanExecuteChanged didn't fire"); // Converitng to local should make the command unexecutable because its now already local
+ }
+
+ [Test]
+ public async Task ConvertToLocalValueAlreadyLocal ()
+ {
+ var value = GetNonDefaultRandomTestValue ();
+
+ var mockProperty = GetPropertyMock ();
+
+ var editor = new MockObjectEditor (mockProperty.Object);
+ await editor.SetValueAsync (mockProperty.Object, new ValueInfo<TValue> {
+ Source = ValueSource.Local,
+ Value = value
+ });
+
+ var vm = GetViewModel (mockProperty.Object, new[] { editor });
+ Assume.That (vm.Value, Is.EqualTo (value));
+ Assume.That (vm.ValueSource, Is.EqualTo (ValueSource.Local));
+
+ Assert.That (vm.ConvertToLocalValueCommand.CanExecute (null), Is.False);
+ }
+
+ [Test]
+ public async Task ConvertToLocalValueUnset ()
+ {
+ var mockProperty = GetPropertyMock ();
+
+ var editor = new MockObjectEditor (mockProperty.Object);
+ await editor.SetValueAsync (mockProperty.Object, new ValueInfo<TValue> {
+ Source = ValueSource.Unset
+ });
+
+ var vm = GetViewModel (mockProperty.Object, new[] { editor });
+ Assume.That (vm.Value, Is.EqualTo (default(TValue)));
+ Assume.That (vm.ValueSource, Is.EqualTo (ValueSource.Unset));
+
+ Assert.That (vm.ConvertToLocalValueCommand.CanExecute (null), Is.False);
+ }
+
+ [Test]
[Description ("For performance reasons, we should never raise a value change when it hasn't changed")]
public async Task ValueNotChangedForSameValue ()
{