1
+ namespace WPFLocalizeExtension . UnitTests . ValueConvertersTests
2
+ {
3
+ #region Usings
4
+ using Xunit ;
5
+ using XAMLMarkupExtensions . Base ;
6
+ using WPFLocalizeExtension . Engine ;
7
+ using WPFLocalizeExtension . Extensions ;
8
+ #endregion
9
+
10
+ /// <summary>
11
+ /// Tests for <see cref="LocExtension" />.
12
+ /// </summary>
13
+ public class LocExtensionTests
14
+ {
15
+ #region FallbackBehavior
16
+
17
+ private const string MISSING_KEY_RESULT = nameof ( MISSING_KEY_RESULT ) ;
18
+
19
+ /// <summary>
20
+ /// Check different behaviors when key is not found at resource provider.
21
+ /// </summary>
22
+ [ Theory ]
23
+ [ InlineData ( FallbackBehavior . Default , "Key: abacaba" ) ]
24
+ [ InlineData ( FallbackBehavior . Key , "abacaba" ) ]
25
+ [ InlineData ( FallbackBehavior . EmptyString , "" ) ]
26
+ public void FormatOutput_SpecifiedFallbackBehavior_SpecifiedOutput ( FallbackBehavior fallbackBehavior , string expectedValue )
27
+ {
28
+ // ARRANGE.
29
+ const string key = "abacaba" ;
30
+
31
+ var locExtension = new LocExtension ( key ) ;
32
+ locExtension . FallbackBehavior = fallbackBehavior ;
33
+ var endPoint = new TargetInfo ( null , null , typeof ( string ) , - 1 ) ;
34
+ var info = new TargetInfo ( null , null , typeof ( string ) , - 1 ) ;
35
+
36
+ // ACT.
37
+ var resultValue = locExtension . FormatOutput ( endPoint , info ) ;
38
+
39
+ // ASSERT.
40
+ Assert . Equal ( expectedValue , resultValue ) ;
41
+ }
42
+
43
+ /// <summary>
44
+ /// Check if <see cref="LocalizeDictionary.MissingKeyEvent" /> specifies missing value, then <see cref="FallbackBehavior" /> is not used.
45
+ /// </summary>
46
+ [ Theory ]
47
+ [ InlineData ( FallbackBehavior . Default ) ]
48
+ [ InlineData ( FallbackBehavior . Key ) ]
49
+ [ InlineData ( FallbackBehavior . EmptyString ) ]
50
+ public void FormatOutput_MissingKeyEventHandling_FallbackBehaviorNotUsed ( FallbackBehavior fallbackBehavior )
51
+ {
52
+ // ARRANGE.
53
+ const string key = "abacaba" ;
54
+
55
+ var locExtension = new LocExtension ( key ) ;
56
+ locExtension . FallbackBehavior = fallbackBehavior ;
57
+ var endPoint = new TargetInfo ( null , null , typeof ( string ) , - 1 ) ;
58
+ var info = new TargetInfo ( null , null , typeof ( string ) , - 1 ) ;
59
+
60
+ // ACT.
61
+ object resultValue ;
62
+ LocalizeDictionary . Instance . MissingKeyEvent += OnMissingKeyEvent ;
63
+
64
+ try
65
+ {
66
+ resultValue = locExtension . FormatOutput ( endPoint , info ) ;
67
+ }
68
+ finally
69
+ {
70
+ LocalizeDictionary . Instance . MissingKeyEvent -= OnMissingKeyEvent ;
71
+ }
72
+
73
+ // ASSERT.
74
+ Assert . Equal ( MISSING_KEY_RESULT , resultValue ) ;
75
+ }
76
+
77
+ /// <summary>
78
+ /// Handle <see cref="LocalizeDictionary.MissingKeyEvent" />.
79
+ /// </summary>
80
+ private static void OnMissingKeyEvent ( object sender , MissingKeyEventArgs e )
81
+ {
82
+ e . MissingKeyResult = MISSING_KEY_RESULT ;
83
+ }
84
+
85
+ #endregion
86
+ }
87
+ }
0 commit comments