From 089408a0eeb91e1d2f41e89e2939b5f1c8d118c8 Mon Sep 17 00:00:00 2001 From: Evgeny Tvorun Date: Tue, 13 Dec 2022 11:17:15 -0800 Subject: [PATCH] Improve design type converters --- .../Core.Design/EasingDesignTypeConverter.cs | 2 + .../KeyboardDesignTypeConverter.cs | 2 + .../LayoutOptionsDesignTypeConverter.cs | 2 + .../Controls.Core.Design.UnitTests.csproj | 1 + .../DesignTypeConverterTests.cs | 80 +++++++++++++++++++ 5 files changed, 87 insertions(+) create mode 100644 src/Controls/tests/Core.Design.UnitTests/DesignTypeConverterTests.cs diff --git a/src/Controls/src/Core.Design/EasingDesignTypeConverter.cs b/src/Controls/src/Core.Design/EasingDesignTypeConverter.cs index ea1cae4a85fd..8d893b8e26fd 100644 --- a/src/Controls/src/Core.Design/EasingDesignTypeConverter.cs +++ b/src/Controls/src/Core.Design/EasingDesignTypeConverter.cs @@ -6,6 +6,8 @@ public class EasingDesignTypeConverter : KnownValuesDesignTypeConverter public EasingDesignTypeConverter() { } + protected override bool ExclusiveToKnownValues => true; + protected override string[] KnownValues => new string[] { diff --git a/src/Controls/src/Core.Design/KeyboardDesignTypeConverter.cs b/src/Controls/src/Core.Design/KeyboardDesignTypeConverter.cs index fd0905268a71..64d06c59a963 100644 --- a/src/Controls/src/Core.Design/KeyboardDesignTypeConverter.cs +++ b/src/Controls/src/Core.Design/KeyboardDesignTypeConverter.cs @@ -11,6 +11,8 @@ public KeyboardDesignTypeConverter() { } + protected override bool ExclusiveToKnownValues => true; + protected override string[] KnownValues => new[] { diff --git a/src/Controls/src/Core.Design/LayoutOptionsDesignTypeConverter.cs b/src/Controls/src/Core.Design/LayoutOptionsDesignTypeConverter.cs index 835558fdd0ed..b575f3e6a9c2 100644 --- a/src/Controls/src/Core.Design/LayoutOptionsDesignTypeConverter.cs +++ b/src/Controls/src/Core.Design/LayoutOptionsDesignTypeConverter.cs @@ -6,6 +6,8 @@ public LayoutOptionsDesignTypeConverter() { } + protected override bool ExclusiveToKnownValues => true; + protected override string[] KnownValues => new string[] { "Start", "Center", "End", "Fill", "StartAndExpand", "CenterAndExpand", "EndAndExpand", "FillAndExpand" }; } diff --git a/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj b/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj index 3bc68402e967..8f3fe7a3720e 100644 --- a/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj +++ b/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj @@ -18,6 +18,7 @@ + diff --git a/src/Controls/tests/Core.Design.UnitTests/DesignTypeConverterTests.cs b/src/Controls/tests/Core.Design.UnitTests/DesignTypeConverterTests.cs new file mode 100644 index 000000000000..b109f3ecf5c8 --- /dev/null +++ b/src/Controls/tests/Core.Design.UnitTests/DesignTypeConverterTests.cs @@ -0,0 +1,80 @@ +using Microsoft.Maui.Controls.Design; +using Xunit; + +namespace Microsoft.Maui.Controls.Core.UnitTests +{ + public class DesignTypeConverterTests + { + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData("1")] + [InlineData("Sta")] + [InlineData("START")] + public void LayoutOptionsDesignTypeConverter_Invalid(string value) + { + LayoutOptionsDesignTypeConverter converter = new LayoutOptionsDesignTypeConverter(); + bool actual = converter.IsValid(value); + Assert.False(actual); + } + + [Theory] + [InlineData("Start")] + [InlineData("End")] + [InlineData("FillAndExpand")] + public void LayoutOptionsDesignTypeConverter_Valid(string value) + { + LayoutOptionsDesignTypeConverter converter = new LayoutOptionsDesignTypeConverter(); + bool actual = converter.IsValid(value); + Assert.True(actual); + } + + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData("1")] + [InlineData("Lin")] + [InlineData("LINEAR")] + public void EasingDesignTypeConverter_Invalid(string value) + { + EasingDesignTypeConverter converter = new EasingDesignTypeConverter(); + bool actual = converter.IsValid(value); + Assert.False(actual); + } + + [Theory] + [InlineData("Linear")] + [InlineData("BounceIn")] + [InlineData("CubicOut")] + public void EasingDesignTypeConverter_Valid(string value) + { + EasingDesignTypeConverter converter = new EasingDesignTypeConverter(); + bool actual = converter.IsValid(value); + Assert.True(actual); + } + + [Theory] + [InlineData(null)] + [InlineData("")] + [InlineData("1")] + [InlineData("Tele")] + [InlineData("TELEPHONE")] + public void KeyboardDesignTypeConverter_Invalid(string value) + { + KeyboardDesignTypeConverter converter = new KeyboardDesignTypeConverter(); + bool actual = converter.IsValid(value); + Assert.False(actual); + } + + [Theory] + [InlineData("Plain")] + [InlineData("Numeric")] + [InlineData("Telephone")] + public void KeyboardDesignTypeConverter_Valid(string value) + { + KeyboardDesignTypeConverter converter = new KeyboardDesignTypeConverter(); + bool actual = converter.IsValid(value); + Assert.True(actual); + } + } +}