TEST(Zhiltsov_Max_ComplexNumberTest, LimitingValueAddition_Correct) { const ComplexNumber z(std::numeric_limits<double>::max(), 0); ComplexNumber sum = z + z; EXPECT_TRUE(std::isinf(sum.getRe())); }
TEST(Zhiltsov_Max_ComplexNumberTest, Multiplication_Correct) { const ComplexNumber z1(1.0e100, 0); const ComplexNumber z2(2.0, 0); ComplexNumber result = z1 * z2; EXPECT_DOUBLE_EQ(2.0e100, result.getRe()); }
TEST(Zhiltsov_Max_ComplexNumberTest, DISABLED_LimitingValueAddition_Incorrect) { const ComplexNumber z1(std::numeric_limits<double>::max(), 0); const ComplexNumber z2(1.0, 0.0); ComplexNumber sum = z1 + z2; /* Failure because of IEEE754 floating point format and addition algorithm in particular. Expected result is at least "+inf" value instead of the same value as bigger operand. Possible solution: a) try to use a safe arihmetics algorithms b) throw an expection */ EXPECT_TRUE(std::isinf(sum.getRe())); }