#1783: test and fix for the bug
authorAndrey Pavlenko <no@email>
Tue, 10 Apr 2012 08:22:33 +0000 (08:22 +0000)
committerAndrey Pavlenko <no@email>
Tue, 10 Apr 2012 08:22:33 +0000 (08:22 +0000)
modules/core/src/mathfuncs.cpp
modules/core/test/test_math.cpp

index b9e09fa..4e25eed 100644 (file)
@@ -2051,7 +2051,7 @@ bool chackIntegerRang(cv::Mat src, Point& bad_pt, int minVal, int maxVal, double
     for (int j = 0; j < as_one_channel.rows; ++j)
         for (int i = 0; i < as_one_channel.cols; ++i)
         {    
-            if (as_one_channel.at<typename type_ass::type>(j ,i) <= minVal || as_one_channel.at<typename type_ass::type>(j ,i) >= maxVal)
+            if (as_one_channel.at<typename type_ass::type>(j ,i) < minVal || as_one_channel.at<typename type_ass::type>(j ,i) >= maxVal)
             {            
                 bad_pt.y = j ; 
                 bad_pt.x = i % src.channels();
index 35afafc..1c4293b 100644 (file)
@@ -2402,7 +2402,17 @@ TYPED_TEST_P(Core_CheckRange, Bounds)
     delete bad_pt;
 }
 
-REGISTER_TYPED_TEST_CASE_P(Core_CheckRange, Negative, Positive, Bounds);
+TYPED_TEST_P(Core_CheckRange, Zero)
+{
+    double min_bound = 0.0;
+    double max_bound = 0.1;
+
+    cv::Mat src = cv::Mat::zeros(3,3, cv::DataDepth<TypeParam>::value);
+
+    ASSERT_TRUE( checkRange(src, true, NULL, min_bound, max_bound) );
+}
+
+REGISTER_TYPED_TEST_CASE_P(Core_CheckRange, Negative, Positive, Bounds, Zero);
 
 typedef ::testing::Types<signed char,unsigned char, signed short, unsigned short, signed int> mat_data_types;
 INSTANTIATE_TYPED_TEST_CASE_P(Negative_Test, Core_CheckRange, mat_data_types);