1+ using  System . Globalization ; 
2+ using  System . Text ; 
3+ using  Hexa . NET . Utilities . Text ; 
4+ 
5+ namespace  Hexa . NET . Utilities . Tests ; 
6+ 
7+ public  class  Utf8FormatterTests 
8+ { 
9+     [ TestCase ( 1f ,  0 ,  "1" ) ] 
10+     [ TestCase ( 10f ,  0 ,  "10" ) ] 
11+     [ TestCase ( 0.5f ,  1 ,  "0.5" ) ] 
12+     [ TestCase ( 0.75f ,  2 ,  "0.75" ) ] 
13+     [ TestCase ( 0.125f ,  3 ,  "0.125" ) ] 
14+     [ TestCase ( 0.0625f ,  4 ,  "0.0625" ) ] 
15+     [ TestCase ( 0.03125f ,  5 ,  "0.03125" ) ] 
16+     [ TestCase ( 0.015625f ,  6 ,  "0.015625" ) ] 
17+     [ TestCase ( 0.0078125f ,  7 ,  "0.0078125" ) ] 
18+     public  unsafe  void  FormatFloatTest ( float  value ,  int  digit ,  string  expected ) 
19+     { 
20+         // Arrange 
21+         byte *  buffer  =  stackalloc  byte [ 128 ] ; 
22+ 
23+         // Act 
24+         int  len  =  Utf8Formatter . Format ( value ,  buffer ,  128 ,  CultureInfo . InvariantCulture ,  digit ) ; 
25+         ReadOnlySpan < byte >  utf8Span  =  new  ReadOnlySpan < byte > ( buffer ,  len ) ; 
26+ 
27+         // Assert 
28+         Assert . That ( Encoding . UTF8 . GetString ( utf8Span ) ,  Is . EqualTo ( expected ) ) ; 
29+     } 
30+ 
31+     [ TestCase ( 1 ,  0 ,  "1" ) ] 
32+     [ TestCase ( 10 ,  0 ,  "10" ) ] 
33+     [ TestCase ( 0.5 ,  1 ,  "0.5" ) ] 
34+     [ TestCase ( 0.75 ,  2 ,  "0.75" ) ] 
35+     [ TestCase ( 0.125 ,  3 ,  "0.125" ) ] 
36+     [ TestCase ( 0.0625 ,  4 ,  "0.0625" ) ] 
37+     [ TestCase ( 0.03125 ,  5 ,  "0.03125" ) ] 
38+     [ TestCase ( 0.015625 ,  6 ,  "0.015625" ) ] 
39+     [ TestCase ( 0.0078125 ,  7 ,  "0.0078125" ) ] 
40+     public  unsafe  void  FormatDoubleTest ( double  value ,  int  digit ,  string  expected ) 
41+     { 
42+         // Arrange 
43+         byte *  buffer  =  stackalloc  byte [ 128 ] ; 
44+ 
45+         // Act 
46+         int  len  =  Utf8Formatter . Format ( value ,  buffer ,  128 ,  CultureInfo . InvariantCulture ,  digit ) ; 
47+         ReadOnlySpan < byte >  utf8Span  =  new  ReadOnlySpan < byte > ( buffer ,  len ) ; 
48+ 
49+         // Assert 
50+         Assert . That ( Encoding . UTF8 . GetString ( utf8Span ) ,  Is . EqualTo ( expected ) ) ; 
51+     } 
52+ 
53+     [ TestCase ( 10 ,  0 ,  "." , "10" ) ] 
54+     [ TestCase ( 10 ,  0 ,  "\uFF0C " , "10" ) ] 
55+     [ TestCase ( 0.75f ,  2 ,  "." , "0.75" ) ] 
56+     [ TestCase ( 0.75f ,  2 ,  "\uFF0C " , "0\uFF0C 75" ) ] 
57+     public  unsafe  void  FormatFloatCultureTest ( float  value ,  int  digit ,  string  separator ,  string  expected ) 
58+     { 
59+         // Arrange 
60+         byte *  buffer  =  stackalloc  byte [ 128 ] ; 
61+         var  culture  =  new  CultureInfo (  "" ,  false  ) 
62+         { 
63+             NumberFormat  = 
64+             { 
65+                 CurrencyDecimalSeparator  =  separator 
66+             } 
67+         } ; 
68+ 
69+         // Act 
70+         int  len  =  Utf8Formatter . Format ( value ,  buffer ,  128 ,  culture ,  digit ) ; 
71+         ReadOnlySpan < byte >  utf8Span  =  new  ReadOnlySpan < byte > ( buffer ,  len ) ; 
72+ 
73+         // Assert 
74+         Assert . That ( Encoding . UTF8 . GetString ( utf8Span ) ,  Is . EqualTo ( expected ) ) ; 
75+     } 
76+ 
77+     [ TestCase ( 10 ,  0 ,  "." , "10" ) ] 
78+     [ TestCase ( 10 ,  0 ,  "\uFF0C " , "10" ) ] 
79+     [ TestCase ( 0.75 ,  2 ,  "." , "0.75" ) ] 
80+     [ TestCase ( 0.75 ,  2 ,  "\uFF0C " , "0\uFF0C 75" ) ] 
81+     public  unsafe  void  FormatDoubleCultureTest ( double  value ,  int  digit ,  string  separator ,  string  expected ) 
82+     { 
83+         // Arrange 
84+         byte *  buffer  =  stackalloc  byte [ 128 ] ; 
85+         var  culture  =  new  CultureInfo (  "" ,  false  ) 
86+         { 
87+             NumberFormat  = 
88+             { 
89+                 CurrencyDecimalSeparator  =  separator 
90+             } 
91+         } ; 
92+ 
93+         // Act 
94+         int  len  =  Utf8Formatter . Format ( value ,  buffer ,  128 ,  culture ,  digit ) ; 
95+         var  utf8Span  =  new  ReadOnlySpan < byte > ( buffer ,  len ) ; 
96+ 
97+         // Assert 
98+         Assert . That ( Encoding . UTF8 . GetString ( utf8Span ) ,  Is . EqualTo ( expected ) ) ; 
99+     } 
100+ } 
0 commit comments