@@ -322,8 +322,36 @@ def test_java_ver(self):
322322 if sys .platform == 'java' : # Is never actually checked in CI
323323 self .assertTrue (all (res ))
324324
325+ @unittest .skipUnless (support .MS_WINDOWS , 'This test only makes sense on Windows' )
325326 def test_win32_ver (self ):
326- res = platform .win32_ver ()
327+ release1 , version1 , csd1 , ptype1 = 'a' , 'b' , 'c' , 'd'
328+ res = platform .win32_ver (release1 , version1 , csd1 , ptype1 )
329+ self .assertEqual (len (res ), 4 )
330+ release , version , csd , ptype = res
331+ if release :
332+ # Currently, release names always come from internal dicts,
333+ # but this could change over time. For now, we just check that
334+ # release is something different from what we have passed.
335+ self .assertNotEqual (release , release1 )
336+ if version :
337+ # It is rather hard to test explicit version without
338+ # going deep into the details.
339+ self .assertIn ('.' , version )
340+ for v in version .split ('.' ):
341+ int (v ) # should not fail
342+ if csd :
343+ self .assertTrue (csd .startswith ('SP' ), msg = csd )
344+ if ptype :
345+ if os .cpu_count () > 1 :
346+ self .assertIn ('Multiprocessor' , ptype )
347+ else :
348+ self .assertIn ('Uniprocessor' , ptype )
349+
350+ @unittest .skipIf (support .MS_WINDOWS , 'This test only makes sense on non Windows' )
351+ def test_win32_ver_on_non_windows (self ):
352+ release , version , csd , ptype = 'a' , '1.0' , 'c' , 'd'
353+ res = platform .win32_ver (release , version , csd , ptype )
354+ self .assertSequenceEqual (res , (release , version , csd , ptype ), seq_type = tuple )
327355
328356 def test_mac_ver (self ):
329357 res = platform .mac_ver ()
0 commit comments