diff --git a/src/System.Linq.Dynamic.Core/Parser/KeywordsHelper.cs b/src/System.Linq.Dynamic.Core/Parser/KeywordsHelper.cs index 1e816384..977aebb5 100644 --- a/src/System.Linq.Dynamic.Core/Parser/KeywordsHelper.cs +++ b/src/System.Linq.Dynamic.Core/Parser/KeywordsHelper.cs @@ -29,10 +29,10 @@ internal class KeywordsHelper : IKeywordsHelper private readonly Dictionary> _mappings; // Pre-defined Types are not IgnoreCase - private static readonly Dictionary PreDefinedTypeMapping = new(); + private static readonly Dictionary PreDefinedTypeMapping = []; // Custom DefinedTypes are not IgnoreCase - private readonly Dictionary _customTypeMapping = new(); + private readonly Dictionary _customTypeMapping = []; static KeywordsHelper() { diff --git a/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs b/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs index 4417d1a0..5ad3338d 100644 --- a/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs +++ b/test/System.Linq.Dynamic.Core.Tests/DynamicExpressionParserTests.cs @@ -82,7 +82,7 @@ public int this[int i1] get => i1 + "-" + i2; } } - + private class ComplexParseLambda1Result { public int? Age; @@ -730,7 +730,7 @@ public void DynamicExpressionParser_ParseLambda_Indexer1D() // Assert Check.That(result).Equals(4); } - + [Fact] public void DynamicExpressionParser_ParseLambda_Indexer2D() { @@ -757,7 +757,7 @@ public void DynamicExpressionParser_ParseLambda_Indexer2D() // Assert Check.That(result).Equals("3-1"); } - + [Fact] public void DynamicExpressionParser_ParseLambda_IndexerParameterMismatch() { @@ -772,11 +772,32 @@ public void DynamicExpressionParser_ParseLambda_IndexerParameterMismatch() { Expression.Parameter(typeof(ClassWithIndexers), "myObj") }; - + Assert.Throws(() => DynamicExpressionParser.ParseLambda(config, false, expressionParams, null, "myObj[3,\"1\",1]")); } + [Fact] + public void DynamicExpressionParser_ParseLambda_Int16_CaseSensitive_IsValid() + { + // Act + var lambda = DynamicExpressionParser.ParseLambda(typeof(object), null, "Int16(5)"); + var result = lambda.Compile().DynamicInvoke("x"); + + // Assert + result.Should().Be(5); + } + + [Fact] + public void DynamicExpressionParser_ParseLambda_Int16_CaseInsensitive_Throws() + { + // Act + Action act = () => DynamicExpressionParser.ParseLambda(typeof(object), null, "int16(5)"); + + // Assert + act.Should().Throw(); + } + [Fact] public void DynamicExpressionParser_ParseLambda_DuplicateParameterNames_ThrowsException() { @@ -989,7 +1010,7 @@ public void DynamicExpressionParser_ParseLambda_HexToLong(string expression, lon var parameters = Array.Empty(); // Act - var lambda = DynamicExpressionParser.ParseLambda( parameters, typeof(long), expression); + var lambda = DynamicExpressionParser.ParseLambda(parameters, typeof(long), expression); var result = lambda.Compile().DynamicInvoke(); // Assert @@ -2372,6 +2393,6 @@ public DefaultDynamicLinqCustomTypeProviderForGenericExtensionMethod() : base(Pa } public override HashSet GetCustomTypes() => - [..base.GetCustomTypes(), typeof(Methods), typeof(MethodsItemExtension)]; + [.. base.GetCustomTypes(), typeof(Methods), typeof(MethodsItemExtension)]; } } \ No newline at end of file