@@ -247,8 +247,20 @@ public static void GetSetApartmentStateTest_ChangeAfterThreadStarted_Windows(
247247 Assert . Equal ( ApartmentState . MTA , getApartmentState ( t ) ) ;
248248 Assert . Equal ( 0 , setApartmentState ( t , ApartmentState . MTA ) ) ;
249249 Assert . Equal ( ApartmentState . MTA , getApartmentState ( t ) ) ;
250- Assert . Equal ( setType == 0 ? 0 : 2 , setApartmentState ( t , ApartmentState . STA ) ) ; // cannot be changed after thread is started
250+ Assert . Equal ( setType == 0 ? 0 : 2 , setApartmentState ( t , ApartmentState . STA ) ) ; // MTA<->STA cannot be changed directly after thread is started
251251 Assert . Equal ( ApartmentState . MTA , getApartmentState ( t ) ) ;
252+
253+ if ( ! PlatformDetection . IsWindowsNanoServer )
254+ {
255+ Assert . Equal ( 0 , setApartmentState ( t , ApartmentState . Unknown ) ) ; // Compat quirk: MTA<->STA can be changed by going throught Unknown
256+ Assert . Equal ( ApartmentState . MTA , getApartmentState ( t ) ) ;
257+ Assert . Equal ( 0 , setApartmentState ( t , ApartmentState . STA ) ) ;
258+ Assert . Equal ( ApartmentState . STA , getApartmentState ( t ) ) ;
259+ Assert . Equal ( 0 , setApartmentState ( t , ApartmentState . Unknown ) ) ;
260+ Assert . Equal ( ApartmentState . MTA , getApartmentState ( t ) ) ;
261+ Assert . Equal ( 0 , setApartmentState ( t , ApartmentState . MTA ) ) ;
262+ Assert . Equal ( ApartmentState . MTA , getApartmentState ( t ) ) ;
263+ }
252264 } ) ;
253265 }
254266
0 commit comments