Added more test cases

pull/1384/head
hbristow 12 years ago
parent 5a34b00737
commit 9cc949e341
  1. 82
      modules/matlab/test/OpenCVTest.m

@ -4,6 +4,11 @@ classdef OpenCVTest < matlab.unittest.TestCase
methods(Test) methods(Test)
% -------------------------------------------------------------------------
% EXCEPTIONS
% Check that errors and exceptions are thrown correctly
% -------------------------------------------------------------------------
% check that std exception is thrown % check that std exception is thrown
function stdException(testcase) function stdException(testcase)
try try
@ -37,6 +42,11 @@ classdef OpenCVTest < matlab.unittest.TestCase
end end
end end
% -------------------------------------------------------------------------
% SIZES AND FILLS
% Check that matrices are correctly filled and resized
% -------------------------------------------------------------------------
% check that a matrix is correctly filled with random numbers % check that a matrix is correctly filled with random numbers
function randomFill(testcase) function randomFill(testcase)
sz = [7 11]; sz = [7 11];
@ -46,6 +56,61 @@ classdef OpenCVTest < matlab.unittest.TestCase
testcase.verifyNotEqual(mat, zeros(sz), 'Matrix should be nonzero'); testcase.verifyNotEqual(mat, zeros(sz), 'Matrix should be nonzero');
end end
function transpose(testcase)
m = randn(19, 81);
mt1 = transpose(m);
mt2 = cv.transpose(m);
testcase.verifyEqual(size(mt1), size(mt2), 'Matrix transposed to incorrect dimensionality');
testcase.verifyLessThan(norm(mt1 - mt2), 1e-8, 'Too much precision lost in tranposition');
end
% -------------------------------------------------------------------------
% TYPE CASTS
% Check that types are correctly cast
% -------------------------------------------------------------------------
% -------------------------------------------------------------------------
% PRECISION
% Check that basic operations are performed with sufficient precision
% -------------------------------------------------------------------------
% check that summing elements is within reasonable precision
function sumElements(testcase)
a = randn(5000);
b = sum(a(:));
c = cv.sum(a);
testcase.verifyLessThan(norm(b - c), 1e-8, 'Matrix reduction with insufficient precision');
end
% check that adding two matrices is within reasonable precision
function addPrecision(testcase)
a = randn(50);
b = randn(50);
c = a+b;
d = cv.add(a, b);
testcase.verifyLessThan(norm(c - d), 1e-8, 'Matrices are added with insufficient precision');
end
% check that performing gemm is within reasonable precision
function gemmPrecision(testcase)
a = randn(10, 50);
b = randn(50, 10);
c = randn(10, 10);
alpha = 2.71828;
gamma = 1.61803;
d = alpha*a*b + gamma*c;
e = cv.gemm(a, b, alpha, c, gamma);
testcase.verifyLessThan(norm(d - e), 1e-8, 'Matrices are multiplied with insufficient precision');
end
% -------------------------------------------------------------------------
% MISCELLANEOUS
% Miscellaneous tests
% -------------------------------------------------------------------------
% check that cv::waitKey waits for at least specified time % check that cv::waitKey waits for at least specified time
function waitKey(testcase) function waitKey(testcase)
tic(); tic();
@ -53,5 +118,22 @@ classdef OpenCVTest < matlab.unittest.TestCase
elapsed = toc(); elapsed = toc();
testcase.verifyGreaterThan(elapsed, 0.5, 'Elapsed time should be at least 0.5 seconds'); testcase.verifyGreaterThan(elapsed, 0.5, 'Elapsed time should be at least 0.5 seconds');
end end
% check that highgui window can be created and destroyed
function createAndDestroyWindow(testcase)
try
cv.namedWindow('test window');
catch
testcase.verifyFail('could not create window');
end
try
cv.destroyWindow('test window');
catch
testcase.verifyFail('could not destroy window');
end
testcase.verifyTrue(true);
end
end end
end end

Loading…
Cancel
Save