Skip to content

Commit ec731a1

Browse files
Fix parser tests
1 parent 771db78 commit ec731a1

File tree

2 files changed

+87
-88
lines changed

2 files changed

+87
-88
lines changed

src/ImageSharp.Web/Commands/Converters/SimpleCommandConverter{T}.cs

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,29 +32,12 @@ public object ConvertFrom(
3232
Type t = typeof(T);
3333
Type u = Nullable.GetUnderlyingType(t);
3434

35-
try
35+
if (u != null)
3636
{
37-
if (u != null)
38-
{
39-
return (T)Convert.ChangeType(value, u, culture);
40-
}
41-
42-
return (T)Convert.ChangeType(value, t, culture);
37+
return (T)Convert.ChangeType(value, u, culture);
4338
}
44-
catch (Exception)
45-
{
46-
StringBuilder sb = new StringBuilder();
4739

48-
sb.AppendLine(nameof(culture.Name));
49-
sb.AppendLine(culture.Name);
50-
sb.AppendLine(nameof(culture.NumberFormat.NumberDecimalSeparator));
51-
sb.AppendLine(culture.NumberFormat.NumberDecimalSeparator);
52-
sb.AppendLine(nameof(culture.TextInfo.ListSeparator));
53-
sb.AppendLine(culture.TextInfo.ListSeparator);
54-
sb.AppendLine("Value");
55-
sb.AppendLine(value);
56-
throw new Exception(sb.ToString());
57-
}
40+
return (T)Convert.ChangeType(value, t, culture);
5841
}
5942
}
6043
}

tests/ImageSharp.Web.Tests/Commands/CommandParserTests.cs

Lines changed: 84 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66
using System.Globalization;
7+
using System.Text;
78
using SixLabors.ImageSharp.Processing;
89
using SixLabors.ImageSharp.Web.Commands;
910
using SixLabors.ImageSharp.Web.Commands.Converters;
@@ -13,136 +14,137 @@ namespace SixLabors.ImageSharp.Web.Tests.Commands
1314
{
1415
public class CommandParserTests
1516
{
16-
private static readonly CultureInfo Invariant = CultureInfo.InvariantCulture;
17-
private static readonly CultureInfo Danish = new CultureInfo("da-DK");
17+
private static readonly CultureInfo Inv = CultureInfo.InvariantCulture;
18+
private static readonly CultureInfo Dk = new CultureInfo("da-DK");
19+
1820
private const double Pi = 3.14159265358979;
1921
private static readonly string PiStringInvariant = Pi.ToString(CultureInfo.InvariantCulture);
20-
private static readonly string PiStringDanish = Pi.ToString(Danish);
22+
private static readonly string PiStringDanish = Pi.ToString(Dk);
2123
private static readonly double RoundedPi = Math.Round(Pi, MidpointRounding.AwayFromZero);
2224

2325
public static TheoryData<object, string, CultureInfo> IntegralValuesInvariant
2426
= new TheoryData<object, string, CultureInfo>
2527
{
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 },
28+
{ (sbyte)1, "1", Inv },
29+
{ (byte)1, "1", Inv },
30+
{ (short)1, "1", Inv },
31+
{ (ushort)1, "1", Inv },
32+
{ 1, "1", Inv },
33+
{ 1U, "1", Inv },
34+
{ 1L, "1", Inv },
35+
{ 1UL, "1", Inv },
36+
{ 1F, "1", Inv },
37+
{ 1D, "1", Inv },
38+
{ 1M, "1", Inv },
3739
};
3840

3941
public static TheoryData<object, string, CultureInfo> IntegralValuesDanish
4042
= new TheoryData<object, string, CultureInfo>
4143
{
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 },
44+
{ (sbyte)1, "1", Dk },
45+
{ (byte)1, "1", Dk },
46+
{ (short)1, "1", Dk },
47+
{ (ushort)1, "1", Dk },
48+
{ 1, "1", Dk },
49+
{ 1U, "1", Dk },
50+
{ 1L, "1", Dk },
51+
{ 1UL, "1", Dk },
52+
{ 1F, "1", Dk },
53+
{ 1D, "1", Dk },
54+
{ 1M, "1", Dk },
5355
};
5456

5557
public static TheoryData<object, string, CultureInfo> RealValuesInvariant
5658
= new TheoryData<object, string, CultureInfo>
5759
{
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 },
60+
{ (sbyte)RoundedPi, PiStringInvariant, Inv },
61+
{ (byte)RoundedPi, PiStringInvariant, Inv },
62+
{ (short)RoundedPi, PiStringInvariant, Inv },
63+
{ (ushort)RoundedPi, PiStringInvariant, Inv },
64+
{ (int)RoundedPi, PiStringInvariant, Inv },
65+
{ (uint)RoundedPi, PiStringInvariant, Inv },
66+
{ (long)RoundedPi, PiStringInvariant, Inv },
67+
{ (ulong)RoundedPi, PiStringInvariant, Inv },
68+
{ (float)Pi, PiStringInvariant, Inv },
69+
{ (double)Pi, PiStringInvariant, Inv },
70+
{ (decimal)Pi, PiStringInvariant, Inv },
6971
};
7072

