message: core(test): zero values divide test (4.0+)
diff: @@ -2286,6 +2286,7 @@ template <typename T> static inline
  void testDivideChecks(const Mat& dst)
  {
  ASSERT_FALSE(dst.empty());
  + CV_StaticAssert(std::numeric_limits<T>::is_integer, "");
  for (int y = 0; y < dst.rows; y++)
  {
  for (int x = 0; x < dst.cols; x++)
  @@ -2298,6 +2299,35 @@ void testDivideChecks(const Mat& dst)
  }
  }
  +template <typename T> static inline
  +void testDivideChecksFP(const Mat& dst)
  +{
  + ASSERT_FALSE(dst.empty());
  + CV_StaticAssert(!std::numeric_limits<T>::is_integer, "");
  + for (int y = 0; y < dst.rows; y++)
  + {
  + for (int x = 0; x < dst.cols; x++)
  + {
  + if (y == 0 && x == 2)
  + {
  + EXPECT_TRUE(cvIsNaN(dst.at<T>(y, x))) << "dst(" << y << ", " << x << ") = " << dst.at<T>(y, x);
  + }
  + else if (x == 2)
  + {
  + EXPECT_TRUE(cvIsInf(dst.at<T>(y, x))) << "dst(" << y << ", " << x << ") = " << dst.at<T>(y, x);
  + }
  + else
  + {
  + EXPECT_FALSE(cvIsNaN(dst.at<T>(y, x))) << "dst(" << y << ", " << x << ") = " << dst.at<T>(y, x);
  + EXPECT_FALSE(cvIsInf(dst.at<T>(y, x))) << "dst(" << y << ", " << x << ") = " << dst.at<T>(y, x);
  + }
  + }
  + }
  +}
  +
  +template <> inline void testDivideChecks<float>(const Mat& dst) { testDivideChecksFP<float>(dst); }
  +template <> inline void testDivideChecks<double>(const Mat& dst) { testDivideChecksFP<double>(dst); }
  +
  template <typename T, bool isUMat> static inline
  void testDivide()
  