11using System . ComponentModel ;
22using System . Windows . Media ;
3+ using MaterialDesignThemes . Wpf . Internal ;
34
45
56namespace MaterialDesignThemes . UITests . WPF . TabControls ;
@@ -154,13 +155,15 @@ public async Task TabControl_ShouldRespectSelectedContentTemplate_WhenSetDirectl
154155 }
155156
156157 [ Test ]
157- public async Task ScrollingTabs_UniformGrid ( )
158+ [ Arguments ( "" ) ] // UniformGrid style
159+ [ Arguments ( "HorizontalContentAlignment=\" Left\" " ) ] // VirtualizingStackPanel style
160+ public async Task ScrollingTabs_WithMoreTabsThanScreenRealEstate_ShouldAddLeftAndRightMarginToHeaderPanel ( string additionalProperties )
158161 {
159162 await using var recorder = new TestRecorder ( App ) ;
160163
161164 //Arrange
162- const int numTabs = 10 ;
163- StringBuilder xaml = new ( "<TabControl>" ) ;
165+ const int numTabs = 20 ;
166+ StringBuilder xaml = new ( $ "<TabControl { additionalProperties } >") ;
164167 for ( int i = 1 ; i <= numTabs ; i ++ )
165168 {
166169 xaml . Append ( $ """
@@ -171,22 +174,30 @@ public async Task ScrollingTabs_UniformGrid()
171174 }
172175 xaml . Append ( "</TabControl>" ) ;
173176 IVisualElement < TabControl > tabControl = await LoadXaml < TabControl > ( xaml . ToString ( ) ) ;
177+ IVisualElement < PaddedBringIntoViewStackPanel > headerPanel = await tabControl . GetElement < PaddedBringIntoViewStackPanel > ( ) ;
178+ double offsetWhenOverflowingWidth = await headerPanel . GetHeaderPadding ( ) ;
174179
175180 //Act
181+ Thickness margin = await headerPanel . GetMargin ( ) ;
176182
177- //Assert
183+ // Assert
184+ await Assert . That ( offsetWhenOverflowingWidth ) . IsGreaterThan ( 0 ) ;
185+ await Assert . That ( margin . Left ) . IsEqualTo ( offsetWhenOverflowingWidth ) ;
186+ await Assert . That ( margin . Right ) . IsEqualTo ( offsetWhenOverflowingWidth ) ;
178187
179188 recorder . Success ( ) ;
180189 }
181190
182191 [ Test ]
183- public async Task ScrollingTabs_VirtualizingStackPanel ( )
192+ [ Arguments ( "" ) ] // UniformGrid style
193+ [ Arguments ( "HorizontalContentAlignment=\" Left\" " ) ] // VirtualizingStackPanel style
194+ public async Task ScrollingTabs_WithLessTabsThanScreenRealEstate_ShouldNotAddLeftAndRightMarginToHeaderPanel ( string additionalProperties )
184195 {
185196 await using var recorder = new TestRecorder ( App ) ;
186197
187198 //Arrange
188- const int numTabs = 10 ;
189- StringBuilder xaml = new ( "<TabControl HorizontalContentAlignment= \" Left \" >" ) ;
199+ const int numTabs = 5 ;
200+ StringBuilder xaml = new ( $ "<TabControl { additionalProperties } >") ;
190201 for ( int i = 1 ; i <= numTabs ; i ++ )
191202 {
192203 xaml . Append ( $ """
@@ -197,10 +208,16 @@ public async Task ScrollingTabs_VirtualizingStackPanel()
197208 }
198209 xaml . Append ( "</TabControl>" ) ;
199210 IVisualElement < TabControl > tabControl = await LoadXaml < TabControl > ( xaml . ToString ( ) ) ;
211+ IVisualElement < PaddedBringIntoViewStackPanel > headerPanel = await tabControl . GetElement < PaddedBringIntoViewStackPanel > ( ) ;
212+ double offsetWhenOverflowingWidth = await headerPanel . GetHeaderPadding ( ) ;
200213
201214 //Act
215+ Thickness margin = await headerPanel . GetMargin ( ) ;
202216
203- //Assert
217+ // Assert
218+ await Assert . That ( offsetWhenOverflowingWidth ) . IsGreaterThan ( 0 ) ;
219+ await Assert . That ( margin . Left ) . IsEqualTo ( 0 ) ;
220+ await Assert . That ( margin . Right ) . IsEqualTo ( 0 ) ;
204221
205222 recorder . Success ( ) ;
206223 }
0 commit comments