diff options
author | Eric Maupin <ermaup@microsoft.com> | 2019-02-20 21:22:27 +0300 |
---|---|---|
committer | Eric Maupin <ermaup@microsoft.com> | 2019-02-20 21:22:27 +0300 |
commit | 20394cf6c9d2706da77425753a1e70d1fe4f1a89 (patch) | |
tree | e8082f0edba1d5bcdaad3d8f27a2aa91dfef178a /Xamarin.PropertyEditing.Tests | |
parent | f4273f41a9a221d8baad04604138381b272f8437 (diff) |
[core] CreateInstance should bail on null returned type
Diffstat (limited to 'Xamarin.PropertyEditing.Tests')
-rw-r--r-- | Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs index ef3e438..cedf835 100644 --- a/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs +++ b/Xamarin.PropertyEditing.Tests/ObjectPropertyViewModelTests.cs @@ -256,6 +256,41 @@ namespace Xamarin.PropertyEditing.Tests Assert.That (vm.ValueType, Is.Null); } + [Test] + public void ReturnedNullTypeCancels () + { + object value = new object (); + var p = CreatePropertyMock ("prop"); + var childsubInfo = GetTypeInfo (typeof (SubChildClass)); + var editor = new MockObjectEditor (new[] { p.Object }, new Dictionary<IPropertyInfo, IReadOnlyList<ITypeInfo>> { + { + p.Object, + new[] { + GetTypeInfo (typeof(ChildClass)), + childsubInfo + } + } + }); + + var providerMock = CreateProviderMock (value, new MockObjectEditor { Target = value }); + var vm = new ObjectPropertyViewModel (new TargetPlatform (providerMock.Object), p.Object, new[] { editor }); + + var tcs = new TaskCompletionSource<ITypeInfo> (); + bool requested = false; + vm.TypeRequested += (sender, args) => { + requested = true; + args.SelectedType = tcs.Task; + }; + + Assume.That (vm.CreateInstanceCommand.CanExecute (childsubInfo), Is.True); + vm.CreateInstanceCommand.Execute (null); + Assume.That (requested, Is.True); + + tcs.SetResult (null); + + providerMock.Verify (ep => ep.CreateObjectAsync (null), Times.Never); + } + private TestContext syncContext; private Mock<IEditorProvider> CreateProviderMock (object value, IObjectEditor editor) |