1- using FluentAssertions ;
1+ using FluentAssertions ;
22using System . Collections . Generic ;
33using System . Globalization ;
44using System . Linq . Dynamic . Core . Parser ;
@@ -15,15 +15,15 @@ public static object[][] Decimals()
1515 {
1616 return new object [ ] [ ]
1717 {
18- new object [ ] { "de-DE" , "1" , 1m } ,
19- new object [ ] { "de-DE" , "-42" , - 42m } ,
20- new object [ ] { "de-DE" , "3,215" , 3.215m } ,
21- new object [ ] { "de-DE" , "3.215" , 3215m } ,
22-
23- new object [ ] { null , "1" , 1m } ,
24- new object [ ] { null , "-42" , - 42m } ,
25- new object [ ] { null , "3,215" , 3215m } ,
26- new object [ ] { null , "3.215" , 3.215m }
18+ new object [ ] { "de-DE" , "1" , 1m } ,
19+ new object [ ] { "de-DE" , "-42" , - 42m } ,
20+ new object [ ] { "de-DE" , "3,215" , 3.215m } ,
21+ new object [ ] { "de-DE" , "3.215" , 3215m } ,
22+
23+ new object [ ] { null , "1" , 1m } ,
24+ new object [ ] { null , "-42" , - 42m } ,
25+ new object [ ] { null , "3,215" , 3215m } ,
26+ new object [ ] { null , "3.215" , 3.215m }
2727 } ;
2828 }
2929
@@ -48,23 +48,23 @@ public static object[][] Floats()
4848 {
4949 return new object [ ] [ ]
5050 {
51- new object [ ] { "de-DE" , "1" , 1f } ,
52- new object [ ] { "de-DE" , "-42" , - 42f } ,
53- new object [ ] { "de-DE" , "3,215" , 3.215f } ,
54- new object [ ] { "de-DE" , "3.215" , 3215f } ,
55- new object [ ] { "de-DE" , "1,2345E-4" , 0.00012345f } ,
56- new object [ ] { "de-DE" , "1,2345e-4" , 0.00012345f } ,
57- new object [ ] { "de-DE" , "1,2345E4" , 12345d } ,
58- new object [ ] { "de-DE" , "1,2345e4" , 12345d } ,
59-
60- new object [ ] { null , "1" , 1f } ,
61- new object [ ] { null , "-42" , - 42f } ,
62- new object [ ] { null , "3,215" , 3215f } ,
63- new object [ ] { null , "3.215" , 3.215f } ,
64- new object [ ] { null , "1.2345E-4" , 0.00012345f } ,
65- new object [ ] { null , "1.2345e-4" , 0.00012345f } ,
66- new object [ ] { null , "1.2345E4" , 12345f } ,
67- new object [ ] { null , "1.2345e4" , 12345f }
51+ new object [ ] { "de-DE" , "1" , 1f } ,
52+ new object [ ] { "de-DE" , "-42" , - 42f } ,
53+ new object [ ] { "de-DE" , "3,215" , 3.215f } ,
54+ new object [ ] { "de-DE" , "3.215" , 3215f } ,
55+ new object [ ] { "de-DE" , "1,2345E-4" , 0.00012345f } ,
56+ new object [ ] { "de-DE" , "1,2345e-4" , 0.00012345f } ,
57+ new object [ ] { "de-DE" , "1,2345E4" , 12345d } ,
58+ new object [ ] { "de-DE" , "1,2345e4" , 12345d } ,
59+
60+ new object [ ] { null , "1" , 1f } ,
61+ new object [ ] { null , "-42" , - 42f } ,
62+ new object [ ] { null , "3,215" , 3215f } ,
63+ new object [ ] { null , "3.215" , 3.215f } ,
64+ new object [ ] { null , "1.2345E-4" , 0.00012345f } ,
65+ new object [ ] { null , "1.2345e-4" , 0.00012345f } ,
66+ new object [ ] { null , "1.2345E4" , 12345f } ,
67+ new object [ ] { null , "1.2345e4" , 12345f }
6868 } ;
6969 }
7070
@@ -89,23 +89,23 @@ public static IEnumerable<object[]> Doubles()
8989 {
9090 return new object [ ] [ ]
9191 {
92- new object [ ] { "de-DE" , "1" , 1d } ,
93- new object [ ] { "de-DE" , "-42" , - 42d } ,
94- new object [ ] { "de-DE" , "3,215" , 3.215d } ,
95- new object [ ] { "de-DE" , "3.215" , 3215d } ,
96- new object [ ] { "de-DE" , "1,2345E-4" , 0.00012345d } ,
97- new object [ ] { "de-DE" , "1,2345e-4" , 0.00012345d } ,
98- new object [ ] { "de-DE" , "1,2345E4" , 12345d } ,
99- new object [ ] { "de-DE" , "1,2345e4" , 12345d } ,
100-
101- new object [ ] { null , "1" , 1d } ,
102- new object [ ] { null , "-42" , - 42d } ,
103- new object [ ] { null , "3,215" , 3215d } ,
104- new object [ ] { null , "3.215" , 3.215d } ,
105- new object [ ] { null , "1.2345E-4" , 0.00012345d } ,
106- new object [ ] { null , "1.2345e-4" , 0.00012345d } ,
107- new object [ ] { null , "1.2345E4" , 12345d } ,
108- new object [ ] { null , "1.2345e4" , 12345d }
92+ new object [ ] { "de-DE" , "1" , 1d } ,
93+ new object [ ] { "de-DE" , "-42" , - 42d } ,
94+ new object [ ] { "de-DE" , "3,215" , 3.215d } ,
95+ new object [ ] { "de-DE" , "3.215" , 3215d } ,
96+ new object [ ] { "de-DE" , "1,2345E-4" , 0.00012345d } ,
97+ new object [ ] { "de-DE" , "1,2345e-4" , 0.00012345d } ,
98+ new object [ ] { "de-DE" , "1,2345E4" , 12345d } ,
99+ new object [ ] { "de-DE" , "1,2345e4" , 12345d } ,
100+
101+ new object [ ] { null , "1" , 1d } ,
102+ new object [ ] { null , "-42" , - 42d } ,
103+ new object [ ] { null , "3,215" , 3215d } ,
104+ new object [ ] { null , "3.215" , 3.215d } ,
105+ new object [ ] { null , "1.2345E-4" , 0.00012345d } ,
106+ new object [ ] { null , "1.2345e-4" , 0.00012345d } ,
107+ new object [ ] { null , "1.2345E4" , 12345d } ,
108+ new object [ ] { null , "1.2345e4" , 12345d }
109109 } ;
110110 }
111111
@@ -152,5 +152,53 @@ public void NumberParser_ParseIntegerLiteral(string text, double expected)
152152 // Assert
153153 result . Value . Should ( ) . Be ( expected ) ;
154154 }
155+
156+ [ Theory ]
157+ [ InlineData ( "42" , 'm' , 42 ) ]
158+ [ InlineData ( "-42" , 'm' , - 42 ) ]
159+ [ InlineData ( "42m" , 'm' , 42 ) ]
160+ [ InlineData ( "-42m" , 'm' , - 42 ) ]
161+ public void NumberParser_ParseDecimalLiteral ( string text , char qualifier , decimal expected )
162+ {
163+ // Arrange
164+
165+ // Act
166+ var result = new NumberParser ( _parsingConfig ) . ParseRealLiteral ( text , qualifier , true ) as ConstantExpression ;
167+
168+ // Assert
169+ result ! . Value . Should ( ) . Be ( expected ) ;
170+ }
171+
172+ [ Theory ]
173+ [ InlineData ( "42" , 'd' , 42 ) ]
174+ [ InlineData ( "-42" , 'd' , - 42 ) ]
175+ [ InlineData ( "42d" , 'd' , 42 ) ]
176+ [ InlineData ( "-42d" , 'd' , - 42 ) ]
177+ public void NumberParser_ParseDoubleLiteral ( string text , char qualifier , double expected )
178+ {
179+ // Arrange
180+
181+ // Act
182+ var result = new NumberParser ( _parsingConfig ) . ParseRealLiteral ( text , qualifier , true ) as ConstantExpression ;
183+
184+ // Assert
185+ result ! . Value . Should ( ) . Be ( expected ) ;
186+ }
187+
188+ [ Theory ]
189+ [ InlineData ( "42" , 'f' , 42 ) ]
190+ [ InlineData ( "-42" , 'f' , - 42 ) ]
191+ [ InlineData ( "42f" , 'f' , 42 ) ]
192+ [ InlineData ( "-42f" , 'f' , - 42 ) ]
193+ public void NumberParser_ParseFloatLiteral ( string text , char qualifier , float expected )
194+ {
195+ // Arrange
196+
197+ // Act
198+ var result = new NumberParser ( _parsingConfig ) . ParseRealLiteral ( text , qualifier , true ) as ConstantExpression ;
199+
200+ // Assert
201+ result ! . Value . Should ( ) . Be ( expected ) ;
202+ }
155203 }
156204}
0 commit comments