@@ -310,15 +310,10 @@ def test_conjugate(self):
310310 # TODO: RUSTPYTHON
311311 @unittest .expectedFailure
312312 def test_constructor (self ):
313- class OS :
313+ class NS :
314314 def __init__ (self , value ): self .value = value
315315 def __complex__ (self ): return self .value
316- class NS (object ):
317- def __init__ (self , value ): self .value = value
318- def __complex__ (self ): return self .value
319- self .assertEqual (complex (OS (1 + 10j )), 1 + 10j )
320316 self .assertEqual (complex (NS (1 + 10j )), 1 + 10j )
321- self .assertRaises (TypeError , complex , OS (None ))
322317 self .assertRaises (TypeError , complex , NS (None ))
323318 self .assertRaises (TypeError , complex , {})
324319 self .assertRaises (TypeError , complex , NS (1.5 ))
@@ -503,6 +498,18 @@ def __complex__(self):
503498 self .assertEqual (complex (complex1 (1j )), 2j )
504499 self .assertRaises (TypeError , complex , complex2 (1j ))
505500
501+ def test___complex__ (self ):
502+ z = 3 + 4j
503+ self .assertEqual (z .__complex__ (), z )
504+ self .assertEqual (type (z .__complex__ ()), complex )
505+
506+ class complex_subclass (complex ):
507+ pass
508+
509+ z = complex_subclass (3 + 4j )
510+ self .assertEqual (z .__complex__ (), 3 + 4j )
511+ self .assertEqual (type (z .__complex__ ()), complex )
512+
506513 @support .requires_IEEE_754
507514 def test_constructor_special_numbers (self ):
508515 class complex2 (complex ):
0 commit comments