@@ -75,6 +75,10 @@ func TestComplexEq(t *testing.T) {
7575 }
7676}
7777
78+ // FIXME(corona10): Since Go 1.9 moved to C99 float division and what CPython uses as well.
79+ // Some tests can be failed with version < Go 1.9. We need to detect Go version.
80+ // And changed expected values.
81+
7882func TestComplexBinaryOps (t * testing.T ) {
7983 cases := []struct {
8084 fun func (f * Frame , v , w * Object ) (* Object , * BaseException )
@@ -107,8 +111,8 @@ func TestComplexBinaryOps(t *testing.T) {
107111 {Div , NewComplex (3 - 4i ).ToObject (), NewLong (big .NewInt (- 34 )).ToObject (), NewComplex (- 0.08823529411764706 + 0.11764705882352941i ).ToObject (), nil },
108112 {Div , NewComplex (3 + 4i ).ToObject (), NewComplex (complex (math .Inf (1 ), math .Inf (- 1 ))).ToObject (), NewComplex (0i ).ToObject (), nil },
109113 {Div , NewComplex (3 + 4i ).ToObject (), NewComplex (complex (math .Inf (1 ), 2 )).ToObject (), NewComplex (0i ).ToObject (), nil },
110- {Div , NewComplex (complex (math .Inf (1 ), math .Inf (1 ))).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .Inf (1 ), math .Inf ( 1 ))).ToObject (), nil },
111- {Div , NewComplex (complex (math .Inf (1 ), 4 )).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .Inf (1 ), math .Inf (1 ))).ToObject (), nil },
114+ {Div , NewComplex (complex (math .Inf (1 ), math .Inf (1 ))).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .Inf (1 ), math .NaN ( ))).ToObject (), nil },
115+ {Div , NewComplex (complex (math .Inf (1 ), 4 )).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .Inf (1 ), math .Inf (- 1 ))).ToObject (), nil },
112116 {Div , NewComplex (complex (3 , math .Inf (1 ))).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .Inf (1 ), math .Inf (1 ))).ToObject (), nil },
113117 {Div , NewComplex (complex (3 , math .NaN ())).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .NaN (), math .NaN ())).ToObject (), nil },
114118 {Div , NewStr ("foo" ).ToObject (), NewComplex (1 + 2i ).ToObject (), nil , mustCreateException (TypeErrorType , "unsupported operand type(s) for /: 'str' and 'complex'" )},
@@ -189,8 +193,8 @@ func TestComplexBinaryOps(t *testing.T) {
189193 {Pow , NewComplex (complex (math .Inf (- 1 ), 2 )).ToObject (), NewComplex (1 + 2i ).ToObject (), NewComplex (complex (math .NaN (), math .NaN ())).ToObject (), nil },
190194 {Pow , NewComplex (1 + 2i ).ToObject (), NewComplex (complex (1 , math .Inf (1 ))).ToObject (), NewComplex (complex (math .NaN (), math .NaN ())).ToObject (), nil },
191195 {Pow , NewComplex (complex (math .NaN (), 1 )).ToObject (), NewComplex (3 + 4i ).ToObject (), NewComplex (complex (math .NaN (), math .NaN ())).ToObject (), nil },
192- {Pow , NewComplex (3 + 4i ).ToObject (), NewInt (3 ).ToObject (), NewComplex (- 117 + 44.000000000000036i ).ToObject (), nil },
193- {Pow , NewComplex (3 + 4i ).ToObject (), NewFloat (3.1415 ).ToObject (), NewComplex (- 152.8892667678244 + 35.55533513049651i ).ToObject (), nil },
196+ {Pow , NewComplex (3 + 4i ).ToObject (), NewInt (3 ).ToObject (), NewComplex (- 117 + 44.00000000000003i ).ToObject (), nil },
197+ {Pow , NewComplex (3 + 4i ).ToObject (), NewFloat (3.1415 ).ToObject (), NewComplex (- 152.8892667678244 + 35.555335130496516i ).ToObject (), nil },
194198 {Pow , NewComplex (3 + 4i ).ToObject (), NewLong (big .NewInt (123 )).ToObject (), NewComplex (5.393538720276193e+85 + 7.703512580443326e+85i ).ToObject (), nil },
195199 {Pow , NewComplex (1 + 2i ).ToObject (), NewStr ("foo" ).ToObject (), nil , mustCreateException (TypeErrorType , "unsupported operand type(s) for **: 'complex' and 'str'" )},
196200 {Pow , NewStr ("foo" ).ToObject (), NewComplex (1 + 2i ).ToObject (), nil , mustCreateException (TypeErrorType , "unsupported operand type(s) for **: 'str' and 'complex'" )},
0 commit comments