a couple of new smoke tests; Mat.java code clean-up
authorAndrey Pavlenko <no@email>
Mon, 25 Jul 2011 15:09:16 +0000 (15:09 +0000)
committerAndrey Pavlenko <no@email>
Mon, 25 Jul 2011 15:09:16 +0000 (15:09 +0000)
modules/java/android_test/src/org/opencv/test/core/MatTest.java
modules/java/android_test/src/org/opencv/test/core/coreTest.java
modules/java/src/java/core+Mat.java

index 91be5ba..67ed0ed 100644 (file)
@@ -60,8 +60,12 @@ public class MatTest extends OpenCVTestCase {
                assertEquals(CvType.CV_32F, gray0_32f.depth());
        }
 
-       public void testDispose() {
-               fail("Not yet implemented");
+       public void testRelease() {
+               assertTrue( gray0.empty() == false );
+               assertTrue( gray0.rows() > 0 );
+               gray0.release();
+               assertTrue( gray0.empty() == true );
+               assertTrue( gray0.rows() == 0 );
        }
 
        public void testDot() {
index d2e237c..4b5357f 100644 (file)
@@ -161,16 +161,31 @@ public class coreTest extends OpenCVTestCase {
                Scalar color = new Scalar(128);
                
                assertTrue(0 == Core.countNonZero(gray0));
-               Core.circle(gray0, center, radius, color, -1);
+               Core.circle(gray0, center, radius, color, -1 /*filled circle*/);
                assertTrue(0 != Core.countNonZero(gray0));
        }
 
        public void testCircleMatPointIntScalarIntInt() {
-               fail("Not yet implemented");
+               Point center = new Point(gray0.cols() / 2, gray0.rows()/2);
+               int radius = Math.min(gray0.cols()/4, gray0.rows()/4);
+               Scalar color = new Scalar(128);
+               
+               assertTrue(0 == Core.countNonZero(gray0));
+               Core.circle(gray0, center, radius, color, 2, 4/*4-connected line*/);
+               assertTrue(0 != Core.countNonZero(gray0));
        }
 
        public void testCircleMatPointIntScalarIntIntInt() {
-               fail("Not yet implemented");
+               Point center = new Point(gray0.cols() / 2, gray0.rows()/2);
+               Point center2 = new Point(gray0.cols(), gray0.rows());
+               int radius = Math.min(gray0.cols()/4, gray0.rows()/4);
+               Scalar color128 = new Scalar(128);
+               Scalar color0 = new Scalar(0);
+               
+               assertTrue(0 == Core.countNonZero(gray0));
+               Core.circle(gray0, center2, radius*2, color128, 2, 4, 1/*Number of fractional bits*/);
+               Core.circle(gray0, center, radius, color0, 2, 4, 0);
+               assertTrue(0 == Core.countNonZero(gray0));
        }
 
        public void testClipLine() {
index d60d1f9..09e8f14 100644 (file)
@@ -5,8 +5,8 @@ public class Mat {
 \r
 \r
     public Mat(long nativeMat) {\r
-        /*if(nativeMat == 0) \r
-            throw new java.lang.UnsupportedOperationException("Native object address is NULL");*/\r
+        if(nativeMat == 0) \r
+            throw new java.lang.UnsupportedOperationException("Native object address is NULL");\r
         this.nativeObj = nativeMat;\r
     }\r
     \r
@@ -25,6 +25,11 @@ public class Mat {
         this( nCreateMat(rows, cols, type, s.val[0], s.val[1], s.val[2], s.val[3]) );\r
     }\r
 \r
+    //javadoc:Mat::eye(rows,cols,type)\r
+    public static Mat eye(int rows, int cols, int type) {\r
+        return new Mat( nEye(rows, cols, type) );\r
+    }\r
+    \r
     //javadoc:Mat::release()\r
     public void release() {\r
         nRelease(nativeObj);\r
@@ -40,7 +45,6 @@ public class Mat {
     //javadoc:Mat::toString()\r
     @Override\r
     public String toString() {\r
-        if(nativeObj == 0) return  "Mat [ nativeObj=NULL ]";\r
         return  "Mat [ " +\r
                 rows() + "*" + cols() + "*" + CvType.typeToString(type()) +\r
                 ", isCont=" + isContinuous() + ", isSubmat=" + isSubmatrix() +\r
@@ -62,158 +66,142 @@ public class Mat {
 \r
     //javadoc:Mat::size()\r
     public Size size() {\r
-        if(nativeObj == 0) return new Size();\r
         return new Size(nSize(nativeObj));\r
     }\r
 \r
-    private void checkNull() {\r
-        if(nativeObj == 0) \r
-            throw new java.lang.UnsupportedOperationException("Native object address is NULL");\r
-    }\r
-\r
     //javadoc:Mat::type()\r
     public int type() {\r
-        checkNull();\r
         return nType(nativeObj);\r
     }\r
 \r
     //javadoc:Mat::depth()\r
-    public int depth() { return CvType.depth(type()); }\r
+    public int depth() { \r
+       return CvType.depth(type()); \r
+    }\r
 \r
     //javadoc:Mat::channels()\r
-    public int channels() { return CvType.channels(type()); }\r
+    public int channels() { \r
+       return CvType.channels(type());\r
+    }\r
 \r
     //javadoc:Mat::elemSize()\r
-    public int elemSize() { return CvType.ELEM_SIZE(type()); }\r
+    public int elemSize() { \r
+       return CvType.ELEM_SIZE(type()); \r
+    }\r
 \r
     //javadoc:Mat::rows()\r
     public int rows() {\r
-        if(nativeObj == 0) \r
-            return 0;\r
         return nRows(nativeObj);\r
     }\r
 \r
     //javadoc:Mat::height()\r
-    public int height() { return rows(); }\r
+    public int height() { \r
+       return rows(); \r
+    }\r
 \r
     //javadoc:Mat::cols()\r
     public int cols() {\r
-        if(nativeObj == 0) \r
-            return 0;\r
         return nCols(nativeObj);\r
     }\r
 \r
     //javadoc:Mat::width()\r
-    public int width() { return cols(); }\r
+    public int width() { \r
+       return cols(); \r
+    }\r
 \r
     //javadoc:Mat::total()\r
-    public int total() { return rows() * cols(); }\r
+    public int total() { \r
+       return rows() * cols(); \r
+    }\r
 \r
     //javadoc:Mat::dataAddr()\r
     public long dataAddr() {\r
-        if(nativeObj == 0) \r
-            return 0;\r
         return nData(nativeObj);\r
     }\r
 \r
     //javadoc:Mat::isContinuous()\r
     public boolean isContinuous() {\r
-        if(nativeObj == 0) \r
-            return false; // maybe throw an exception instead?\r
         return nIsCont(nativeObj);\r
     }\r
 \r
     //javadoc:Mat::isSubmatrix()\r
     public boolean isSubmatrix() {\r
-        if(nativeObj == 0) \r
-            return false; // maybe throw an exception instead?\r
         return nIsSubmat(nativeObj);\r
     }\r
 \r
     //javadoc:Mat::submat(rowStart,rowEnd,colStart,colEnd)\r
     public Mat submat(int rowStart, int rowEnd, int colStart, int colEnd) {\r
-        checkNull();\r
         return new Mat( nSubmat(nativeObj, rowStart, rowEnd, colStart, colEnd) );\r
     }\r
 \r
     //javadoc:Mat::rowRange(startrow,endrow)\r
-    public Mat rowRange(int startrow, int endrow) { return submat(startrow, endrow, 0, -1); }\r
+    public Mat rowRange(int startrow, int endrow) { \r
+       return submat(startrow, endrow, 0, -1); \r
+    }\r
 \r
     //javadoc:Mat::row(i)\r
-    public Mat row(int i) { return submat(i, i+1, 0, -1); }\r
+    public Mat row(int i) { \r
+       return submat(i, i+1, 0, -1); \r
+    }\r
 \r
     //javadoc:Mat::colRange(startcol,endcol)\r
-    public Mat colRange(int startcol, int endcol) { return submat(0, -1, startcol, endcol); }\r
+    public Mat colRange(int startcol, int endcol) { \r
+       return submat(0, -1, startcol, endcol); \r
+    }\r
 \r
     //javadoc:Mat::col(j)\r
-    public Mat col(int j) { return submat(0, -1, j, j+1); }\r
+    public Mat col(int j) { \r
+       return submat(0, -1, j, j+1); \r
+    }\r
     \r
     //javadoc:Mat::clone()\r
     public Mat clone() {\r
-        checkNull();\r
         return new Mat( nClone(nativeObj) );\r
     }\r
 \r
     //javadoc:Mat::put(row,col,data)\r
     public int put(int row, int col, double...data) {\r
-        checkNull();\r
-        if(data != null)\r
-            return nPutD(nativeObj, row, col, data.length, data);\r
-        else\r
-            return 0;\r
+         return nPutD(nativeObj, row, col, data.length, data);\r
     }\r
 \r
     //javadoc:Mat::put(row,col,data)\r
     public int put(int row, int col, float[] data) {\r
-        checkNull();\r
-        if(data != null) {\r
-            int t = type();\r
-            if(CvType.depth(t) == CvType.CV_32F) {\r
-                return nPutF(nativeObj, row, col, data.length, data);\r
-            }\r
-            throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
-        } else return 0;\r
+        int t = type();\r
+        if(CvType.depth(t) == CvType.CV_32F) {\r
+            return nPutF(nativeObj, row, col, data.length, data);\r
+        }\r
+        throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
     }\r
 \r
     //javadoc:Mat::put(row,col,data) \r
     public int put(int row, int col, int[] data) {\r
-        checkNull();\r
-        if(data != null) {\r
-            int t = type();\r
-            if(CvType.depth(t) == CvType.CV_32S) {\r
-                return nPutI(nativeObj, row, col, data.length, data);\r
-            }\r
-            throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
-        } else return 0;\r
+        int t = type();\r
+        if(CvType.depth(t) == CvType.CV_32S) {\r
+            return nPutI(nativeObj, row, col, data.length, data);\r
+        }\r
+        throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
     }\r
     \r
     //javadoc:Mat::put(row,col,data)\r
     public int put(int row, int col, short[] data) {\r
-        checkNull();\r
-        if(data != null) {\r
-            int t = type();\r
-            if(CvType.depth(t) == CvType.CV_16U || CvType.depth(t) == CvType.CV_16S) {\r
-                return nPutS(nativeObj, row, col, data.length, data);\r
-            }\r
-            throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
-        } else return 0;\r
+        int t = type();\r
+        if(CvType.depth(t) == CvType.CV_16U || CvType.depth(t) == CvType.CV_16S) {\r
+            return nPutS(nativeObj, row, col, data.length, data);\r
+        }\r
+        throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
     }\r
     \r
     //javadoc:Mat::put(row,col,data)\r
     public int put(int row, int col, byte[] data) {\r
-        checkNull();\r
-        if(data != null) {\r
-            int t = type();\r
-            if(CvType.depth(t) == CvType.CV_8U || CvType.depth(t) == CvType.CV_8S) {\r
-                return nPutB(nativeObj, row, col, data.length, data);\r
-            }\r
-            throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
-        } else return 0;\r
+        int t = type();\r
+        if(CvType.depth(t) == CvType.CV_8U || CvType.depth(t) == CvType.CV_8S) {\r
+            return nPutB(nativeObj, row, col, data.length, data);\r
+        }\r
+        throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
     }\r
     \r
     //javadoc:Mat::get(row,col,data)\r
     public int get(int row, int col, byte[] data) {\r
-        checkNull();\r
         int t = type();\r
         if(CvType.depth(t) == CvType.CV_8U || CvType.depth(t) == CvType.CV_8S) {\r
             return nGetB(nativeObj, row, col, data.length, data);\r
@@ -223,7 +211,6 @@ public class Mat {
 \r
     //javadoc:Mat::get(row,col,data)\r
     public int get(int row, int col, short[] data) {\r
-        checkNull();\r
         int t = type();\r
         if(CvType.depth(t) == CvType.CV_16U || CvType.depth(t) == CvType.CV_16S) {\r
             return nGetS(nativeObj, row, col, data.length, data);\r
@@ -233,7 +220,6 @@ public class Mat {
 \r
     //javadoc:Mat::get(row,col,data)\r
     public int get(int row, int col, int[] data) {\r
-        checkNull();\r
         int t = type();\r
         if(CvType.depth(t) == CvType.CV_32S) {\r
             return nGetI(nativeObj, row, col, data.length, data);\r
@@ -243,7 +229,6 @@ public class Mat {
 \r
     //javadoc:Mat::get(row,col,data)\r
     public int get(int row, int col, float[] data) {\r
-        checkNull();\r
         int t = type();\r
         if(CvType.depth(t) == CvType.CV_32F) {\r
             return nGetF(nativeObj, row, col, data.length, data);\r
@@ -253,7 +238,6 @@ public class Mat {
 \r
     //javadoc:Mat::get(row,col,data)\r
     public int get(int row, int col, double[] data) {\r
-        checkNull();\r
         int t = type();\r
         if(CvType.depth(t) == CvType.CV_64F) {\r
             return nGetD(nativeObj, row, col, data.length, data);\r
@@ -263,44 +247,32 @@ public class Mat {
 \r
     //javadoc:Mat::get(row,col)\r
     public double[] get(int row, int col) {\r
-        checkNull();\r
-        //CvType t = type();\r
-        //if(t.depth() == CvType.CV_64F) {\r
-            return nGet(nativeObj, row, col);\r
-        //}\r
-        //throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);\r
+        return nGet(nativeObj, row, col);\r
     }\r
 \r
 \r
     //javadoc:Mat::setTo(s)\r
     public void setTo(Scalar s) {\r
-        checkNull();\r
         nSetTo(nativeObj, s.val[0], s.val[1], s.val[2], s.val[3]);\r
     }\r
     \r
     //javadoc:Mat::copyTo(m)\r
     public void copyTo(Mat m) {\r
-        checkNull();\r
-        if(m.nativeObj == 0) \r
-            throw new java.lang.UnsupportedOperationException("Destination native object address is NULL");\r
         nCopyTo(nativeObj, m.nativeObj);\r
     }\r
     \r
     //javadoc:Mat::dot(m)\r
     public double dot(Mat m) {\r
-        checkNull();\r
         return nDot(nativeObj, m.nativeObj);\r
     }\r
     \r
     //javadoc:Mat::cross(m)\r
     public Mat cross(Mat m) {\r
-        checkNull();\r
         return new Mat( nCross(nativeObj, m.nativeObj) );\r
     }\r
 \r
     //javadoc:Mat::inv()\r
     public Mat inv() {\r
-        checkNull();\r
         return new Mat( nInv(nativeObj) );\r
     }\r
     \r
@@ -309,11 +281,6 @@ public class Mat {
         return nativeObj;\r
     }\r
     \r
-    //javadoc:Mat::eye(rows,cols,type)\r
-    static public Mat eye(int rows, int cols, int type) {\r
-        return new Mat( nEye(rows, cols, type) );\r
-    }\r
-    \r
     // native stuff\r
     static { System.loadLibrary("opencv_java"); }\r
     public final long nativeObj;\r