33
44namespace Nice3point . TUnit . Revit . Tests ;
55
6- public sealed class LocalizationTests : RevitApiTest
6+ /// <summary>
7+ /// Skips all tests in the class that don't match the current Revit localization.
8+ /// </summary>
9+ public sealed class LocalizationHookTests : RevitApiTest
10+ {
11+ [ Before ( Test ) ]
12+ public void SkipUnmatchedLocalization ( )
13+ {
14+ if ( Application . Language != LanguageType . English_USA )
15+ {
16+ Skip . Test ( "This test is only supported on English localization" ) ;
17+ }
18+ }
19+
20+ [ Test ]
21+ public async Task Cities_English_ValidName ( )
22+ {
23+ // Arrange & Act
24+ var city = Application . Cities . Cast < City > ( ) . OrderBy ( city => city . Name ) . First ( ) ;
25+
26+ // Assert
27+ await Assert . That ( city . Name ) . IsEqualTo ( "Aberdeen, MD" ) ;
28+ }
29+ }
30+
31+ /// <summary>
32+ /// Skips tests that don't match the current Revit localization using attributes.
33+ /// </summary>
34+ public sealed class LocalizationAttributeTests : RevitApiTest
35+ {
36+ [ Test ]
37+ [ EnglishLocalizationOnly ]
38+ public async Task Cities_English_ValidName ( )
39+ {
40+ // Arrange & Act
41+ var city = Application . Cities . Cast < City > ( ) . OrderBy ( city => city . Name ) . First ( ) ;
42+
43+ // Assert
44+ await Assert . That ( city . Name ) . IsEqualTo ( "Aberdeen, MD" ) ;
45+ }
46+
47+ [ Test ]
48+ [ RussianLocalizationOnly ]
49+ public async Task Cities_Russian_ValidName ( )
50+ {
51+ // Arrange & Act
52+ var city = Application . Cities . Cast < City > ( ) . OrderBy ( city => city . Name ) . First ( ) ;
53+
54+ // Assert
55+ await Assert . That ( city . Name ) . IsEqualTo ( "Абердин, MD" ) ;
56+ }
57+
58+ [ Test ]
59+ [ ChineseLocalizationOnly ]
60+ public async Task Cities_Chinese_ValidName ( )
61+ {
62+ // Arrange & Act
63+ var city = Application . Cities . Cast < City > ( ) . OrderBy ( city => city . Name ) . First ( ) ;
64+
65+ // Assert
66+ await Assert . That ( city . Name ) . IsEqualTo ( "K.I.索耶空军基地,密歇根" ) ;
67+ }
68+ }
69+
70+ /// <summary>
71+ /// Skips tests dynamically based on the current Revit localization.
72+ /// </summary>
73+ public sealed class LocalizationDynamicSkipTests : RevitApiTest
774{
875 [ Test ]
976 public async Task Cities_RandomCity_ValidLocalizedName ( )
@@ -25,7 +92,13 @@ public async Task Cities_RandomCity_ValidLocalizedName()
2592 break ;
2693 }
2794 }
95+ }
2896
97+ /// <summary>
98+ /// Skips tests whose method name contains a language identifier that doesn't match the current Revit localization.
99+ /// </summary>
100+ public sealed class LocalizationNameFilterTests : RevitApiTest
101+ {
29102 [ Test ]
30103 public async Task Cities_English_USA_ValidName ( )
31104 {
@@ -55,37 +128,30 @@ public async Task Cities_Chinese_Simplified_ValidName()
55128 // Assert
56129 await Assert . That ( city . Name ) . IsEqualTo ( "K.I.索耶空军基地,密歇根" ) ;
57130 }
58-
59- [ Test ]
60- [ EnglishLocalizationOnly ]
61- public async Task Cities_EnglishAttribute_ValidName ( )
62- {
63- // Arrange & Act
64- var city = Application . Cities . Cast < City > ( ) . OrderBy ( city => city . Name ) . First ( ) ;
65-
66- // Assert
67- await Assert . That ( city . Name ) . IsEqualTo ( "Aberdeen, MD" ) ;
68- }
69131}
70132
71- public sealed class LocalizationEnglishTests : RevitApiTest
133+ /// <summary>
134+ /// Globally skips tests whose method name contains a language identifier that doesn't match the current Revit localization.
135+ /// </summary>
136+ /// <remarks>Applies to all tests in the project.</remarks>
137+ public static class GlobalLocalizationSkipConfiguration
72138{
73- [ Before ( Test ) ]
74- public void SkipUnmatchedLocalization ( )
139+ private static readonly string [ ] Languages = Enum . GetNames < LanguageType > ( ) ;
140+
141+ [ BeforeEvery ( Test ) ]
142+ public static void SkipUnmatchedLocalization ( TestContext context )
75143 {
76- if ( Application . Language != LanguageType . English_USA )
144+ var currentLanguage = RevitApiContext . Application . Language . ToString ( ) ;
145+ foreach ( var language in Languages )
77146 {
78- Skip . Test ( "This test is only supported on English localisation" ) ;
79- }
80- }
147+ if ( ! context . Metadata . TestName . Contains ( language , StringComparison . OrdinalIgnoreCase ) ) continue ;
81148
82- [ Test ]
83- public async Task Cities_EnglishAttribute_ValidName ( )
84- {
85- // Arrange & Act
86- var city = Application . Cities . Cast < City > ( ) . OrderBy ( city => city . Name ) . First ( ) ;
149+ if ( ! currentLanguage . Equals ( language , StringComparison . OrdinalIgnoreCase ) )
150+ {
151+ Skip . Test ( $ "Test targets { language } ") ;
152+ }
87153
88- // Assert
89- await Assert . That ( city . Name ) . IsEqualTo ( "Aberdeen, MD" ) ;
154+ return ;
155+ }
90156 }
91157}
0 commit comments