From 5a34b00737abc5a48a0b9c5c57d23a3e68024031 Mon Sep 17 00:00:00 2001 From: hbristow Date: Fri, 12 Jul 2013 16:57:05 +1000 Subject: [PATCH] Added more test cases --- modules/matlab/CMakeLists.txt | 2 +- modules/matlab/test/CMakeLists.txt | 37 +++++++++++++----------------- modules/matlab/test/OpenCVTest.m | 34 ++++++++++++++++++--------- modules/matlab/test/testsuite.m | 3 +++ 4 files changed, 43 insertions(+), 33 deletions(-) diff --git a/modules/matlab/CMakeLists.txt b/modules/matlab/CMakeLists.txt index ae35bcdd0..ae873a73f 100644 --- a/modules/matlab/CMakeLists.txt +++ b/modules/matlab/CMakeLists.txt @@ -153,7 +153,7 @@ add_custom_command( ${CMAKE_CURRENT_SOURCE_DIR}/generator/gen_matlab.py ${HDR_PARSER_PATH} ${opencv_hdrs} ${CMAKE_CURRENT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} -E touch ${GENERATE_PROXY} - COMMENT "Generating matlab source files" + COMMENT "Generating Matlab source files" ) # compile diff --git a/modules/matlab/test/CMakeLists.txt b/modules/matlab/test/CMakeLists.txt index dd773a5ed..c8c5177fa 100644 --- a/modules/matlab/test/CMakeLists.txt +++ b/modules/matlab/test/CMakeLists.txt @@ -1,25 +1,20 @@ -# compile the test sources -file(GLOB SOURCE_FILES "*.cpp") -add_custom_target(opencv_test_matlab_sources) -foreach(SOURCE_FILE ${SOURCE_FILES}) - get_filename_component(FILENAME ${SOURCE_FILE} NAME_WE) - # compile the source file using mex - add_custom_command(TARGET opencv_test_matlab_sources PRE_BUILD - COMMAND echo ${MATLAB_MEX_SCRIPT} ${MEX_INCLUDES} - ${SOURCE_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) -endforeach() +set(TEST_PROXY ${CMAKE_CURRENT_BINARY_DIR}/test.proxy) +file(REMOVE ${TEST_PROXY}) -# copy the test files into the build dir -file(GLOB TEST_FILES "*.m") -foreach(TEST_FILE ${TEST_FILES}) - add_custom_command(TARGET opencv_test_matlab_sources PRE_BUILD - COMMAND ${CMAKE_COMMAND} -E - copy ${TEST_FILE} ${CMAKE_CURRENT_BINARY_DIR} - ) -endforeach() - +# generate +# call the python executable to generate the Matlab gateways +add_custom_command( + OUTPUT ${TEST_PROXY} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/OpenCVTest.m ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/testsuite.m ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E touch ${TEST_PROXY} + COMMENT "Building Matlab tests" +) + +# targets +# opencv_matlab_sources --> opencv_matlab +add_custom_target(opencv_test_matlab ALL DEPENDS ${TEST_PROXY}) +add_dependencies(opencv_test_matlab ${the_module}) # run the matlab test suite add_test(opencv_test_matlab diff --git a/modules/matlab/test/OpenCVTest.m b/modules/matlab/test/OpenCVTest.m index c78f9898c..3b4b89c5a 100644 --- a/modules/matlab/test/OpenCVTest.m +++ b/modules/matlab/test/OpenCVTest.m @@ -4,16 +4,6 @@ classdef OpenCVTest < matlab.unittest.TestCase methods(Test) - % check if the autogenerated functions can be found - function functionsExist(testcase) - try - cv.rand(); - catch - testcase.verifyFail(); - end - testcase.verifyTrue(true); - end - % check that std exception is thrown function stdException(testcase) try @@ -27,7 +17,13 @@ classdef OpenCVTest < matlab.unittest.TestCase % check that OpenCV exceptions are correctly caught function cvException(testcase) - testcase.verifyFail(); + try + cv_exception(); + testcase.verifyFail(); + catch + % TODO: Catch more specific exception + testcase.verifyTrue(true); + end end % check that all exceptions are caught @@ -41,5 +37,21 @@ classdef OpenCVTest < matlab.unittest.TestCase end end + % check that a matrix is correctly filled with random numbers + function randomFill(testcase) + sz = [7 11]; + mat = zeros(sz); + mat = cv.randn(mat, 0, 1); + testcase.verifyEqual(size(mat), sz, 'Matrix should not change size'); + testcase.verifyNotEqual(mat, zeros(sz), 'Matrix should be nonzero'); + end + + % check that cv::waitKey waits for at least specified time + function waitKey(testcase) + tic(); + cv.waitKey(500); + elapsed = toc(); + testcase.verifyGreaterThan(elapsed, 0.5, 'Elapsed time should be at least 0.5 seconds'); + end end end diff --git a/modules/matlab/test/testsuite.m b/modules/matlab/test/testsuite.m index 2f31911ac..9e7d44aab 100644 --- a/modules/matlab/test/testsuite.m +++ b/modules/matlab/test/testsuite.m @@ -1,3 +1,6 @@ +% add the opencv bindings folder +addpath .. + %setup the tests opencv_tests = OpenCVTest();