7173
public static TheoryData<object, string, CultureInfo> RealValuesDanish
7274
= new TheoryData<object, string, CultureInfo>
7375
{
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 },
76+
{ (sbyte)RoundedPi, PiStringDanish, Dk },
77+
{ (byte)RoundedPi, PiStringDanish, Dk },
78+
{ (short)RoundedPi, PiStringDanish, Dk },
79+
{ (ushort)RoundedPi, PiStringDanish, Dk },
80+
{ (int)RoundedPi, PiStringDanish, Dk },
81+
{ (uint)RoundedPi, PiStringDanish, Dk },
82+
{ (long)RoundedPi, PiStringDanish, Dk },
83+
{ (ulong)RoundedPi, PiStringDanish, Dk },
84+
{ (float)Pi, PiStringDanish, Dk },
85+
{ (double)Pi, PiStringDanish, Dk },
86+
{ (decimal)Pi, PiStringDanish, Dk },
8587
};
8688

8789
public static TheoryData<ResizeMode, string, CultureInfo> EnumValues
8890
= new TheoryData<ResizeMode, string, CultureInfo>
8991
{
90-
{ ResizeMode.Max, "max", Invariant },
91-
{ ResizeMode.Crop, "this is not, an enum value", Invariant }, // Unknown returns default
92+
{ ResizeMode.Max, "max", Inv },
93+
{ ResizeMode.Crop, "this is not, an enum value", Inv }, // Unknown returns default
9294
};
9395

9496
public static TheoryData<int[], string, CultureInfo> IntegralArrays
9597
= new TheoryData<int[], string, CultureInfo>
9698
{
97-
{ new[] { 1, 2, 3, 4 }, "1,2,3,4", Invariant },
99+
{ new[] { 1, 2, 3, 4 }, ToNumericList(Inv, 1, 2, 3, 4), Inv },
98100
};
99101

100102
public static TheoryData<float[], string, CultureInfo> RealArraysInvariant
101103
= new TheoryData<float[], string, CultureInfo>
102104
{
103-
{ new[] { 1.667F, 2.667F, 3.667F, 4.667F }, "1.667,2.667,3.667,4.667", Invariant },
105+
{ new[] { 1.667F, 2.667F, 3.667F, 4.667F }, ToNumericList(Inv, 1.667F, 2.667F, 3.667F, 4.667F), Inv },
104106
};
105107

106108
public static TheoryData<float[], string, CultureInfo> RealArraysDanish
107109
= new TheoryData<float[], string, CultureInfo>
108110
{
109-
{ new[] { 1.667F, 2.667F, 3.667F, 4.667F }, "1,667;2,667;3,667;4,667", Danish },
111+
{ new[] { 1.667F, 2.667F, 3.667F, 4.667F }, ToNumericList(Dk, 1.667F, 2.667F, 3.667F, 4.667F), Dk },
110112
};
111113

112114
public static TheoryData<object, string, CultureInfo> IntegralLists
113115
= new TheoryData<object, string, CultureInfo>
114116
{
115-
{ new List<int> { 1, 2, 3, 4 }, "1,2,3,4", Invariant },
117+
{ new List<int> { 1, 2, 3, 4 }, ToNumericList(Inv, 1, 2, 3, 4), Inv },
116118
};
117119

118120
public static TheoryData<List<float>, string, CultureInfo> RealLists
119121
= new TheoryData<List<float>, string, CultureInfo>
120122
{
121-
{ new List<float> { 1.667F, 2.667F, 3.667F, 4.667F }, "1.667,2.667,3.667,4.667", Invariant },
123+
{ new List<float> { 1.667F, 2.667F, 3.667F, 4.667F }, "1.667,2.667,3.667,4.667", Inv },
122124
};
123125

124126
public static TheoryData<Color, string, CultureInfo> ColorValuesInvariant
125127
= new TheoryData<Color, string, CultureInfo>
126128
{
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 },
129+
{ default, string.Empty, Inv },
130+
{ Color.White, ToNumericList<byte>(Inv, 255, 255, 255), Inv },
131+
{ Color.Transparent, ToNumericList<byte>(Inv, 0, 0, 0, 0), Inv },
132+
{ Color.Orange, "orange", Inv },
133+
{ Color.RoyalBlue, "4169E1FF", Inv },
134+
{ Color.Lime, "00FF00FF", Inv },
135+
{ Color.YellowGreen, "9ACD32FF", Inv },
134136
};
135137

136138
public static TheoryData<Color, string, CultureInfo> ColorValuesDanish
137139
= new TheoryData<Color, string, CultureInfo>
138140
{
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 },
141+
{ default, string.Empty, Dk },
142+
{ Color.White, ToNumericList<byte>(Dk, 255, 255, 255), Dk },
143+
{ Color.Transparent, ToNumericList<byte>(Dk, 0, 0, 0, 0), Dk },
144+
{ Color.Orange, "orange", Dk },
145+
{ Color.RoyalBlue, "4169E1FF", Dk },
146+
{ Color.Lime, "00FF00FF", Dk },
147+
{ Color.YellowGreen, "9ACD32FF", Dk },
146148
};
147149

148150
private static readonly CommandParser Parser = GetCommandParser();
@@ -229,5 +231,19 @@ private static CommandParser GetCommandParser()
229231

230232
return new CommandParser(commands);
231233
}
234+
235+
private static string ToNumericList<T>(CultureInfo culture, params T[] values)
236+
where T : IConvertible
237+
{
238+
var sb = new StringBuilder();
239+
var ls = culture.TextInfo.ListSeparator[0];
240+
241+
for (int i = 0; i < values.Length; i++)
242+
{
243+
sb.AppendFormat(values[i].ToString(culture) + ls);
244+
}
245+
246+
return sb.ToString().TrimEnd(ls);
247+
}
232248
}
233249
}

0 commit comments

Comments
 (0)