test/run_jsonlab_test.m
test/run_jsonlab_test.m
output
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Demonstration of Basic Utilities of JSONlab %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% rngstate = rand ('state'); randseed=hex2dec('623F9A9E'); clear data2json json2data if(exist('isequaln')==0) isequaln=@isequal; end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a simple scalar value \n') fprintf(1,'%%=================================================\n\n') data2json=pi savejson('',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% an empty array \n') fprintf(1,'%%=================================================\n\n') data2json=[] savejson('',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% an ampty string \n') fprintf(1,'%%=================================================\n\n') data2json='' savejson('emptystr',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a simple row vector \n') fprintf(1,'%%=================================================\n\n') data2json=1:3 savejson('',data2json) json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a simple column vector \n') fprintf(1,'%%=================================================\n\n') data2json=(1:3)' savejson('',data2json) json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a string array \n') fprintf(1,'%%=================================================\n\n') data2json=['AC';'EG'] savejson('',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a string with escape symbols \n') fprintf(1,'%%=================================================\n\n') data2json=sprintf('AB\tCD\none"two') savejson('str',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a mix-typed cell \n') fprintf(1,'%%=================================================\n\n') data2json={'a',true,[2;3]} savejson('',data2json) json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 3-D array in nested array form\n') fprintf(1,'%%=================================================\n\n') data2json=reshape(1:(2*4*6),[2,4,6]); savejson('',data2json,'NestArray',1) json2data=loadjson(ans,'fastarrayparser',0) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 3-D array in annotated array form\n') fprintf(1,'%%=================================================\n\n') data2json=reshape(1:(2*4*6),[2,4,6]); savejson('',data2json,'NestArray',0) json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 4-D array in annotated array form\n') fprintf(1,'%%=================================================\n\n') data2json=reshape(1:(2*4*3*2),[2,4,3,2]); savejson('',data2json,'NestArray',0) % nestarray for 4-D or above is not working json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 3-D array in nested array form (JSONLab 1.9)\n') fprintf(1,'%%=================================================\n\n') data2json=reshape(1:(2*4*6),[2,4,6]); savejson('',data2json,'NestArray',1,'FormatVersion',1.8) json2data=loadjson(ans,'FormatVersion',1.8) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 3-D array in annotated array form (JSONLab 1.9 or earlier)\n') fprintf(1,'%%=================================================\n\n') data2json=reshape(1:(2*4*6),[2,4,6]); savejson('',data2json,'NestArray',0,'FormatVersion',1.8) json2data=loadjson(ans,'FormatVersion',1.8) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a complex number\n') fprintf(1,'%%=================================================\n\n') data2json=1+2i savejson('',data2json) json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a complex matrix\n') fprintf(1,'%%=================================================\n\n') data2json=magic(6); data2json=data2json(:,1:3)+data2json(:,4:6)*1i savejson('',data2json) json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% MATLAB special constants\n') fprintf(1,'%%=================================================\n\n') data2json=[NaN Inf -Inf] savejson('specials',data2json) json2data=loadjson(ans) if(~isequaln(json2data.specials,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a real sparse matrix\n') fprintf(1,'%%=================================================\n\n') data2json=sprand(10,10,0.1) savejson('sparse',data2json,'FloatFormat','%.18g') json2data=loadjson(ans) if(~isequaln(json2data.sparse,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a complex sparse matrix\n') fprintf(1,'%%=================================================\n\n') data2json=sprand(10,10,0.1); data2json=data2json-data2json*1i savejson('complex_sparse',data2json,'FloatFormat','%.18g') json2data=loadjson(ans) if(~isequaln(json2data.complex_sparse,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% an all-zero sparse matrix\n') fprintf(1,'%%=================================================\n\n') data2json=sparse(2,3); savejson('all_zero_sparse',data2json) json2data=loadjson(ans) if(~isequaln(json2data.all_zero_sparse,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% an empty sparse matrix\n') fprintf(1,'%%=================================================\n\n') data2json=sparse([]); savejson('empty_sparse',data2json) json2data=loadjson(ans) if(~isequaln(json2data.empty_sparse,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% an empty 0-by-0 real matrix\n') fprintf(1,'%%=================================================\n\n') data2json=[]; savejson('empty_0by0_real',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% an empty 0-by-3 real matrix\n') fprintf(1,'%%=================================================\n\n') data2json=zeros(0,3); savejson('empty_0by3_real',data2json) json2data=loadjson(ans) if(~isequaln(json2data.empty_0by3_real,data2json)) warning('conversion does not preserve original data'); end fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a sparse real column vector\n') fprintf(1,'%%=================================================\n\n') data2json=sparse([0,3,0,1,4]'); savejson('sparse_column_vector',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a sparse complex column vector\n') fprintf(1,'%%=================================================\n\n') data2json=data2json-1i*data2json; savejson('complex_sparse_column_vector',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a sparse real row vector\n') fprintf(1,'%%=================================================\n\n') data2json=sparse([0,3,0,1,4]); savejson('sparse_row_vector',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a sparse complex row vector\n') fprintf(1,'%%=================================================\n\n') data2json=data2json-1i*data2json; savejson('complex_sparse_row_vector',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a structure\n') fprintf(1,'%%=================================================\n\n') data2json=struct('name','Think Different','year',1997,'magic',magic(3),... 'misfits',[Inf,NaN],'embedded',struct('left',true,'right',false)) savejson('astruct',data2json,struct('ParseLogical',1)) json2data=loadjson(ans) class(json2data.astruct.embedded.left) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a structure array\n') fprintf(1,'%%=================================================\n\n') data2json=struct('name','Nexus Prime','rank',9); data2json(2)=struct('name','Sentinel Prime','rank',9); data2json(3)=struct('name','Optimus Prime','rank',9); savejson('Supreme Commander',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a cell array\n') fprintf(1,'%%=================================================\n\n') data2json=cell(3,1); data2json{1}=struct('buzz',1.1,'rex',1.2,'bo',1.3,'hamm',2.0,'slink',2.1,'potato',2.2,... 'woody',3.0,'sarge',3.1,'etch',4.0,'lenny',5.0,'squeeze',6.0,'wheezy',7.0); data2json{2}=struct('Ubuntu',['Kubuntu';'Xubuntu';'Lubuntu']); data2json{3}=[10.04,10.10,11.04,11.10] savejson('debian',data2json,struct('FloatFormat','%.2f')) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% invalid field-name handling\n') fprintf(1,'%%=================================================\n\n') json2data=loadjson('{"ValidName":1, "_InvalidName":2, ":Field:":3, "项目":"绝密"}') fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a function handle\n') fprintf(1,'%%=================================================\n\n') data2json=@(x) x+1 savejson('handle',data2json) json2data=loadjson(ans) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 2D cell array\n') fprintf(1,'%%=================================================\n\n') data2json={{1,{2,3}},{4,5},{6};{7},{8,9},{10}}; savejson('data2json',data2json) json2data=loadjson(ans) % only savejson works for cell arrays, loadjson has issues fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 2D struct array\n') fprintf(1,'%%=================================================\n\n') data2json=repmat(struct('idx',0,'data','structs'),[2,3]) for i=1:6 data2json(i).idx=i; end savejson('data2json',data2json) json2data=loadjson(ans) if(exist('datetime')) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% datetime object \n') fprintf(1,'%%=================================================\n\n') data2json=datetime({'8 April 2015','9 May 2015'}, 'InputFormat','d MMMM yyyy') savejson('',data2json) json2data=loadjson(ans) end if(exist('containers.Map')) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a container.Maps object \n') fprintf(1,'%%=================================================\n\n') data2json=containers.Map({'Andy','William','Om'},{21,21,22}) savejson('',data2json) json2data=loadjson(ans) end if(exist('istable')) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a table object \n') fprintf(1,'%%=================================================\n\n') Names={'Andy','William','Om'}'; Age=[21,21,22]'; data2json=table(Names,Age) savejson('table',table(Names,Age)) json2data=loadjson(ans) end if(exist('bandwidth')) fprintf(1,'\n%%=================================================\n') fprintf(1,'%% use _ArrayShape_ \n') fprintf(1,'%%=================================================\n\n') lband=2; uband=3; data2json=spdiags(true(8,lband+uband+1),-uband:lband,5,8); data2json=full(double(data2json)); data2json(data2json~=0)=find(data2json) savejson('',data2json,'usearrayshape',1) json2data=loadjson(ans,'fullarrayshape',1) savejson('',tril(data2json),'usearrayshape',1) json2data=loadjson(ans,'fullarrayshape',1) savejson('',triu(data2json+1i*data2json),'usearrayshape',1) json2data=loadjson(ans,'fullarrayshape',1) savejson('',tril(triu(int8(data2json))),'usearrayshape',1) json2data=loadjson(ans,'fullarrayshape',1) savejson('',data2json(:,1:5)+data2json(:,1:5)','usearrayshape',1) json2data=loadjson(ans,'fullarrayshape',1) end try val=zlibencode('test'); fprintf(1,'\n%%=================================================\n') fprintf(1,'%% a 2-D array in compressed array format\n') fprintf(1,'%%=================================================\n\n') data2json=eye(10); data2json(20,1)=1; savejson('',data2json,'Compression','zlib','CompressArraySize',0) % nestarray for 4-D or above is not working json2data=loadjson(ans) if(~isequaln(json2data,data2json)) warning('conversion does not preserve original data'); end catch end rand ('state',rngstate);
%================================================= % a simple scalar value %================================================= data2json = 3.1416 ans = '[3.141592654] ' json2data = 3.1416 %================================================= % an empty array %================================================= data2json = [] ans = '[] ' json2data = 0×1 empty cell array %================================================= % an ampty string %================================================= data2json = 0×0 empty char array ans = '{ "emptystr":"" } ' json2data = struct with fields: emptystr: [1×0 char] %================================================= % a simple row vector %================================================= data2json = 1 2 3 ans = '[1,2,3] ' json2data = 1 2 3 %================================================= % a simple column vector %================================================= data2json = 1 2 3 ans = '[ [1], [2], [3] ] ' json2data = 1 2 3 %================================================= % a string array %================================================= data2json = 2×2 char array 'AC' 'EG' ans = '[ "AC", "EG" ] ' json2data = 1×2 cell array {'AC'} {'EG'} %================================================= % a string with escape symbols %================================================= data2json = 'AB CD one"two' ans = '{ "str":"AB\tCD\none\"two" } ' json2data = struct with fields: str: 'AB→CD↵one"two' %================================================= % a mix-typed cell %================================================= data2json = 1×3 cell array {'a'} {[1]} {2×1 double} ans = '[ "a", true, [ [2], [3] ] ] ' json2data = 1×3 cell array {'a'} {[1]} {2×1 double} %================================================= % a 3-D array in nested array form %================================================= ans = '[ [ [1,9,17,25,33,41], [3,11,19,27,35,43], [5,13,21,29,37,45], [7,15,23,31,39,47] ], [ [2,10,18,26,34,42], [4,12,20,28,36,44], [6,14,22,30,38,46], [8,16,24,32,40,48] ] ] ' json2data(:,:,1) = 1 3 5 7 2 4 6 8 json2data(:,:,2) = 9 11 13 15 10 12 14 16 json2data(:,:,3) = 17 19 21 23 18 20 22 24 json2data(:,:,4) = 25 27 29 31 26 28 30 32 json2data(:,:,5) = 33 35 37 39 34 36 38 40 json2data(:,:,6) = 41 43 45 47 42 44 46 48 %================================================= % a 3-D array in annotated array form %================================================= ans = '{ "_ArrayType_":"double", "_ArraySize_":[2,4,6], "_ArrayData_":[1,9,17,25,33,41,3,11,19,27,35,43,5,13,21,29,37,45,7,15,23,31,39,47,2,10,18,26,34,42,4,12,20,28,36,44,6,14,22,30,38,46,8,16,24,32,40,48] } ' json2data(:,:,1) = 1 3 5 7 2 4 6 8 json2data(:,:,2) = 9 11 13 15 10 12 14 16 json2data(:,:,3) = 17 19 21 23 18 20 22 24 json2data(:,:,4) = 25 27 29 31 26 28 30 32 json2data(:,:,5) = 33 35 37 39 34 36 38 40 json2data(:,:,6) = 41 43 45 47 42 44 46 48 %================================================= % a 4-D array in annotated array form %================================================= ans = '{ "_ArrayType_":"double", "_ArraySize_":[2,4,3,2], "_ArrayData_":[1,25,9,33,17,41,3,27,11,35,19,43,5,29,13,37,21,45,7,31,15,39,23,47,2,26,10,34,18,42,4,28,12,36,20,44,6,30,14,38,22,46,8,32,16,40,24,48] } ' json2data(:,:,1,1) = 1 3 5 7 2 4 6 8 json2data(:,:,2,1) = 9 11 13 15 10 12 14 16 json2data(:,:,3,1) = 17 19 21 23 18 20 22 24 json2data(:,:,1,2) = 25 27 29 31 26 28 30 32 json2data(:,:,2,2) = 33 35 37 39 34 36 38 40 json2data(:,:,3,2) = 41 43 45 47 42 44 46 48 %================================================= % a 3-D array in nested array form (JSONLab 1.9) %================================================= ans = '[ [ [1,2], [3,4], [5,6], [7,8] ], [ [9,10], [11,12], [13,14], [15,16] ], [ [17,18], [19,20], [21,22], [23,24] ], [ [25,26], [27,28], [29,30], [31,32] ], [ [33,34], [35,36], [37,38], [39,40] ], [ [41,42], [43,44], [45,46], [47,48] ] ] ' json2data(:,:,1) = 1 3 5 7 2 4 6 8 json2data(:,:,2) = 9 11 13 15 10 12 14 16 json2data(:,:,3) = 17 19 21 23 18 20 22 24 json2data(:,:,4) = 25 27 29 31 26 28 30 32 json2data(:,:,5) = 33 35 37 39 34 36 38 40 json2data(:,:,6) = 41 43 45 47 42 44 46 48 %================================================= % a 3-D array in annotated array form (JSONLab 1.9 or earlier) %================================================= ans = '{ "_ArrayType_":"double", "_ArraySize_":[2,4,6], "_ArrayData_":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48] } ' json2data(:,:,1) = 1 3 5 7 2 4 6 8 json2data(:,:,2) = 9 11 13 15 10 12 14 16 json2data(:,:,3) = 17 19 21 23 18 20 22 24 json2data(:,:,4) = 25 27 29 31 26 28 30 32 json2data(:,:,5) = 33 35 37 39 34 36 38 40 json2data(:,:,6) = 41 43 45 47 42 44 46 48 %================================================= % a complex number %================================================= data2json = 1.0000 + 2.0000i ans = '{ "_ArrayType_":"double", "_ArraySize_":[1,1], "_ArrayIsComplex_":true, "_ArrayData_":[ [1], [2] ] } ' json2data = 1.0000 + 2.0000i %================================================= % a complex matrix %================================================= data2json = 35.0000 +26.0000i 1.0000 +19.0000i 6.0000 +24.0000i 3.0000 +21.0000i 32.0000 +23.0000i 7.0000 +25.0000i 31.0000 +22.0000i 9.0000 +27.0000i 2.0000 +20.0000i 8.0000 +17.0000i 28.0000 +10.0000i 33.0000 +15.0000i 30.0000 +12.0000i 5.0000 +14.0000i 34.0000 +16.0000i 4.0000 +13.0000i 36.0000 +18.0000i 29.0000 +11.0000i ans = '{ "_ArrayType_":"double", "_ArraySize_":[6,3], "_ArrayIsComplex_":true, "_ArrayData_":[ [35,1,6,3,32,7,31,9,2,8,28,33,30,5,34,4,36,29], [26,19,24,21,23,25,22,27,20,17,10,15,12,14,16,13,18,11] ] } ' json2data = 35.0000 +26.0000i 1.0000 +19.0000i 6.0000 +24.0000i 3.0000 +21.0000i 32.0000 +23.0000i 7.0000 +25.0000i 31.0000 +22.0000i 9.0000 +27.0000i 2.0000 +20.0000i 8.0000 +17.0000i 28.0000 +10.0000i 33.0000 +15.0000i 30.0000 +12.0000i 5.0000 +14.0000i 34.0000 +16.0000i 4.0000 +13.0000i 36.0000 +18.0000i 29.0000 +11.0000i %================================================= % MATLAB special constants %================================================= data2json = NaN Inf -Inf ans = '{ "specials":["_NaN_","_Inf_","-_Inf_"] } ' json2data = struct with fields: specials: [NaN Inf -Inf] %================================================= % a real sparse matrix %================================================= data2json = (10,1) 0.0318 (1,2) 0.7577 (3,5) 0.3922 (2,7) 0.7431 (9,7) 0.7060 (10,8) 0.2769 (10,9) 0.0462 (5,10) 0.6555 (6,10) 0.1712 (10,10) 0.0971 ans = '{ "sparse":{ "_ArrayType_":"double", "_ArraySize_":[10,10], "_ArrayIsSparse_":true, "_ArrayData_":[ [10,1,3,2,9,10,10,5,6,10], [1,2,5,7,7,8,9,10,10,10], [0.031832846377420676,0.757740130578333448,0.392227019534168164,0.743132468124916179,0.706046088019608775,0.276922984960889962,0.0461713906311539413,0.655477890177556644,0.171186687811561766,0.0971317812358475363] ] } } ' json2data = struct with fields: sparse: [10×10 double] %================================================= % a complex sparse matrix %================================================= data2json = (2,2) 0.9597 - 0.9597i (8,2) 0.7513 - 0.7513i (5,3) 0.5853 - 0.5853i (7,5) 0.2238 - 0.2238i (9,5) 0.5060 - 0.5060i (4,7) 0.3404 - 0.3404i (8,7) 0.2551 - 0.2551i (1,8) 0.4984 - 0.4984i (10,8) 0.6991 - 0.6991i ans = '{ "complex_sparse":{ "_ArrayType_":"double", "_ArraySize_":[10,10], "_ArrayIsComplex_":true, "_ArrayIsSparse_":true, "_ArrayData_":[ [2,8,5,7,9,4,8,1,10], [2,2,3,5,5,7,7,8,8], [0.959743958516081075,0.751267059305652851,0.585267750979777346,0.22381193949113698,0.505957051665142377,0.340385726666133204,0.255095115459269106,0.498364051982142953,0.699076722656685967], [-0.959743958516081075,-0.751267059305652851,-0.585267750979777346,-0.22381193949113698,-0.505957051665142377,-0.340385726666133204,-0.255095115459269106,-0.498364051982142953,-0.699076722656685967] ] } } ' json2data = struct with fields: complex_sparse: [10×10 double] %================================================= % an all-zero sparse matrix %================================================= ans = '{ "all_zero_sparse":{ "_ArrayType_":"double", "_ArraySize_":[2,3], "_ArrayIsSparse_":true, "_ArrayData_":[] } } ' json2data = struct with fields: all_zero_sparse: [2×3 double] %================================================= % an empty sparse matrix %================================================= ans = '{ "empty_sparse":{ "_ArrayType_":"double", "_ArraySize_":[0,0], "_ArrayIsSparse_":true, "_ArrayData_":[] } } ' json2data = struct with fields: empty_sparse: [] %================================================= % an empty 0-by-0 real matrix %================================================= ans = '{ "empty_0by0_real":[] } ' json2data = struct with fields: empty_0by0_real: {0×1 cell} %================================================= % an empty 0-by-3 real matrix %================================================= ans = '{ "empty_0by3_real":{ "_ArrayType_":"double", "_ArraySize_":[0,3], "_ArrayData_":[] } } ' json2data = struct with fields: empty_0by3_real: [0×3 double] %================================================= % a sparse real column vector %================================================= ans = '{ "sparse_column_vector":{ "_ArrayType_":"double", "_ArraySize_":[5,1], "_ArrayIsSparse_":true, "_ArrayData_":[ [2,4,5], [3,1,4] ] } } ' json2data = struct with fields: sparse_column_vector: [5×1 double] %================================================= % a sparse complex column vector %================================================= ans = '{ "complex_sparse_column_vector":{ "_ArrayType_":"double", "_ArraySize_":[5,1], "_ArrayIsComplex_":true, "_ArrayIsSparse_":true, "_ArrayData_":[ [2,4,5], [3,1,4], [-3,-1,-4] ] } } ' json2data = struct with fields: complex_sparse_column_vector: [5×1 double] %================================================= % a sparse real row vector %================================================= ans = '{ "sparse_row_vector":{ "_ArrayType_":"double", "_ArraySize_":[1,5], "_ArrayIsSparse_":true, "_ArrayData_":[ [2,4,5], [3,1,4] ] } } ' json2data = struct with fields: sparse_row_vector: [0 3 0 1.0000e+00 4.0000e+00] %================================================= % a sparse complex row vector %================================================= ans = '{ "complex_sparse_row_vector":{ "_ArrayType_":"double", "_ArraySize_":[1,5], "_ArrayIsComplex_":true, "_ArrayIsSparse_":true, "_ArrayData_":[ [2,4,5], [3,1,4], [-3,-1,-4] ] } } ' json2data = struct with fields: complex_sparse_row_vector: [1×5 double] %================================================= % a structure %================================================= data2json = struct with fields: name: 'Think Different' year: 1997 magic: [3×3 double] misfits: [Inf NaN] embedded: [1×1 struct] ans = '{ "astruct":{ "name":"Think Different", "year":1997, "magic":[ [8,1,6], [3,5,7], [4,9,2] ], "misfits":["_Inf_","_NaN_"], "embedded":{ "left":true, "right":false } } } ' json2data = struct with fields: astruct: [1×1 struct] ans = 'logical' %================================================= % a structure array %================================================= ans = '{ "Supreme Commander":[ { "name":"Nexus Prime", "rank":9 }, { "name":"Sentinel Prime", "rank":9 }, { "name":"Optimus Prime", "rank":9 } ] } ' json2data = struct with fields: Supreme_0x20_Commander: {[1×1 struct] [1×1 struct] [1×1 struct]} %================================================= % a cell array %================================================= data2json = 3×1 cell array {1×1 struct} {1×1 struct} {1×4 double} ans = '{ "debian":[ [ { "buzz":1.10, "rex":1.20, "bo":1.30, "hamm":2.00, "slink":2.10, "potato":2.20, "woody":3.00, "sarge":3.10, "etch":4.00, "lenny":5.00, "squeeze":6.00, "wheezy":7.00 }, { "Ubuntu":[ "Kubuntu", "Xubuntu", "Lubuntu" ] }, [10.04,10.10,11.04,11.10] ] ] } ' json2data = struct with fields: debian: {{1×3 cell}} %================================================= % invalid field-name handling %================================================= json2data = struct with fields: ValidName: 1 x0x5F_InvalidName: 2 x0x3A_Field_0x3A_: 3 x0x9879__0xE79BAE_: '绝密' %================================================= % a function handle %================================================= data2json = function_handle with value: @(x)x+1 ans = '{ "handle":{ "function":"@(x)x+1", "type":"anonymous", "file":"\/home\/fangq\/space\/git\/Project\/jsonlab\/examples\/demo_jsonlab_basic.m", "workspace":[ { } ], "within_file_path":"" } } ' json2data = struct with fields: handle: [1×1 struct] %================================================= % a 2D cell array %================================================= ans = '{ "data2json":[ [ [ 1, [ 2, 3 ] ], [ 4, 5 ], [ 6 ] ], [ [ 7 ], [ 8, 9 ], [ 10 ] ] ] } ' json2data = struct with fields: data2json: {{1×3 cell} {1×3 cell}} %================================================= % a 2D struct array %================================================= data2json = 2×3 struct array with fields: idx data ans = '{ "data2json":[ [ { "idx":1, "data":"structs" }, { "idx":2, "data":"structs" } ], [ { "idx":3, "data":"structs" }, { "idx":4, "data":"structs" } ], [ { "idx":5, "data":"structs" }, { "idx":6, "data":"structs" } ] ] } ' json2data = struct with fields: data2json: {{1×2 cell} {1×2 cell} {1×2 cell}} %================================================= % datetime object %================================================= data2json = 1×2 datetime array 08-Apr-2015 09-May-2015 ans = '[ { "Format":"dd-MMM-uuuu", "TimeZone":"", "Year":2015, "Month":4, "Day":8, "Hour":0, "Minute":0, "Second":0 }, { "Format":"dd-MMM-uuuu", "TimeZone":"", "Year":2015, "Month":5, "Day":9, "Hour":0, "Minute":0, "Second":0 } ] ' json2data = 1×2 cell array {1×1 struct} {1×1 struct} %================================================= % a container.Maps object %================================================= data2json = Map with properties: Count: 3 KeyType: char ValueType: double ans = '{ "Andy":21, "Om":22, "William":21 } ' json2data = struct with fields: Andy: 21 Om: 22 William: 21 %================================================= % a table object %================================================= data2json = 3×2 table Names Age ___________ ___ {'Andy' } 21 {'William'} 21 {'Om' } 22 ans = '{ "table":{ "_TableCols_":[ "Names", "Age" ], "_TableRows_":[], "_TableRecords_":[ [ "Andy", 21 ], [ "William", 21 ], [ "Om", 22 ] ] } } ' json2data = struct with fields: table: [3×2 table] %================================================= % use _ArrayShape_ %================================================= data2json = 1 6 11 0 0 0 0 0 2 7 12 17 0 0 0 0 3 8 13 18 23 0 0 0 4 9 14 19 24 29 0 0 0 10 15 20 25 30 35 0 ans = '{ "_ArrayType_":"double", "_ArraySize_":[5,8], "_ArrayZipSize_":[6,5], "_ArrayShape_":[ "band", 2, 3 ], "_ArrayData_":[11,17,23,29,35,6,12,18,24,30,1,7,13,19,25,0,2,8,14,20,0,0,3,9,15,0,0,0,4,10] } ' json2data = 1 6 11 0 0 0 0 0 2 7 12 17 0 0 0 0 3 8 13 18 23 0 0 0 4 9 14 19 24 29 0 0 0 10 15 20 25 30 35 0 ans = '{ "_ArrayType_":"double", "_ArraySize_":[5,8], "_ArrayZipSize_":[4,5], "_ArrayShape_":[ "lowerband", 3 ], "_ArrayData_":[1,7,13,19,25,0,2,8,14,20,0,0,3,9,15,0,0,0,4,10] } ' json2data = 1 0 0 0 0 0 0 0 2 7 0 0 0 0 0 0 3 8 13 0 0 0 0 0 4 9 14 19 0 0 0 0 0 10 15 20 25 0 0 0 ans = '{ "_ArrayType_":"double", "_ArraySize_":[5,8], "_ArrayIsComplex_":true, "_ArrayZipSize_":[2,3,5], "_ArrayShape_":[ "upperband", 2 ], "_ArrayData_":[11,17,23,29,35,6,12,18,24,30,1,7,13,19,25,11,17,23,29,35,6,12,18,24,30,1,7,13,19,25] } ' json2data = Columns 1 through 6 1.0000 + 1.0000i 6.0000 + 6.0000i 11.0000 +11.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 7.0000 + 7.0000i 12.0000 +12.0000i 17.0000 +17.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 13.0000 +13.0000i 18.0000 +18.0000i 23.0000 +23.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 19.0000 +19.0000i 24.0000 +24.0000i 29.0000 +29.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 25.0000 +25.0000i 30.0000 +30.0000i Columns 7 through 8 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i 35.0000 +35.0000i 0.0000 + 0.0000i ans = '{ "_ArrayType_":"int8", "_ArraySize_":[5,8], "_ArrayShape_":"diag", "_ArrayData_":[1,7,13,19,25] } ' json2data = 5×8 int8 matrix 1 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 13 0 0 0 0 0 0 0 0 19 0 0 0 0 0 0 0 0 25 0 0 0 ans = '{ "_ArrayType_":"double", "_ArraySize_":[5,5], "_ArrayZipSize_":[4,5], "_ArrayShape_":[ "lowersymmband", 3 ], "_ArrayData_":[2,14,26,38,50,0,8,20,32,44,0,0,14,26,38,0,0,0,4,10] } ' json2data = 2 8 14 4 0 8 14 20 26 10 14 20 26 32 38 4 26 32 38 44 0 10 38 44 50 %================================================= % a 2-D array in compressed array format %================================================= ans = '{ "_ArrayType_":"double", "_ArraySize_":[20,10], "_ArrayZipSize_":[1,200], "_ArrayZipType_":"zlib", "_ArrayZipData_":"eJxjYACBD/YMNAGj5o6aO2ruKBgFgwtQL10DAMHODQY= " } ' json2data = 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
test/run_jsonlab_test.m
function run_jsonlab_test(tests) % % run_jsonlab_test % or % run_jsonlab_test(tests) % run_jsonlab_test({'js','jso','bj','bjo'}) % % Unit testing for JSONLab JSON, BJData/UBJSON encoders and decoders % % authors:Qianqian Fang (q.fang <at> neu.edu) % date: 2020/06/08 % % input: % tests: is a cell array of strings, possible elements include % 'js': test savejson/loadjson % 'jso': test savejson/loadjson special options % 'bj': test savebj/loadbj % 'bjo': test savebj/loadbj special options % % license: % BSD or GPL version 3, see LICENSE_{BSD,GPLv3}.txt files for details % % -- this function is part of JSONLab toolbox (http://iso2mesh.sf.net/cgi-bin/index.cgi?jsonlab) % if(nargin==0) tests={'js','jso','bj','bjo'}; end %% if(ismember('js',tests)) fprintf(sprintf('%s\n',char(ones(1,79)*61))); fprintf('Test JSON functions\n'); fprintf(sprintf('%s\n',char(ones(1,79)*61))); test_jsonlab('single integer',@savejson,5,'[5]'); test_jsonlab('single float',@savejson,3.14,'[3.14]'); test_jsonlab('nan',@savejson,nan,'["_NaN_"]'); test_jsonlab('inf',@savejson,inf,'["_Inf_"]'); test_jsonlab('-inf',@savejson,-inf,'["-_Inf_"]'); test_jsonlab('large integer',@savejson,uint64(2^64),'[18446744073709551616]'); test_jsonlab('large negative integer',@savejson,int64(-2^63),'[-9223372036854775808]'); test_jsonlab('boolean as 01',@savejson,[true,false],'[1,0]','compact',1); test_jsonlab('empty array',@savejson,[],'[]'); test_jsonlab('empty cell',@savejson,{},'[]'); test_jsonlab('empty string',@savejson,'','""','compact',1); test_jsonlab('string escape',@savejson,sprintf('jdata\n\b\ashall\tprevail\t"\"\\'),'"jdata\n\b\ashall\tprevail\t\"\"\\"'); if(exist('isstring')) test_jsonlab('string type',@savejson,string(sprintf('jdata\n\b\ashall\tprevail')),'"jdata\n\b\ashall\tprevail"','compact',1); test_jsonlab('string array',@savejson,[string('jdata');string('shall');string('prevail')],'["jdata","shall","prevail"]','compact',1); end test_jsonlab('row vector',@savejson,[1,2,3],'[1,2,3]'); test_jsonlab('column vector',@savejson,[1;2;3],'[[1],[2],[3]]','compact',1); test_jsonlab('mixed array',@savejson,{'a',1,0.9},'["a",1,0.9]','compact',1); test_jsonlab('char array',@savejson,['AC';'EG'],'["AC","EG"]','compact',1); test_jsonlab('maps',@savejson,struct('a',1,'b','test'),'{"a":1,"b":"test"}','compact',1); test_jsonlab('2d array',@savejson,[1,2,3;4,5,6],'[[1,2,3],[4,5,6]]','compact',1); test_jsonlab('3d (row-major) nested array',@savejson,reshape(1:(2*3*2),2,3,2),... '[[[1,7],[3,9],[5,11]],[[2,8],[4,10],[6,12]]]','compact',1,'nestarray',1); test_jsonlab('3d (column-major) nested array',@savejson,reshape(1:(2*3*2),2,3,2),... '[[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]]]','compact',1,'nestarray',1,'formatversion',1.9); test_jsonlab('3d annotated array',@savejson,reshape(int8(1:(2*3*2)),2,3,2),... '{"_ArrayType_":"int8","_ArraySize_":[2,3,2],"_ArrayData_":[1,7,3,9,5,11,2,8,4,10,6,12]}','compact',1); test_jsonlab('complex number',@savejson,single(2+4i),... '{"_ArrayType_":"single","_ArraySize_":[1,1],"_ArrayIsComplex_":true,"_ArrayData_":[[2],[4]]}','compact',1); test_jsonlab('empty sparse matrix',@savejson,sparse(2,3),... '{"_ArrayType_":"double","_ArraySize_":[2,3],"_ArrayIsSparse_":true,"_ArrayData_":[]}','compact',1); test_jsonlab('real sparse matrix',@savejson,sparse([0,3,0,1,4]'),... '{"_ArrayType_":"double","_ArraySize_":[5,1],"_ArrayIsSparse_":true,"_ArrayData_":[[2,4,5],[3,1,4]]}','compact',1); test_jsonlab('complex sparse matrix',@savejson,sparse([0,3i,0,1,4i].'),... '{"_ArrayType_":"double","_ArraySize_":[5,1],"_ArrayIsComplex_":true,"_ArrayIsSparse_":true,"_ArrayData_":[[2,4,5],[0,1,0],[3,0,4]]}','compact',1); test_jsonlab('heterogeneous cell',@savejson,{{1,{2,3}},{4,5},{6};{7},{8,9},{10}},... '[[[1,[2,3]],[4,5],[6]],[[7],[8,9],[10]]]','compact',1); test_jsonlab('struct array',@savejson,repmat(struct('i',1.1,'d','str'),[1,2]),... '[{"i":1.1,"d":"str"},{"i":1.1,"d":"str"}]','compact',1); test_jsonlab('encoded fieldnames',@savejson,struct(encodevarname('_i'),1,encodevarname('i_'),'str'),... '{"_i":1,"i_":"str"}','compact',1); if(exist('OCTAVE_VERSION','builtin')~=0) test_jsonlab('encoded fieldnames without decoding',@savejson,struct(encodevarname('_i'),1,encodevarname('i_'),'str'),... '{"_i":1,"i_":"str"}','compact',1,'UnpackHex',0); else test_jsonlab('encoded fieldnames without decoding',@savejson,struct(encodevarname('_i'),1,encodevarname('i_'),'str'),... '{"x0x5F_i":1,"i_":"str"}','compact',1,'UnpackHex',0); end if(exist('containers.Map')) test_jsonlab('containers.Map',@savejson,containers.Map({'Andy','^_^'},{true,'-_-'}),... '{"Andy":true,"^_^":"-_-"}','compact',1,'usemap',1); end if(exist('istable')) test_jsonlab('simple table',@savejson,table({'Andy','^_^'},{true,'-_-'}),... '{"_TableCols_":["Var1","Var2"],"_TableRows_":[],"_TableRecords_":[["Andy","^_^"],[true,"-_-"]]}','compact',1); end if(exist('bandwidth')) lband=2; uband=1; a=double(full(spdiags(true(4,lband+uband+1),-uband:lband,3,4))); a(a~=0)=find(a); test_jsonlab('lower band matrix',@savejson,tril(a),... '{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayZipSize_":[2,3],"_ArrayShape_":["lowerband",1],"_ArrayData_":[1,5,9,0,2,6]}','compact',1,'usearrayshape',1); test_jsonlab('upper band matrix',@savejson,triu(a),... '{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayZipSize_":[3,3],"_ArrayShape_":["upperband",2],"_ArrayData_":[7,11,0,4,8,12,1,5,9]}','compact',1,'usearrayshape',1); test_jsonlab('diag matrix',@savejson,tril(triu(a)),... '{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayShape_":"diag","_ArrayData_":[1,5,9]}','compact',1,'usearrayshape',1); test_jsonlab('band matrix',@savejson,a,... '{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayZipSize_":[4,3],"_ArrayShape_":["band",2,1],"_ArrayData_":[7,11,0,4,8,12,1,5,9,0,2,6]}','compact',1,'usearrayshape',1); a=a(:,1:3); a=uint8(tril(a)+tril(a)'); test_jsonlab('symmetric band matrix',@savejson,a,... '{"_ArrayType_":"uint8","_ArraySize_":[3,3],"_ArrayZipSize_":[2,3],"_ArrayShape_":["lowersymmband",1],"_ArrayData_":[2,10,18,0,2,6]}','compact',1,'usearrayshape',1); a(a==0)=1; test_jsonlab('lower triangular matrix',@savejson,tril(a),... '{"_ArrayType_":"uint8","_ArraySize_":[3,3],"_ArrayShape_":"lower","_ArrayData_":[2,2,10,1,6,18]}','compact',1,'usearrayshape',1); test_jsonlab('upper triangular matrix',@savejson,triu(a),... '{"_ArrayType_":"uint8","_ArraySize_":[3,3],"_ArrayShape_":"upper","_ArrayData_":[2,2,1,10,6,18]}','compact',1,'usearrayshape',1); end try val=zlibencode('test'); a=uint8(eye(5)); a(20,1)=1; test_jsonlab('zlib/zip compression (level 6)',@savejson,a,... sprintf('{"_ArrayType_":"uint8","_ArraySize_":[20,5],"_ArrayZipSize_":[1,100],"_ArrayZipType_":"zlib","_ArrayZipData_":"eJxjZAABRhwkxQBsDAACIQAH\n"}'),... 'compact',1, 'Compression','zlib','CompressArraySize',0) % nestarray for 4-D or above is not working test_jsonlab('gzip compression (level 6)',@savejson,a,... sprintf('{"_ArrayType_":"uint8","_ArraySize_":[20,5],"_ArrayZipSize_":[1,100],"_ArrayZipType_":"gzip","_ArrayZipData_":"H4sIAAAAAAAAA2NkAAFGHCTFAGwMAF9Xq6VkAAAA\n"}'),... 'compact',1, 'Compression','gzip','CompressArraySize',0) % nestarray for 4-D or above is not working test_jsonlab('lzma compression (level 5)',@savejson,a,... sprintf('{"_ArrayType_":"uint8","_ArraySize_":[20,5],"_ArrayZipSize_":[1,100],"_ArrayZipType_":"lzma","_ArrayZipData_":"XQAAEABkAAAAAAAAAAAAgD1IirvlZSEY7DH///taoAA=\n"}'),... 'compact',1, 'Compression','lzma','CompressArraySize',0) % nestarray for 4-D or above is not working catch end end %% if(ismember('jso',tests)) fprintf(sprintf('%s\n',char(ones(1,79)*61))); fprintf('Test JSON function options\n'); fprintf(sprintf('%s\n',char(ones(1,79)*61))); test_jsonlab('boolean',@savejson,[true,false],'[true,false]','compact',1,'ParseLogical',1); test_jsonlab('nan option',@savejson,nan,'["_nan_"]','NaN','"_nan_"'); test_jsonlab('inf option',@savejson,-inf,'["-inf"]','Inf','"$1inf"'); test_jsonlab('output int format',@savejson,uint8(5),'[ 5]','IntFormat','%3d'); test_jsonlab('output float format',@savejson,pi,'[3.142]','FloatFormat','%5.3f'); test_jsonlab('remove singlet array',@savejson,{struct('a',1),5},'[{"a":1},5]','compact',1,'SingletArray',0); test_jsonlab('keep singlet array',@savejson,{struct('a',1),5},'[[{"a":[1]}],[5]]','compact',1,'SingletArray',1); end %% if(ismember('bj',tests)) fprintf(sprintf('%s\n',char(ones(1,79)*61))); fprintf('Test Binary JSON functions\n'); fprintf(sprintf('%s\n',char(ones(1,79)*61))); test_jsonlab('uint8 integer',@savebj,2^8-1,'U<255>','debug',1); test_jsonlab('uint16 integer',@savebj,2^8,'u<256>','debug',1); test_jsonlab('int8 integer',@savebj,-2^7,'i<-128>','debug',1); test_jsonlab('int16 integer',@savebj,-2^7-1,'I<-129>','debug',1); test_jsonlab('int32 integer',@savebj,-2^15-1,'l<-32769>','debug',1); test_jsonlab('uint16 integer',@savebj,2^16-1,'u<65535>','debug',1); test_jsonlab('uint32 integer',@savebj,2^16,'m<65536>','debug',1); test_jsonlab('uint32 integer',@savebj,2^32-1,'m<4294967295>','debug',1); test_jsonlab('int32 integer',@savebj,-2^31,'l<-2147483648>','debug',1); test_jsonlab('single float',@savebj,3.14,'[D<3.14>]','debug',1); test_jsonlab('nan',@savebj,nan,'[D<NaN>]','debug',1); test_jsonlab('inf',@savebj,inf,'[D<Inf>]','debug',1); test_jsonlab('-inf',@savebj,-inf,'[D<-Inf>]','debug',1); test_jsonlab('uint64 integer',@savebj,uint64(2^64),'M<18446744073709551616>','debug',1); test_jsonlab('int64 negative integer',@savebj,int64(-2^63),'L<-9223372036854775808>','debug',1); test_jsonlab('boolean as 01',@savebj,[true,false],'[U<1>U<0>]','debug',1,'nestarray',1); test_jsonlab('empty array',@savebj,[],'Z','debug',1); test_jsonlab('empty cell',@savebj,{},'Z','debug',1); test_jsonlab('empty string',@savebj,'','SU<0>','debug',1); test_jsonlab('skip no-op before marker and after value',@savebj,loadbj(char(['NN[NU' char(5) 'NNNU' char(1) ']'])),'[$U#U<2><5><1>','debug',1); test_jsonlab('string escape',@savebj,sprintf('jdata\n\b\ashall\tprevail\t"\"\\'),sprintf('SU<25>jdata\n\b\ashall\tprevail\t\"\"\\'),'debug',1); if(exist('isstring')) test_jsonlab('string type',@savebj,string(sprintf('jdata\n\b\ashall\tprevail')),sprintf('[SU<21>jdata\n\b\ashall\tprevail]'),'debug',1); test_jsonlab('string array',@savebj,[string('jdata');string('shall');string('prevail')],'[[SU<5>jdataSU<5>shallSU<7>prevail]]','debug',1); end test_jsonlab('row vector',@savebj,[1,2,3],'[$U#U<3><1><2><3>','debug',1); test_jsonlab('column vector',@savebj,[1;2;3],'[$U#[$U#U<2><3><1><1><2><3>','debug',1); test_jsonlab('mixed array',@savebj,{'a',1,0.9},'[CaU<1>[D<0.9>]]','debug',1); test_jsonlab('char array',@savebj,['AC';'EG'],'[SU<2>ACSU<2>EG]','debug',1); test_jsonlab('maps',@savebj,struct('a',1,'b','test'),'{U<1>aU<1>U<1>bSU<4>test}','debug',1); test_jsonlab('2d array',@savebj,[1,2,3;4,5,6],'[$U#[$U#U<2><2><3><1><4><2><5><3><6>','debug',1); test_jsonlab('3d (row-major) nested array',@savebj,reshape(1:(2*3*2),2,3,2),... '[[[U<1>U<7>][U<3>U<9>][U<5>U<11>]][[U<2>U<8>][U<4>U<10>][U<6>U<12>]]]','debug',1,'nestarray',1); test_jsonlab('3d (column-major) nested array',@savebj,reshape(1:(2*3*2),2,3,2),... '[[[U<1>U<2>][U<3>U<4>][U<5>U<6>]][[U<7>U<8>][U<9>U<10>][U<11>U<12>]]]','debug',1,'nestarray',1,'formatversion',1.9); test_jsonlab('3d annotated array',@savebj,reshape(int8(1:(2*3*2)),2,3,2),... '{U<11>_ArrayType_SU<4>int8U<11>_ArraySize_[$U#U<3><2><3><2>U<11>_ArrayData_[$U#U<12><1><7><3><9><5><11><2><8><4><10><6><12>}','debug',1); test_jsonlab('complex number',@savebj,single(2+4i),... '{U<11>_ArrayType_SU<6>singleU<11>_ArraySize_[$U#U<2><1><1>U<16>_ArrayIsComplex_TU<11>_ArrayData_[$U#[$U#U<2><2><1><2><4>}','debug',1); test_jsonlab('empty sparse matrix',@savebj,sparse(2,3),... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><2><3>U<15>_ArrayIsSparse_TU<11>_ArrayData_Z}','debug',1); test_jsonlab('real sparse matrix',@savebj,sparse([0,3,0,1,4]'),... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><5><1>U<15>_ArrayIsSparse_TU<11>_ArrayData_[$U#[$U#U<2><2><3><2><3><4><1><5><4>}','debug',1); test_jsonlab('complex sparse matrix',@savebj,sparse([0,3i,0,1,4i].'),... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><5><1>U<16>_ArrayIsComplex_TU<15>_ArrayIsSparse_TU<11>_ArrayData_[$U#[$U#U<2><3><3><2><0><3><4><1><0><5><0><4>}','debug',1); test_jsonlab('heterogeneous cell',@savebj,{{1,{2,3}},{4,5},{6};{7},{8,9},{10}},... '[[[U<1>[U<2>U<3>]][U<4>U<5>][U<6>]][[U<7>][U<8>U<9>][U<10>]]]','debug',1); test_jsonlab('struct array',@savebj,repmat(struct('i',1.1,'d','str'),[1,2]),... '[{U<1>i[D<1.1>]U<1>dSU<3>str}{U<1>i[D<1.1>]U<1>dSU<3>str}]','debug',1); test_jsonlab('encoded fieldnames',@savebj,struct(encodevarname('_i'),1,encodevarname('i_'),'str'),... '{U<2>_iU<1>U<2>i_SU<3>str}','debug',1); if(exist('OCTAVE_VERSION','builtin')~=0) test_jsonlab('encoded fieldnames without decoding',@savebj,struct(encodevarname('_i'),1,encodevarname('i_'),'str'),... '{U<2>_iU<1>U<2>i_SU<3>str}','debug',1,'UnpackHex',0); else test_jsonlab('encoded fieldnames without decoding',@savebj,struct(encodevarname('_i'),1,encodevarname('i_'),'str'),... '{U<7>x0x5F_iU<1>U<2>i_SU<3>str}','debug',1,'UnpackHex',0); end if(exist('containers.Map')) test_jsonlab('containers.Map',@savebj,containers.Map({'Andy','^_^'},{true,'-_-'}),... '{U<4>AndyTU<3>^_^SU<3>-_-}','debug',1,'usemap',1); end if(exist('istable')) test_jsonlab('simple table',@savebj,table({'Andy','^_^'},{true,'-_-'}),... '{U<11>_TableCols_[SU<4>Var1SU<4>Var2]U<11>_TableRows_ZU<14>_TableRecords_[[SU<4>AndySU<3>^_^][TSU<3>-_-]]}','debug',1); end if(exist('bandwidth')) lband=2; uband=1; a=double(full(spdiags(true(4,lband+uband+1),-uband:lband,3,4))); a(a~=0)=find(a); test_jsonlab('lower band matrix',@savebj,tril(a),... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<14>_ArrayZipSize_[$U#U<2><2><3>U<12>_ArrayShape_[SU<9>lowerbandU<1>]U<11>_ArrayData_[$U#U<6><1><5><9><0><2><6>}','debug',1,'usearrayshape',1); test_jsonlab('upper band matrix',@savebj,triu(a),... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<14>_ArrayZipSize_[$U#U<2><3><3>U<12>_ArrayShape_[SU<9>upperbandU<2>]U<11>_ArrayData_[$U#U<9><7><11><0><4><8><12><1><5><9>}','debug',1,'usearrayshape',1); test_jsonlab('diag matrix',@savebj,tril(triu(a)),... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<12>_ArrayShape_SU<4>diagU<11>_ArrayData_[$U#U<3><1><5><9>}','debug',1,'usearrayshape',1); test_jsonlab('band matrix',@savebj,a,... '{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<14>_ArrayZipSize_[$U#U<2><4><3>U<12>_ArrayShape_[SU<4>bandU<2>U<1>]U<11>_ArrayData_[$U#U<12><7><11><0><4><8><12><1><5><9><0><2><6>}','debug',1,'usearrayshape',1); a=a(:,1:3); a=uint8(tril(a)+tril(a)'); test_jsonlab('symmetric band matrix',@savebj,a,... '{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><3><3>U<14>_ArrayZipSize_[$U#U<2><2><3>U<12>_ArrayShape_[SU<13>lowersymmbandU<1>]U<11>_ArrayData_[$U#U<6><2><10><18><0><2><6>}','debug',1,'usearrayshape',1); a(a==0)=1; test_jsonlab('lower triangular matrix',@savebj,tril(a),... '{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><3><3>U<12>_ArrayShape_SU<5>lowerU<11>_ArrayData_[$U#U<6><2><2><10><1><6><18>}','debug',1,'usearrayshape',1); test_jsonlab('upper triangular matrix',@savebj,triu(a),... '{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><3><3>U<12>_ArrayShape_SU<5>upperU<11>_ArrayData_[$U#U<6><2><2><1><10><6><18>}','debug',1,'usearrayshape',1); end try val=zlibencode('test'); a=uint8(eye(5)); a(20,1)=1; test_jsonlab('zlib/zip compression (level 6)',@savebj,a,... '{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><20><5>U<14>_ArrayZipSize_[$U#U<2><1><100>U<14>_ArrayZipType_SU<4>zlibU<14>_ArrayZipData_[$U#U<18><120><156><99><100><0><1><70><28><36><197><0><108><12><0><2><33><0><7>}',... 'debug',1, 'Compression','zlib','CompressArraySize',0) % nestarray for 4-D or above is not working test_jsonlab('gzip compression (level 6)',@savebj,a,... '{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><20><5>U<14>_ArrayZipSize_[$U#U<2><1><100>U<14>_ArrayZipType_SU<4>gzipU<14>_ArrayZipData_[$U#U<30><31><139><8><0><0><0><0><0><0><3><99><100><0><1><70><28><36><197><0><108><12><0><95><87><171><165><100><0><0><0>}',... 'debug',1, 'Compression','gzip','CompressArraySize',0) % nestarray for 4-D or above is not working test_jsonlab('lzma compression (level 5)',@savebj,a,... '{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><20><5>U<14>_ArrayZipSize_[$U#U<2><1><100>U<14>_ArrayZipType_SU<4>lzmaU<14>_ArrayZipData_[$U#U<32><93><0><0><16><0><100><0><0><0><0><0><0><0><0><0><128><61><72><138><187><229><101><33><24><236><49><255><255><251><90><160><0>}',... 'debug',1, 'Compression','lzma','CompressArraySize',0) % nestarray for 4-D or above is not working catch end end %% if(ismember('bjo',tests)) fprintf(sprintf('%s\n',char(ones(1,79)*61))); fprintf('Test Binary JSON function options\n'); fprintf(sprintf('%s\n',char(ones(1,79)*61))); test_jsonlab('remove ubjson optimized array header',@savebj,[1,2,3],'[U<1>U<2>U<3>]','debug',1,'nestarray',1); test_jsonlab('limit to ubjson signed integer',@savebj,256,'I<256>','debug',1,'ubjson',1); test_jsonlab('limit to ubjson integer markers',@savebj,2^32-1,'L<4294967295>','debug',1,'ubjson',1); test_jsonlab('H marker for out of bound integer',@savebj,2^64-1,'HU<20>18446744073709551616','debug',1,'ubjson',1); test_jsonlab('do not downcast integers to the shortest format',@savebj,int32(5),'l<5>','debug',1,'keeptype',1); test_jsonlab('do not downcast integer array to the shortest format',@savebj,int32([5,6]),'[$l#U<2><5><6>','debug',1,'keeptype',1); end
test/run_jsonlab_test.m
output=============================================================================== Test JSON functions =============================================================================== Testing single integer: ok output:'[5]' loadjson successfully restored the input Testing single float: ok output:'[3.14]' loadjson successfully restored the input Testing nan: ok output:'["_NaN_"]' loadjson successfully restored the input Testing inf: ok output:'["_Inf_"]' loadjson successfully restored the input Testing -inf: ok output:'["-_Inf_"]' loadjson successfully restored the input Testing large integer: ok output:'[18446744073709551616]' Testing large negative integer: ok output:'[-9223372036854775808]' loadjson successfully restored the input Testing boolean as 01: ok output:'[1,0]' loadjson successfully restored the input Testing empty array: ok output:'[]' Testing empty cell: ok output:'[]' Testing empty string: ok output:'""' Testing string escape: ok output:'"jdata\n\b\ashall\tprevail\t\"\"\\"' Testing string type: ok output:'"jdata\n\b\ashall\tprevail"' Testing string array: ok output:'["jdata","shall","prevail"]' Testing row vector: ok output:'[1,2,3]' loadjson successfully restored the input Testing column vector: ok output:'[[1],[2],[3]]' loadjson successfully restored the input Testing mixed array: ok output:'["a",1,0.9]' loadjson successfully restored the input Testing char array: ok output:'["AC","EG"]' Testing maps: ok output:'{"a":1,"b":"test"}' loadjson successfully restored the input Testing 2d array: ok output:'[[1,2,3],[4,5,6]]' loadjson successfully restored the input Testing 3d (row-major) nested array: ok output:'[[[1,7],[3,9],[5,11]],[[2,8],[4,10],[6,12]]]' loadjson successfully restored the input Testing 3d (column-major) nested array: ok output:'[[[1,2],[3,4],[5,6]],[[7,8],[9,10],[11,12]]]' loadjson successfully restored the input Testing 3d annotated array: ok output:'{"_ArrayType_":"int8","_ArraySize_":[2,3,2],"_ArrayData_":[1,7,3,9,5,11,2,8,4,10,6,12]}' loadjson successfully restored the input Testing complex number: ok output:'{"_ArrayType_":"single","_ArraySize_":[1,1],"_ArrayIsComplex_":true,"_ArrayData_":[[2],[4]]}' loadjson successfully restored the input Testing empty sparse matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[2,3],"_ArrayIsSparse_":true,"_ArrayData_":[]}' loadjson successfully restored the input Testing real sparse matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[5,1],"_ArrayIsSparse_":true,"_ArrayData_":[[2,4,5],[3,1,4]]}' loadjson successfully restored the input Testing complex sparse matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[5,1],"_ArrayIsComplex_":true,"_ArrayIsSparse_":true,"_ArrayData_":[[2,4,5],[0,1,0],[3,0,4]]}' loadjson successfully restored the input Testing heterogeneous cell: ok output:'[[[1,[2,3]],[4,5],[6]],[[7],[8,9],[10]]]' Testing struct array: ok output:'[{"i":1.1,"d":"str"},{"i":1.1,"d":"str"}]' Testing encoded fieldnames: ok output:'{"_i":1,"i_":"str"}' loadjson successfully restored the input Testing encoded fieldnames without decoding: ok output:'{"x0x5F_i":1,"i_":"str"}' loadjson successfully restored the input Testing containers.Map: ok output:'{"Andy":true,"^_^":"-_-"}' loadjson successfully restored the input Testing simple table: ok output:'{"_TableCols_":["Var1","Var2"],"_TableRows_":[],"_TableRecords_":[["Andy","^_^"],[true,"-_-"]]}' Testing lower band matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayZipSize_":[2,3],"_ArrayShape_":["lowerband",1],"_ArrayData_":[1,5,9,0,2,6]}' loadjson successfully restored the input Testing upper band matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayZipSize_":[3,3],"_ArrayShape_":["upperband",2],"_ArrayData_":[7,11,0,4,8,12,1,5,9]}' loadjson successfully restored the input Testing diag matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayShape_":"diag","_ArrayData_":[1,5,9]}' loadjson successfully restored the input Testing band matrix: ok output:'{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayZipSize_":[4,3],"_ArrayShape_":["band",2,1],"_ArrayData_":[7,11,0,4,8,12,1,5,9,0,2,6]}' loadjson successfully restored the input Testing symmetric band matrix: ok output:'{"_ArrayType_":"uint8","_ArraySize_":[3,3],"_ArrayZipSize_":[2,3],"_ArrayShape_":["lowersymmband",1],"_ArrayData_":[2,10,18,0,2,6]}' loadjson successfully restored the input Testing lower triangular matrix: ok output:'{"_ArrayType_":"uint8","_ArraySize_":[3,3],"_ArrayShape_":"lower","_ArrayData_":[2,2,10,1,6,18]}' loadjson successfully restored the input Testing upper triangular matrix: ok output:'{"_ArrayType_":"uint8","_ArraySize_":[3,3],"_ArrayShape_":"upper","_ArrayData_":[2,2,1,10,6,18]}' loadjson successfully restored the input Testing zlib/zip compression (level 6): ok output:'{"_ArrayType_":"uint8","_ArraySize_":[20,5],"_ArrayZipSize_":[1,100],"_ArrayZipType_":"zlib","_ArrayZipData_":"eJxjZAABRhwkxQBsDAACIQAH "}' loadjson successfully restored the input Testing gzip compression (level 6): ok output:'{"_ArrayType_":"uint8","_ArraySize_":[20,5],"_ArrayZipSize_":[1,100],"_ArrayZipType_":"gzip","_ArrayZipData_":"H4sIAAAAAAAAA2NkAAFGHCTFAGwMAF9Xq6VkAAAA "}' loadjson successfully restored the input Testing lzma compression (level 5): ok output:'{"_ArrayType_":"uint8","_ArraySize_":[20,5],"_ArrayZipSize_":[1,100],"_ArrayZipType_":"lzma","_ArrayZipData_":"XQAAEABkAAAAAAAAAAAAgD1IirvlZSEY7DH///taoAA= "}' loadjson successfully restored the input =============================================================================== Test JSON function options =============================================================================== Testing boolean: ok output:'[true,false]' Testing nan option: ok output:'["_nan_"]' Testing inf option: ok output:'["-inf"]' Testing output int format: ok output:'[ 5]' loadjson successfully restored the input Testing output float format: ok output:'[3.142]' Testing remove singlet array: ok output:'[{"a":1},5]' loadjson successfully restored the input Testing keep singlet array: ok output:'[[{"a":[1]}],[5]]' =============================================================================== Test Binary JSON functions =============================================================================== Testing uint8 integer: ok output:'U<255>' loadbj successfully restored the input Testing uint16 integer: ok output:'u<256>' loadbj successfully restored the input Testing int8 integer: ok output:'i<-128>' loadbj successfully restored the input Testing int16 integer: ok output:'I<-129>' loadbj successfully restored the input Testing int32 integer: ok output:'l<-32769>' loadbj successfully restored the input Testing uint16 integer: ok output:'u<65535>' loadbj successfully restored the input Testing uint32 integer: ok output:'m<65536>' loadbj successfully restored the input Testing uint32 integer: ok output:'m<4294967295>' loadbj successfully restored the input Testing int32 integer: ok output:'l<-2147483648>' loadbj successfully restored the input Testing single float: ok output:'[D<3.14>]' loadbj successfully restored the input Testing nan: ok output:'[D<NaN>]' loadbj successfully restored the input Testing inf: ok output:'[D<Inf>]' loadbj successfully restored the input Testing -inf: ok output:'[D<-Inf>]' loadbj successfully restored the input Testing uint64 integer: ok output:'M<18446744073709551616>' loadbj successfully restored the input Testing int64 negative integer: ok output:'L<-9223372036854775808>' loadbj successfully restored the input Testing boolean as 01: ok output:'[U<1>U<0>]' loadbj successfully restored the input Testing empty array: ok output:'Z' loadbj successfully restored the input Testing empty cell: ok output:'Z' Testing empty string: ok output:'SU<0>' Testing skip no-op before marker and after value: ok output:'[$U#U<2><5><1>' loadbj successfully restored the input Testing string escape: ok output:'SU<25>jdatashall prevail ""\' loadbj successfully restored the input Testing string type: ok output:'[SU<21>jdatashall prevail]' loadbj successfully restored the input Testing string array: ok output:'[[SU<5>jdataSU<5>shallSU<7>prevail]]' Testing row vector: ok output:'[$U#U<3><1><2><3>' loadbj successfully restored the input Testing column vector: ok output:'[$U#[$U#U<2><3><1><1><2><3>' loadbj successfully restored the input Testing mixed array: ok output:'[CaU<1>[D<0.9>]]' loadbj successfully restored the input Testing char array: ok output:'[SU<2>ACSU<2>EG]' Testing maps: ok output:'{U<1>aU<1>U<1>bSU<4>test}' loadbj successfully restored the input Testing 2d array: ok output:'[$U#[$U#U<2><2><3><1><4><2><5><3><6>' loadbj successfully restored the input Testing 3d (row-major) nested array: ok output:'[[[U<1>U<7>][U<3>U<9>][U<5>U<11>]][[U<2>U<8>][U<4>U<10>][U<6>U<12>]]]' loadbj successfully restored the input Testing 3d (column-major) nested array: ok output:'[[[U<1>U<2>][U<3>U<4>][U<5>U<6>]][[U<7>U<8>][U<9>U<10>][U<11>U<12>]]]' Testing 3d annotated array: ok output:'{U<11>_ArrayType_SU<4>int8U<11>_ArraySize_[$U#U<3><2><3><2>U<11>_ArrayData_[$U#U<12><1><7><3><9><5><11><2><8><4><10><6><12>}' loadbj successfully restored the input Testing complex number: ok output:'{U<11>_ArrayType_SU<6>singleU<11>_ArraySize_[$U#U<2><1><1>U<16>_ArrayIsComplex_TU<11>_ArrayData_[$U#[$U#U<2><2><1><2><4>}' loadbj successfully restored the input Testing empty sparse matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><2><3>U<15>_ArrayIsSparse_TU<11>_ArrayData_Z}' loadbj successfully restored the input Testing real sparse matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><5><1>U<15>_ArrayIsSparse_TU<11>_ArrayData_[$U#[$U#U<2><2><3><2><3><4><1><5><4>}' loadbj successfully restored the input Testing complex sparse matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><5><1>U<16>_ArrayIsComplex_TU<15>_ArrayIsSparse_TU<11>_ArrayData_[$U#[$U#U<2><3><3><2><0><3><4><1><0><5><0><4>}' loadbj successfully restored the input Testing heterogeneous cell: ok output:'[[[U<1>[U<2>U<3>]][U<4>U<5>][U<6>]][[U<7>][U<8>U<9>][U<10>]]]' Testing struct array: ok output:'[{U<1>i[D<1.1>]U<1>dSU<3>str}{U<1>i[D<1.1>]U<1>dSU<3>str}]' Testing encoded fieldnames: ok output:'{U<2>_iU<1>U<2>i_SU<3>str}' loadbj successfully restored the input Testing encoded fieldnames without decoding: ok output:'{U<7>x0x5F_iU<1>U<2>i_SU<3>str}' loadbj successfully restored the input Testing containers.Map: ok output:'{U<4>AndyTU<3>^_^SU<3>-_-}' loadbj successfully restored the input Testing simple table: ok output:'{U<11>_TableCols_[SU<4>Var1SU<4>Var2]U<11>_TableRows_ZU<14>_TableRecords_[[SU<4>AndySU<3>^_^][TSU<3>-_-]]}' Testing lower band matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<14>_ArrayZipSize_[$U#U<2><2><3>U<12>_ArrayShape_[SU<9>lowerbandU<1>]U<11>_ArrayData_[$U#U<6><1><5><9><0><2><6>}' loadbj successfully restored the input Testing upper band matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<14>_ArrayZipSize_[$U#U<2><3><3>U<12>_ArrayShape_[SU<9>upperbandU<2>]U<11>_ArrayData_[$U#U<9><7><11><0><4><8><12><1><5><9>}' loadbj successfully restored the input Testing diag matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<12>_ArrayShape_SU<4>diagU<11>_ArrayData_[$U#U<3><1><5><9>}' loadbj successfully restored the input Testing band matrix: ok output:'{U<11>_ArrayType_SU<6>doubleU<11>_ArraySize_[$U#U<2><3><4>U<14>_ArrayZipSize_[$U#U<2><4><3>U<12>_ArrayShape_[SU<4>bandU<2>U<1>]U<11>_ArrayData_[$U#U<12><7><11><0><4><8><12><1><5><9><0><2><6>}' loadbj successfully restored the input Testing symmetric band matrix: ok output:'{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><3><3>U<14>_ArrayZipSize_[$U#U<2><2><3>U<12>_ArrayShape_[SU<13>lowersymmbandU<1>]U<11>_ArrayData_[$U#U<6><2><10><18><0><2><6>}' loadbj successfully restored the input Testing lower triangular matrix: ok output:'{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><3><3>U<12>_ArrayShape_SU<5>lowerU<11>_ArrayData_[$U#U<6><2><2><10><1><6><18>}' loadbj successfully restored the input Testing upper triangular matrix: ok output:'{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><3><3>U<12>_ArrayShape_SU<5>upperU<11>_ArrayData_[$U#U<6><2><2><1><10><6><18>}' loadbj successfully restored the input Testing zlib/zip compression (level 6): ok output:'{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><20><5>U<14>_ArrayZipSize_[$U#U<2><1><100>U<14>_ArrayZipType_SU<4>zlibU<14>_ArrayZipData_[$U#U<18><120><156><99><100><0><1><70><28><36><197><0><108><12><0><2><33><0><7>}' loadbj successfully restored the input Testing gzip compression (level 6): ok output:'{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><20><5>U<14>_ArrayZipSize_[$U#U<2><1><100>U<14>_ArrayZipType_SU<4>gzipU<14>_ArrayZipData_[$U#U<30><31><139><8><0><0><0><0><0><0><3><99><100><0><1><70><28><36><197><0><108><12><0><95><87><171><165><100><0><0><0>}' loadbj successfully restored the input Testing lzma compression (level 5): ok output:'{U<11>_ArrayType_SU<5>uint8U<11>_ArraySize_[$U#U<2><20><5>U<14>_ArrayZipSize_[$U#U<2><1><100>U<14>_ArrayZipType_SU<4>lzmaU<14>_ArrayZipData_[$U#U<32><93><0><0><16><0><100><0><0><0><0><0><0><0><0><0><128><61><72><138><187><229><101><33><24><236><49><255><255><251><90><160><0>}' loadbj successfully restored the input =============================================================================== Test Binary JSON function options =============================================================================== Testing remove ubjson optimized array header: ok output:'[U<1>U<2>U<3>]' loadbj successfully restored the input Testing limit to ubjson signed integer: ok output:'I<256>' loadbj successfully restored the input Testing limit to ubjson integer markers: ok output:'L<4294967295>' loadbj successfully restored the input Testing H marker for out of bound integer: ok output:'HU<20>18446744073709551616' Testing do not downcast integers to the shortest format: ok output:'l<5>' loadbj successfully restored the input Testing do not downcast integer array to the shortest format: ok output:'[$l#U<2><5><6>' loadbj successfully restored the input