@@ -13,91 +13,156 @@ namespace SixLabors.ImageSharp.Web.Tests.Commands
1313{
1414 public class CommandParserTests
1515 {
16- public static TheoryData < object , string > IntegralValues = new TheoryData < object , string >
16+ private static readonly CultureInfo Invariant = CultureInfo . InvariantCulture ;
17+ private static readonly CultureInfo Danish = new CultureInfo ( "da-DK" ) ;
18+ private const double Pi = 3.14159265358979 ;
19+ private static readonly string PiStringInvariant = Pi . ToString ( CultureInfo . InvariantCulture ) ;
20+ private static readonly string PiStringDanish = Pi . ToString ( Danish ) ;
21+ private static readonly double RoundedPi = Math . Round ( Pi , MidpointRounding . AwayFromZero ) ;
22+
23+ public static TheoryData < object , string , CultureInfo > IntegralValuesInvariant
24+ = new TheoryData < object , string , CultureInfo >
1725 {
18- { ( sbyte ) 1 , "1" } ,
19- { ( byte ) 1 , "1" } ,
20- { ( short ) 1 , "1" } ,
21- { ( ushort ) 1 , "1" } ,
22- { 1 , "1" } ,
23- { 1U , "1" } ,
24- { 1L , "1" } ,
25- { 1UL , "1" } ,
26- { 1F , "1" } ,
27- { 1D , "1" } ,
28- { 1M , "1" } ,
26+ { ( sbyte ) 1 , "1" , Invariant } ,
27+ { ( byte ) 1 , "1" , Invariant } ,
28+ { ( short ) 1 , "1" , Invariant } ,
29+ { ( ushort ) 1 , "1" , Invariant } ,
30+ { 1 , "1" , Invariant } ,
31+ { 1U , "1" , Invariant } ,
32+ { 1L , "1" , Invariant } ,
33+ { 1UL , "1" , Invariant } ,
34+ { 1F , "1" , Invariant } ,
35+ { 1D , "1" , Invariant } ,
36+ { 1M , "1" , Invariant } ,
2937 } ;
3038
31- private const double Pi = 3.14159265358979 ;
32- private static readonly string PiString = Pi . ToString ( CultureInfo . InvariantCulture ) ;
33- private static readonly double RoundedPi = Math . Round ( Pi , MidpointRounding . AwayFromZero ) ;
39+ public static TheoryData < object , string , CultureInfo > IntegralValuesDanish
40+ = new TheoryData < object , string , CultureInfo >
41+ {
42+ { ( sbyte ) 1 , "1" , Danish } ,
43+ { ( byte ) 1 , "1" , Danish } ,
44+ { ( short ) 1 , "1" , Danish } ,
45+ { ( ushort ) 1 , "1" , Danish } ,
46+ { 1 , "1" , Danish } ,
47+ { 1U , "1" , Danish } ,
48+ { 1L , "1" , Danish } ,
49+ { 1UL , "1" , Danish } ,
50+ { 1F , "1" , Danish } ,
51+ { 1D , "1" , Danish } ,
52+ { 1M , "1" , Danish } ,
53+ } ;
54+
55+ public static TheoryData < object , string , CultureInfo > RealValuesInvariant
56+ = new TheoryData < object , string , CultureInfo >
57+ {
58+ { ( sbyte ) RoundedPi , PiStringInvariant , Invariant } ,
59+ { ( byte ) RoundedPi , PiStringInvariant , Invariant } ,
60+ { ( short ) RoundedPi , PiStringInvariant , Invariant } ,
61+ { ( ushort ) RoundedPi , PiStringInvariant , Invariant } ,
62+ { ( int ) RoundedPi , PiStringInvariant , Invariant } ,
63+ { ( uint ) RoundedPi , PiStringInvariant , Invariant } ,
64+ { ( long ) RoundedPi , PiStringInvariant , Invariant } ,
65+ { ( ulong ) RoundedPi , PiStringInvariant , Invariant } ,
66+ { ( float ) Pi , PiStringInvariant , Invariant } ,
67+ { ( double ) Pi , PiStringInvariant , Invariant } ,
68+ { ( decimal ) Pi , PiStringInvariant , Invariant } ,
69+ } ;
70+
71+ public static TheoryData < object , string , CultureInfo > RealValuesDanish
72+ = new TheoryData < object , string , CultureInfo >
73+ {
74+ { ( sbyte ) RoundedPi , PiStringDanish , Danish } ,
75+ { ( byte ) RoundedPi , PiStringDanish , Danish } ,
76+ { ( short ) RoundedPi , PiStringDanish , Danish } ,
77+ { ( ushort ) RoundedPi , PiStringDanish , Danish } ,
78+ { ( int ) RoundedPi , PiStringDanish , Danish } ,
79+ { ( uint ) RoundedPi , PiStringDanish , Danish } ,
80+ { ( long ) RoundedPi , PiStringDanish , Danish } ,
81+ { ( ulong ) RoundedPi , PiStringDanish , Danish } ,
82+ { ( float ) Pi , PiStringDanish , Danish } ,
83+ { ( double ) Pi , PiStringDanish , Danish } ,
84+ { ( decimal ) Pi , PiStringDanish , Danish } ,
85+ } ;
86+
87+ public static TheoryData < ResizeMode , string , CultureInfo > EnumValues
88+ = new TheoryData < ResizeMode , string , CultureInfo >
89+ {
90+ { ResizeMode . Max , "max" , Invariant } ,
91+ { ResizeMode . Crop , "this is not, an enum value" , Invariant } , // Unknown returns default
92+ } ;
3493
35- public static TheoryData < object , string > RealValues = new TheoryData < object , string >
94+ public static TheoryData < int [ ] , string , CultureInfo > IntegralArrays
95+ = new TheoryData < int [ ] , string , CultureInfo >
3696 {
37- { ( sbyte ) RoundedPi , PiString } ,
38- { ( byte ) RoundedPi , PiString } ,
39- { ( short ) RoundedPi , PiString } ,
40- { ( ushort ) RoundedPi , PiString } ,
41- { ( int ) RoundedPi , PiString } ,
42- { ( uint ) RoundedPi , PiString } ,
43- { ( long ) RoundedPi , PiString } ,
44- { ( ulong ) RoundedPi , PiString } ,
45- { ( float ) Pi , PiString } ,
46- { ( double ) Pi , PiString } ,
47- { ( decimal ) Pi , PiString } ,
97+ { new [ ] { 1 , 2 , 3 , 4 } , "1,2,3,4" , Invariant } ,
4898 } ;
4999
50- public static TheoryData < ResizeMode , string > EnumValues = new TheoryData < ResizeMode , string >
100+ public static TheoryData < float [ ] , string , CultureInfo > RealArraysInvariant
101+ = new TheoryData < float [ ] , string , CultureInfo >
51102 {
52- { ResizeMode . Max , "max" } ,
53- { ResizeMode . Crop , "this is not, an enum value" } , // Unknown returns default
103+ { new [ ] { 1.667F , 2.667F , 3.667F , 4.667F } , "1.667,2.667,3.667,4.667" , Invariant } ,
54104 } ;
55105
56- public static TheoryData < int [ ] , string > IntegralArrays = new TheoryData < int [ ] , string >
106+ public static TheoryData < float [ ] , string , CultureInfo > RealArraysDanish
107+ = new TheoryData < float [ ] , string , CultureInfo >
57108 {
58- { new [ ] { 1 , 2 , 3 , 4 } , "1,2,3,4" } ,
109+ { new [ ] { 1.667F , 2.667F , 3.667F , 4.667F } , "1,667;2,667;3,667;4,667" , Danish } ,
59110 } ;
60111
61- public static TheoryData < float [ ] , string > RealArrays = new TheoryData < float [ ] , string >
112+ public static TheoryData < object , string , CultureInfo > IntegralLists
113+ = new TheoryData < object , string , CultureInfo >
62114 {
63- { new [ ] { 1.667F , 2.667F , 3.667F , 4.667F } , "1.667,2.667,3.667,4.667" } ,
115+ { new List < int > { 1 , 2 , 3 , 4 } , "1,2,3,4" , Invariant } ,
64116 } ;
65117
66- public static TheoryData < object , string > IntegralLists = new TheoryData < object , string >
118+ public static TheoryData < List < float > , string , CultureInfo > RealLists
119+ = new TheoryData < List < float > , string , CultureInfo >
67120 {
68- { new List < int > { 1 , 2 , 3 , 4 } , "1,2,3,4" } ,
121+ { new List < float > { 1.667F , 2.667F , 3.667F , 4.667F } , "1.667,2.667,3.667,4.667" , Invariant } ,
69122 } ;
70123
71- public static TheoryData < object , string > RealLists = new TheoryData < object , string >
124+ public static TheoryData < Color , string , CultureInfo > ColorValuesInvariant
125+ = new TheoryData < Color , string , CultureInfo >
72126 {
73- { new List < float > { 1.667F , 2.667F , 3.667F , 4.667F } , "1.667,2.667,3.667,4.667" } ,
127+ { default , string . Empty , Invariant } ,
128+ { Color . White , "255,255,255" , Invariant } ,
129+ { Color . Transparent , "0,0,0,0" , Invariant } ,
130+ { Color . Orange , "orange" , Invariant } ,
131+ { Color . RoyalBlue , "4169E1FF" , Invariant } ,
132+ { Color . Lime , "00FF00FF" , Invariant } ,
133+ { Color . YellowGreen , "9ACD32FF" , Invariant } ,
74134 } ;
75135
76- public static TheoryData < Color , string > ColorValues = new TheoryData < Color , string >
136+ public static TheoryData < Color , string , CultureInfo > ColorValuesDanish
137+ = new TheoryData < Color , string , CultureInfo >
77138 {
78- { default , string . Empty } ,
79- { Color . White , "255, 255, 255" } ,
80- { Color . Transparent , "0,0,0,0" } ,
81- { Color . Orange , "orange" } ,
82- { Color . RoyalBlue , "4169E1FF" } ,
83- { Color . Lime , "00FF00FF" } ,
84- { Color . YellowGreen , "9ACD32FF" } ,
139+ { default , string . Empty , Danish } ,
140+ { Color . White , "255; 255; 255" , Danish } ,
141+ { Color . Transparent , "0;0;0;0" , Danish } ,
142+ { Color . Orange , "orange" , Danish } ,
143+ { Color . RoyalBlue , "4169E1FF" , Danish } ,
144+ { Color . Lime , "00FF00FF" , Danish } ,
145+ { Color . YellowGreen , "9ACD32FF" , Danish } ,
85146 } ;
86147
87148 private static readonly CommandParser Parser = GetCommandParser ( ) ;
88149
89150 [ Theory ]
90- [ MemberData ( nameof ( IntegralValues ) ) ]
91- [ MemberData ( nameof ( RealValues ) ) ]
151+ [ MemberData ( nameof ( IntegralValuesInvariant ) ) ]
152+ [ MemberData ( nameof ( IntegralValuesDanish ) ) ]
153+ [ MemberData ( nameof ( RealValuesInvariant ) ) ]
154+ [ MemberData ( nameof ( RealValuesDanish ) ) ]
92155 [ MemberData ( nameof ( EnumValues ) ) ]
93156 [ MemberData ( nameof ( IntegralArrays ) ) ]
94- [ MemberData ( nameof ( RealArrays ) ) ]
157+ [ MemberData ( nameof ( RealArraysInvariant ) ) ]
158+ [ MemberData ( nameof ( RealArraysDanish ) ) ]
95159 [ MemberData ( nameof ( IntegralLists ) ) ]
96160 [ MemberData ( nameof ( RealLists ) ) ]
97- [ MemberData ( nameof ( ColorValues ) ) ]
98- public void CommandParserCanConvert < T > ( T expected , string param )
161+ [ MemberData ( nameof ( ColorValuesInvariant ) ) ]
162+ [ MemberData ( nameof ( ColorValuesDanish ) ) ]
163+ public void CommandParserCanConvert < T > ( T expected , string param , CultureInfo culture )
99164 {
100- T sb = Parser . ParseValue < T > ( param , CultureInfo . InvariantCulture ) ;
165+ T sb = Parser . ParseValue < T > ( param , culture ) ;
101166 Assert . IsType < T > ( sb ) ;
102167 Assert . Equal ( expected , sb ) ;
103168 }
0 commit comments