mirror of
https://github.com/opencv/opencv.git
synced 2024-11-29 13:47:32 +08:00
Merge pull request #7709 from alalek:fix_java_tests
This commit is contained in:
commit
88ef8c996e
@ -1777,7 +1777,7 @@ public class CoreTest extends OpenCVTestCase {
|
||||
};
|
||||
Mat roots = new Mat();
|
||||
|
||||
assertEquals(0.0, Core.solvePoly(coeffs, roots));
|
||||
assertGE(1e-6, Math.abs(Core.solvePoly(coeffs, roots)));
|
||||
|
||||
truth = new Mat(3, 1, CvType.CV_32FC2) {
|
||||
{
|
||||
|
@ -97,6 +97,22 @@ template<typename T> struct OpAbsDiff
|
||||
T operator()(T a, T b) const { return a > b ? a - b : b - a; }
|
||||
};
|
||||
|
||||
// specializations to prevent "-0" results
|
||||
template<> struct OpAbsDiff<float>
|
||||
{
|
||||
typedef float type1;
|
||||
typedef float type2;
|
||||
typedef float rtype;
|
||||
float operator()(float a, float b) const { return std::abs(a - b); }
|
||||
};
|
||||
template<> struct OpAbsDiff<double>
|
||||
{
|
||||
typedef double type1;
|
||||
typedef double type2;
|
||||
typedef double rtype;
|
||||
double operator()(double a, double b) const { return std::abs(a - b); }
|
||||
};
|
||||
|
||||
template<typename T> struct OpAnd
|
||||
{
|
||||
typedef T type1;
|
||||
|
@ -359,7 +359,7 @@ public class ImgprocTest extends OpenCVTestCase {
|
||||
|
||||
double distance = Imgproc.compareHist(H1, H2, Imgproc.CV_COMP_CORREL);
|
||||
|
||||
assertEquals(1., distance);
|
||||
assertEquals(1., distance, EPS);
|
||||
}
|
||||
|
||||
public void testContourAreaMat() {
|
||||
@ -368,7 +368,7 @@ public class ImgprocTest extends OpenCVTestCase {
|
||||
|
||||
double area = Imgproc.contourArea(contour);
|
||||
|
||||
assertEquals(45., area);
|
||||
assertEquals(45., area, EPS);
|
||||
}
|
||||
|
||||
public void testContourAreaMatBoolean() {
|
||||
@ -377,7 +377,7 @@ public class ImgprocTest extends OpenCVTestCase {
|
||||
|
||||
double area = Imgproc.contourArea(contour, true);
|
||||
|
||||
assertEquals(45., area);
|
||||
assertEquals(45., area, EPS);
|
||||
// TODO_: write better test
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,11 @@ import static junit.framework.Assert.assertFalse;
|
||||
import static junit.framework.Assert.assertTrue;
|
||||
|
||||
public class OpenCVTestCase extends TestCase {
|
||||
|
||||
public static class TestSkipException extends RuntimeException {
|
||||
public TestSkipException() {}
|
||||
}
|
||||
|
||||
//change to 'true' to unblock fail on fail("Not yet implemented")
|
||||
public static final boolean passNYI = true;
|
||||
|
||||
@ -188,12 +193,40 @@ public class OpenCVTestCase extends TestCase {
|
||||
protected void runTest() throws Throwable {
|
||||
// Do nothing if the precondition does not hold.
|
||||
if (isTestCaseEnabled) {
|
||||
super.runTest();
|
||||
try {
|
||||
super.runTest();
|
||||
} catch (TestSkipException ex) {
|
||||
Log.w(TAG, "Test case \"" + this.getClass().getName() + "\" skipped!");
|
||||
assertTrue(true);
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "Test case \"" + this.getClass().getName() + "\" disabled!");
|
||||
}
|
||||
}
|
||||
|
||||
public void runBare() throws Throwable {
|
||||
Throwable exception = null;
|
||||
try {
|
||||
setUp();
|
||||
} catch (TestSkipException ex) {
|
||||
Log.w(TAG, "Test case \"" + this.getClass().getName() + "\" skipped!");
|
||||
assertTrue(true);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
runTest();
|
||||
} catch (Throwable running) {
|
||||
exception = running;
|
||||
} finally {
|
||||
try {
|
||||
tearDown();
|
||||
} catch (Throwable tearingDown) {
|
||||
if (exception == null) exception = tearingDown;
|
||||
}
|
||||
}
|
||||
if (exception != null) throw exception;
|
||||
}
|
||||
|
||||
protected Mat getMat(int type, double... vals)
|
||||
{
|
||||
return new Mat(matSize, matSize, type, new Scalar(vals));
|
||||
@ -211,6 +244,10 @@ public class OpenCVTestCase extends TestCase {
|
||||
TestCase.fail(msg);
|
||||
}
|
||||
|
||||
public static void assertGE(double v1, double v2) {
|
||||
assertTrue("Failed: " + v1 + " >= " + v2, v1 >= v2);
|
||||
}
|
||||
|
||||
public static <E extends Number> void assertListEquals(List<E> list1, List<E> list2) {
|
||||
if (list1.size() != list2.size()) {
|
||||
throw new UnsupportedOperationException();
|
||||
@ -425,10 +462,10 @@ public class OpenCVTestCase extends TestCase {
|
||||
|
||||
if (isEqualityMeasured)
|
||||
assertTrue("Max difference between expected and actiual Mats is "+ maxDiff + ", that bigger than " + eps,
|
||||
Core.checkRange(diff, true, 0.0, eps));
|
||||
maxDiff <= eps);
|
||||
else
|
||||
assertFalse("Max difference between expected and actiual Mats is "+ maxDiff + ", that less than " + eps,
|
||||
Core.checkRange(diff, true, 0.0, eps));
|
||||
maxDiff <= eps);
|
||||
}
|
||||
|
||||
protected static String readFile(String path) {
|
||||
@ -497,6 +534,10 @@ public class OpenCVTestCase extends TestCase {
|
||||
}
|
||||
}
|
||||
catch(Exception ex) {
|
||||
if (cname.startsWith(XFEATURES2D))
|
||||
{
|
||||
throw new TestSkipException();
|
||||
}
|
||||
message = TAG + " :: " + "could not instantiate " + cname + "! Exception: " + ex.getMessage();
|
||||
}
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
||||
|
||||
<target name="test">
|
||||
<mkdir dir="${test.dir}"/>
|
||||
<junit printsummary="true" haltonfailure="false" haltonerror="false" showoutput="false" logfailedtests="true" maxmemory="256m">
|
||||
<junit printsummary="true" haltonfailure="false" haltonerror="false" showoutput="true" logfailedtests="true" maxmemory="256m">
|
||||
<sysproperty key="java.library.path" path="${opencv.lib.path}"/>
|
||||
<env key="PATH" path="${opencv.lib.path}"/>
|
||||
<classpath refid="master-classpath"/>
|
||||
|
@ -27,6 +27,11 @@ import org.opencv.core.KeyPoint;
|
||||
import org.opencv.imgcodecs.Imgcodecs;
|
||||
|
||||
public class OpenCVTestCase extends TestCase {
|
||||
|
||||
public static class TestSkipException extends RuntimeException {
|
||||
public TestSkipException() {}
|
||||
}
|
||||
|
||||
//change to 'true' to unblock fail on fail("Not yet implemented")
|
||||
public static final boolean passNYI = true;
|
||||
|
||||
@ -214,12 +219,40 @@ public class OpenCVTestCase extends TestCase {
|
||||
protected void runTest() throws Throwable {
|
||||
// Do nothing if the precondition does not hold.
|
||||
if (isTestCaseEnabled) {
|
||||
super.runTest();
|
||||
try {
|
||||
super.runTest();
|
||||
} catch (TestSkipException ex) {
|
||||
OpenCVTestRunner.Log(TAG + " :: " + "Test case \"" + this.getClass().getName() + "\" skipped!");
|
||||
assertTrue(true);
|
||||
}
|
||||
} else {
|
||||
OpenCVTestRunner.Log(TAG + " :: " + "Test case \"" + this.getClass().getName() + "\" disabled!");
|
||||
}
|
||||
}
|
||||
|
||||
public void runBare() throws Throwable {
|
||||
Throwable exception = null;
|
||||
try {
|
||||
setUp();
|
||||
} catch (TestSkipException ex) {
|
||||
OpenCVTestRunner.Log(TAG + " :: " + "Test case \"" + this.getClass().getName() + "\" skipped!");
|
||||
assertTrue(true);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
runTest();
|
||||
} catch (Throwable running) {
|
||||
exception = running;
|
||||
} finally {
|
||||
try {
|
||||
tearDown();
|
||||
} catch (Throwable tearingDown) {
|
||||
if (exception == null) exception = tearingDown;
|
||||
}
|
||||
}
|
||||
if (exception != null) throw exception;
|
||||
}
|
||||
|
||||
protected Mat getMat(int type, double... vals)
|
||||
{
|
||||
return new Mat(matSize, matSize, type, new Scalar(vals));
|
||||
@ -237,6 +270,10 @@ public class OpenCVTestCase extends TestCase {
|
||||
TestCase.fail(msg);
|
||||
}
|
||||
|
||||
public static void assertGE(double v1, double v2) {
|
||||
assertTrue("Failed: " + v1 + " >= " + v2, v1 >= v2);
|
||||
}
|
||||
|
||||
public static <E extends Number> void assertListEquals(List<E> list1, List<E> list2) {
|
||||
if (list1.size() != list2.size()) {
|
||||
throw new UnsupportedOperationException();
|
||||
@ -451,10 +488,10 @@ public class OpenCVTestCase extends TestCase {
|
||||
|
||||
if (isEqualityMeasured)
|
||||
assertTrue("Max difference between expected and actiual Mats is "+ maxDiff + ", that bigger than " + eps,
|
||||
Core.checkRange(diff, true, 0.0, eps));
|
||||
maxDiff <= eps);
|
||||
else
|
||||
assertFalse("Max difference between expected and actiual Mats is "+ maxDiff + ", that less than " + eps,
|
||||
Core.checkRange(diff, true, 0.0, eps));
|
||||
maxDiff <= eps);
|
||||
}
|
||||
|
||||
protected static String readFile(String path) {
|
||||
@ -523,6 +560,10 @@ public class OpenCVTestCase extends TestCase {
|
||||
}
|
||||
}
|
||||
catch(Exception ex) {
|
||||
if (cname.startsWith(XFEATURES2D))
|
||||
{
|
||||
throw new TestSkipException();
|
||||
}
|
||||
message = TAG + " :: " + "could not instantiate " + cname + "! Exception: " + ex.getMessage();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user