1
1
using System ;
2
+ using System . Collections . Generic ;
2
3
using System . Globalization ;
3
4
using Xamarin . CommunityToolkit . Converters ;
5
+ using Xamarin . CommunityToolkit . UnitTests . Mocks ;
4
6
using Xunit ;
5
7
6
8
namespace Xamarin . CommunityToolkit . UnitTests . Converters
@@ -10,35 +12,50 @@ public class TextCaseConverter_Tests
10
12
const string test = nameof ( test ) ;
11
13
const string t = nameof ( t ) ;
12
14
15
+ static IEnumerable < object [ ] > GetTestData ( )
16
+ {
17
+ yield return new object [ ] { test , TextCaseType . Lower , test } ;
18
+ yield return new object [ ] { test , TextCaseType . Upper , "TEST" } ;
19
+ yield return new object [ ] { test , TextCaseType . None , test } ;
20
+ yield return new object [ ] { test , TextCaseType . FirstUpperRestLower , "Test" } ;
21
+ yield return new object [ ] { t , TextCaseType . Upper , "T" } ;
22
+ yield return new object [ ] { t , TextCaseType . Lower , t } ;
23
+ yield return new object [ ] { t , TextCaseType . None , t } ;
24
+ yield return new object [ ] { t , TextCaseType . FirstUpperRestLower , "T" } ;
25
+ yield return new object [ ] { string . Empty , TextCaseType . FirstUpperRestLower , string . Empty } ;
26
+ #pragma warning disable CS8625 // Cannot convert null literal to non-nullable reference type.
27
+ yield return new object [ ] { null , TextCaseType . None , null } ;
28
+ #pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
29
+ yield return new object [ ] { MockEnum . Foo , TextCaseType . Lower , "foo" } ;
30
+ yield return new object [ ] { MockEnum . Bar , TextCaseType . None , "Bar" } ;
31
+ yield return new object [ ] { MockEnum . Baz , TextCaseType . Upper , "BAZ" } ;
32
+ yield return new object [ ] { new MockItem { Title = "Test Item" , Completed = true } , TextCaseType . Upper , "TEST ITEM IS COMPLETED" } ;
33
+ }
34
+
13
35
[ Theory ]
14
- [ InlineData ( test , TextCaseType . Lower , test ) ]
15
- [ InlineData ( test , TextCaseType . Upper , "TEST" ) ]
16
- [ InlineData ( test , TextCaseType . None , test ) ]
17
- [ InlineData ( test , TextCaseType . FirstUpperRestLower , "Test" ) ]
18
- [ InlineData ( t , TextCaseType . Upper , "T" ) ]
19
- [ InlineData ( t , TextCaseType . Lower , t ) ]
20
- [ InlineData ( t , TextCaseType . None , t ) ]
21
- [ InlineData ( t , TextCaseType . FirstUpperRestLower , "T" ) ]
22
- [ InlineData ( "" , TextCaseType . FirstUpperRestLower , "" ) ]
36
+ [ MemberData ( nameof ( GetTestData ) ) ]
23
37
[ InlineData ( null , null , null ) ]
24
- public void TextCaseConverter ( object value , object comparedValue , object expectedResult )
38
+ public void TextCaseConverterWithParameter ( object ? value , object ? comparedValue , object ? expectedResult )
25
39
{
26
40
var textCaseConverter = new TextCaseConverter ( ) ;
27
41
28
- var result = textCaseConverter . Convert ( value , typeof ( TextCaseConverter_Tests ) , comparedValue , CultureInfo . CurrentCulture ) ;
42
+ var result = textCaseConverter . Convert ( value , typeof ( string ) , comparedValue , CultureInfo . CurrentCulture ) ;
29
43
30
44
Assert . Equal ( result , expectedResult ) ;
31
45
}
32
46
33
47
[ Theory ]
34
- [ InlineData ( 0 ) ]
35
- [ InlineData ( int . MinValue ) ]
36
- [ InlineData ( double . MaxValue ) ]
37
- public void InValidConverterValuesThrowArgumenException ( object value )
48
+ [ MemberData ( nameof ( GetTestData ) ) ]
49
+ public void TextCaseConverterWithExplicitType ( object ? value , TextCaseType textCaseType , object ? expectedResult )
38
50
{
39
- var textCaseConverter = new TextCaseConverter ( ) ;
51
+ var textCaseConverter = new TextCaseConverter
52
+ {
53
+ Type = textCaseType
54
+ } ;
55
+
56
+ var result = textCaseConverter . Convert ( value , typeof ( string ) , null , CultureInfo . CurrentCulture ) ;
40
57
41
- Assert . Throws < ArgumentException > ( ( ) => textCaseConverter . Convert ( value , typeof ( TextCaseConverter_Tests ) , null , CultureInfo . CurrentCulture ) ) ;
58
+ Assert . Equal ( result , expectedResult ) ;
42
59
}
43
60
}
44
61
}
0 commit comments