| 21 | namespace xgboost { |
| 22 | template <typename T> |
| 23 | void CompareFloat(T lhs, T rhs) { |
| 24 | if (std::isnan(lhs) || std::isnan(rhs)) { |
| 25 | ASSERT_TRUE(std::isnan(lhs)); |
| 26 | ASSERT_TRUE(std::isnan(rhs)); |
| 27 | return; |
| 28 | } |
| 29 | if (std::isinf(lhs) || std::isinf(rhs)) { |
| 30 | ASSERT_EQ(lhs, rhs); |
| 31 | return; |
| 32 | } |
| 33 | ASSERT_NEAR(lhs, rhs, kRtEps); |
| 34 | } |
| 35 | |
| 36 | template <typename Array> |
| 37 | void CompareIntArray(Json l, Json r) { |