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-09-17 21:01:03 +0300
committerEric Maupin <ermaup@microsoft.com>2018-09-18 00:16:59 +0300
commit02f43060012c53246f0bb5cd848b96e45bdc59ef (patch)
tree605dff35518d6963f908ed2aee9e1836d832d2de /Xamarin.PropertyEditing.Tests
parent6988236fac0452757dca56b4e472d96d32e64f8d (diff)
[Core] If unconstrained, respect ValueDescriptor
The placement of this is important. Since the value type is likely an enum, it's not going to have an out of bounds default() value. So, despite only setting the ValueDescriptor, Value will still look like a valid value, so ValueDescriptor takes presedence.
Diffstat (limited to 'Xamarin.PropertyEditing.Tests')
-rw-r--r--Xamarin.PropertyEditing.Tests/PredefinedValuesViewModelTests.cs65
1 files changed, 50 insertions, 15 deletions
diff --git a/Xamarin.PropertyEditing.Tests/PredefinedValuesViewModelTests.cs b/Xamarin.PropertyEditing.Tests/PredefinedValuesViewModelTests.cs
index bb33343..f62b7d6 100644
--- a/Xamarin.PropertyEditing.Tests/PredefinedValuesViewModelTests.cs
+++ b/Xamarin.PropertyEditing.Tests/PredefinedValuesViewModelTests.cs
@@ -270,14 +270,38 @@ namespace Xamarin.PropertyEditing.Tests
[TestFixture]
internal class UnconstrainedPredefinedViewModelTests
- : PredefinedValuesViewModelTests<string>
+ : PredefinedValuesViewModelTests<int>
{
[Test]
+ public async Task ValueNameRepresentsValueDescriptor ()
+ {
+ var value = GetNonDefaultRandomTestValue ();
+
+ var property = GetPropertyMock ();
+ var predefined = property.As<IHavePredefinedValues<int>> ();
+ predefined.SetupGet (p => p.PredefinedValues).Returns (new Dictionary<string, int> {
+ { "Value", 0 },
+ });
+ predefined.SetupGet (p => p.IsConstrainedToPredefined).Returns (false);
+
+ var outOfBounds = "random";
+
+ var editor = GetBasicEditor (property.Object);
+ await editor.SetValueAsync (property.Object, new ValueInfo<int> {
+ Source = ValueSource.Local,
+ ValueDescriptor = outOfBounds
+ });
+
+ var vm = GetViewModel (property.Object, new[] { editor });
+ Assert.That (vm.ValueName, Is.EqualTo (outOfBounds));
+ }
+
+ [Test]
public void ValueDescriptorForUnconstrained ()
{
var property = GetPropertyMock ();
- var predefined = property.As<IHavePredefinedValues<string>> ();
- predefined.SetupGet (p => p.PredefinedValues).Returns (new Dictionary<string, string> {
+ var predefined = property.As<IHavePredefinedValues<int>> ();
+ predefined.SetupGet (p => p.PredefinedValues).Returns (new Dictionary<string, int> {
{ "Value", GetNonDefaultRandomTestValue () },
});
predefined.SetupGet (p => p.IsConstrainedToPredefined).Returns (false);
@@ -289,7 +313,7 @@ namespace Xamarin.PropertyEditing.Tests
vm.ValueName = "test";
- var info = editor.values[property.Object] as ValueInfo<string>;
+ var info = editor.values[property.Object] as ValueInfo<int>;
Assert.That (info, Is.Not.Null);
Assert.That (info.ValueDescriptor, Is.EqualTo ("test"));
Assert.That (info.Source, Is.EqualTo (ValueSource.Local));
@@ -300,8 +324,8 @@ namespace Xamarin.PropertyEditing.Tests
public void ValueDescriptorEmptyNotNullUnconstrained ()
{
var property = GetPropertyMock ();
- var predefined = property.As<IHavePredefinedValues<string>> ();
- predefined.SetupGet (p => p.PredefinedValues).Returns (new Dictionary<string, string> {
+ var predefined = property.As<IHavePredefinedValues<int>> ();
+ predefined.SetupGet (p => p.PredefinedValues).Returns (new Dictionary<string, int> {
{ "Value", GetNonDefaultRandomTestValue () },
});
predefined.SetupGet (p => p.IsConstrainedToPredefined).Returns (false);
@@ -314,28 +338,39 @@ namespace Xamarin.PropertyEditing.Tests
vm.ValueName = "test";
vm.ValueName = null;
- var info = editor.values[property.Object] as ValueInfo<string>;
+ var info = editor.values[property.Object] as ValueInfo<int>;
Assert.That (info, Is.Not.Null);
Assert.That (info.ValueDescriptor, Is.EqualTo (String.Empty));
Assert.That (info.Source, Is.EqualTo (ValueSource.Local));
}
- protected override string GetRandomTestValue (Random rand)
+ protected override int GetRandomTestValue (Random rand)
{
- string[] names = Enum.GetNames (typeof(PredefinedEnumTest));
- int index = rand.Next (0, names.Length);
- return names[index];
+ int[] values = (int[])Enum.GetValues (typeof(PredefinedEnumTest));
+ int index = rand.Next (0, values.Length);
+ return values[index];
}
- protected override PredefinedValuesViewModel<string> GetViewModel (TargetPlatform platform, IPropertyInfo property, IEnumerable<IObjectEditor> editors)
+ protected override PredefinedValuesViewModel<int> GetViewModel (TargetPlatform platform, IPropertyInfo property, IEnumerable<IObjectEditor> editors)
{
- return new PredefinedValuesViewModel<string> (platform, property, editors);
+ return new PredefinedValuesViewModel<int> (platform, property, editors);
}
protected override bool IsConstrained => false;
- protected override IReadOnlyDictionary<string, string> Values =>
- Enum.GetNames (typeof(PredefinedEnumTest)).ToDictionary (s => s, s => s);
+ protected override IReadOnlyDictionary<string, int> Values
+ {
+ get
+ {
+ string[] names = Enum.GetNames (typeof (PredefinedEnumTest));
+ int[] values = (int[])Enum.GetValues (typeof(PredefinedEnumTest));
+ var dict = new Dictionary<string, int> ();
+ for (int i = 0; i < names.Length; i++)
+ dict.Add (names[i], values[i]);
+
+ return dict;
+ }
+ }
}
[TestFixture]