Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/Controls/src/Core.Design/FontSizeDesignTypeConverter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,16 @@ public FontSizeDesignTypeConverter()
protected override string[] KnownValues
=> new[] { "Default", "Micro", "Small", "Medium", "Large", "Body", "Header", "Title", "Subtitle", "Caption" };

/// <inheritdoc/>
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
=> false;

/// <inheritdoc/>
// Standard values have been marked obsolete since .NET 9, so we don’t return them
// to prevent the IDE’s auto-complete from suggesting them.
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
=> new StandardValuesCollection(Array.Empty<string>());

/// <inheritdoc/>
public override bool IsValid(ITypeDescriptorContext context, object value)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
<Compile Include="ConstraintDesignTypeConverterTests.cs" />
<Compile Include="CornerRadiusDesignTypeConverterTests.cs" />
<Compile Include="DesignTypeConverterTests.cs" />
<Compile Include="FontSizeDesignTypeConverterTests.cs" />
<Compile Include="GridLengthCollectionDesignTypeConverterTests.cs" />
<Compile Include="GridLengthDesignTypeConverterTests.cs" />
<Compile Include="ImageSourceDesignTypeConverterTests.cs" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
using Microsoft.Maui.Controls.Design;
using Xunit;

namespace Microsoft.Maui.Controls.Core.UnitTests
{
public class FontSizeDesignTypeConverterTests
{
[Fact]
public void FontSizeDesignTypeConverter_StandardValuesNotSupported()
{
FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
Assert.True(converter.CanConvertFrom(typeof(string)));

// Standard values should not be supported to prevent IDE autocomplete
// from suggesting obsolete named font size values
bool actual = converter.GetStandardValuesSupported();
Assert.False(actual);
}

[Fact]
public void FontSizeDesignTypeConverter_StandardValuesEmpty()
{
FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();

// GetStandardValues should return an empty collection
var values = converter.GetStandardValues();
Assert.Empty(values);
}

[Theory]
[InlineData("Default")]
[InlineData("Micro")]
[InlineData("Small")]
[InlineData("Medium")]
[InlineData("Large")]
[InlineData("Body")]
[InlineData("Header")]
[InlineData("Title")]
[InlineData("Subtitle")]
[InlineData("Caption")]
public void FontSizeDesignTypeConverter_NamedValuesStillValid(string value)
{
// Named values are obsolete but should still be valid for backward compatibility
FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
bool actual = converter.IsValid(value);
Assert.True(actual);
}

[Theory]
[InlineData("12")]
[InlineData("0")]
[InlineData("100")]
public void FontSizeDesignTypeConverter_NumericValuesValid(string value)
{
FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
bool actual = converter.IsValid(value);
Assert.True(actual);
}

[Theory]
[InlineData(null)]
[InlineData("")]
[InlineData(" ")]
[InlineData("foo")]
[InlineData("extra large")]
[InlineData("12px")]
public void FontSizeDesignTypeConverter_InvalidValues(string value)
{
FontSizeDesignTypeConverter converter = new FontSizeDesignTypeConverter();
bool actual = converter.IsValid(value);
Assert.False(actual);
}
}
}