Skip to content

Commit

Permalink
fix bugs & start adding octave-unit-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ptahmose committed Oct 19, 2024
1 parent 757bfa1 commit d673a1b
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 10 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ cmake_minimum_required (VERSION 3.11)

set(MEXLIBCZI_MAJOR 0)
set(MEXLIBCZI_MINOR 3)
set(MEXLIBCZI_PATCH 0)
set(MEXLIBCZI_PATCH 1)
set(MEXLIBCZI_EXT "alpha")

if(WIN32)
Expand Down
4 changes: 1 addition & 3 deletions lib/src/functions/func_addsubblock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ void MexFunction_AddSubBlock_CheckArguments(MatlabArgs* args)
throw invalid_argument("1st argument must be an integer");
}

//if (!MexApi::GetInstance().MxIsChar(args->prhs[2]))
if (args->app_functions->pfn_IsChar(args->prhs[2]))
if (!args->app_functions->pfn_IsChar(args->prhs[2]))
{
throw invalid_argument("2nd argument must be a string");
}
Expand All @@ -38,7 +37,6 @@ void MexFunction_AddSubBlock_CheckArguments(MatlabArgs* args)
throw invalid_argument("3nd argument must be a ROI");
}

//if (!CArgsUtils::IsNumericArrayOfMinSize(args->prhs[4], 1, args->app_functions) && !MexApi::GetInstance().MxIsChar(args->prhs[4]))
if (!CArgsUtils::IsNumericArrayOfMinSize(args->prhs[4], 1, args->app_functions) && !args->app_functions->pfn_IsChar(args->prhs[4]))
{
throw invalid_argument("4th argument must be an integer or a string");
Expand Down
8 changes: 2 additions & 6 deletions lib/src/functions/func_createcziwriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,14 @@ void MexFunction_CreateCziWriter_CheckArguments(MatlabArgs* args)
throw invalid_argument("not enough arguments");
}

//if (!MexApi::GetInstance().MxIsChar(args->prhs[1], args->app_functions))
if (args->app_functions->pfn_IsChar(args->prhs[1]))
if (!args->app_functions->pfn_IsChar(args->prhs[1]))
{
throw invalid_argument("Expecting a string as 2nd argument");
}

if (args->nrhs >= 2)
{
//if (!MexApi::GetInstance().MxIsChar(args->prhs[1], args->app_functions))
if (args->app_functions->pfn_IsChar(args->prhs[2]))
if (!args->app_functions->pfn_IsChar(args->prhs[2]))
{
throw invalid_argument("Expecting a string as 3rd argument");
}
Expand All @@ -38,13 +36,11 @@ void MexFunction_CreateCziWriter_CheckArguments(MatlabArgs* args)

void MexFunction_CreateCziWriter_Execute(MatlabArgs* args)
{
//const auto filename = MexApi::GetInstance().UpMxArrayToMatlabAllocatedUtf8String(args->prhs[1]);
const auto filename = CArgsUtils::GetAsUtf8String(args->prhs[1], args->app_functions);

bool overwrite_existing_file = false;
if (args->nrhs >= 2)
{
//const auto option = MexApi::GetInstance().UpMxArrayToMatlabAllocatedUtf8String(args->prhs[2]);
const auto option = CArgsUtils::GetAsUtf8String(args->prhs[2], args->app_functions);
if (option == "x" || option == "overwrite")
{
Expand Down
24 changes: 24 additions & 0 deletions tests/octave/test_basic_operation.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
% File: test_basic_operation.m

function isValid = checkVersionString(versionStr)
% Function to check if the version string follows "XXX.XXX.XXX" pattern
pattern = '^\d{1,3}\.\d{1,3}\.\d{1,3}';
isValid = ~isempty(regexp(versionStr, pattern, 'once'));
end

addpath('../../OctaveMex');

%!test
%! version=octavelibczi('GetVersion');
%! assert(checkVersionString(version.VersionString))

%!test
%! version=octavelibczi('GetVersion');
%! assert(checkVersionString(version.libCZIVersion))

%!test
%! version=octavelibczi('GetVersion');
%! assert(~isempty(version.CompilerIdentification))

%!test
%! fail ("octavelibczi('Open','non_existing_file.czi')")
36 changes: 36 additions & 0 deletions tests/octave/test_write.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
% File: test_write.m

addpath('../../OctaveMex');

%!test
%! handle=octavelibczi ('CreateCziWriter','test.czi','x');
%! uint8_array = uint8([1, 2; 3, 4]);
%! octavelibczi ('AddSubBlock',handle,'C0T0',[0 0 2 2],'gray8',uint8_array,struct('M',0));
%! uint8_array = uint8([10, 20; 30, 40]);
%! octavelibczi ('AddSubBlock',handle,'C0T1',[0 0 2 2],'gray8',uint8_array,struct('M',0));
%! octavelibczi ('CloseCziWriter',handle);
%! handle = octavelibczi ('Open','test.czi');
%! info = octavelibczi ('GetInfo', handle);
%! assert(isa(info.subblockcount, 'int32'));
%! assert(info.subblockcount, int32(2));
%! assert(info.minMindex, int32(0));
%! assert(info.maxMindex, int32(0));
%! assert(info.boundingBox, int32([0,0,2,2]));
%! assert(info.boundingBoxLayer0, int32([0,0,2,2]));
%! octavelibczi ('Close',handle);
%! delete('test.czi');

%!test
%! handle=octavelibczi ('CreateCziWriter','test2.czi','x');
%! uint8_array = uint8([1, 2; 3, 4]);
%! octavelibczi ('AddSubBlock',handle,'C0T0',[0 0 2 2],'gray8',uint8_array,struct('M',0));
%! uint8_array = uint8([10, 20; 30, 40]);
%! octavelibczi ('AddSubBlock',handle,'C0T1',[0 0 2 2],'gray8',uint8_array,struct('M',0));
%! octavelibczi ('CloseCziWriter',handle);
%! handle = octavelibczi ('Open','test2.czi');
%! subblock1 = octavelibczi ('GetSubBlockBitmap', handle, 0);
%! assert(subblock1, uint8([1, 2; 3, 4]));
%! subblock2 = octavelibczi ('GetSubBlockBitmap', handle, 1);
%! assert(subblock2, uint8([10, 20; 30, 40]));
%! octavelibczi ('Close',handle);
%! delete('test2.czi');

0 comments on commit d673a1b

Please sign in to comment.