@@ -3,7 +3,7 @@ function run_jsonlab_test(tests)
33% run_jsonlab_test
44% or
55% run_jsonlab_test(tests)
6- % run_jsonlab_test({'js','jso','bj','bjo','jmap','bmap','jpath','jdict','bugs'})
6+ % run_jsonlab_test({'js','jso','bj','bjo','jmap','bmap','jpath','jdict','bugs','yaml','yamlopt','xarray' })
77%
88% Unit testing for JSONLab JSON, BJData/UBJSON encoders and decoders
99%
@@ -21,6 +21,9 @@ function run_jsonlab_test(tests)
2121% 'jpath': test jsonpath
2222% 'jdict': test jdict
2323% 'bugs': test specific bug fixes
24+ % 'yaml': test yaml reader/writer
25+ % 'yamlopt': test yaml handling options
26+ % 'xarray': test jdict data attribute operations
2427%
2528% license:
2629% BSD or GPL version 3, see LICENSE_{BSD,GPLv3}.txt files for details
@@ -461,6 +464,19 @@ function run_jsonlab_test(tests)
461464 jd.(' key1' ).(' subkey3' ).v(3 ).(' subsubkey2' ) = ' new' ;
462465 test_jsonlab(' jd.('' key1'' ).('' subkey3'' )' , @savejson , jd.(' key1' ).(' subkey3' ), ' [8,"mod",{"subsubkey1":1,"subsubkey2":"new"}]' , ' compact' , 1 );
463466 test_jsonlab(' jd.('' key1'' ).('' subkey2'' )' , @savejson , jd.(' key1' ).(' subkey2' ), ' [2,10,11]' , ' compact' , 1 );
467+ test_jsonlab(' jd.('' key1'' ).('' subkey2'' ).len()' , @savejson , jd.(' key1' ).(' subkey2' ).len(), ' [3]' , ' compact' , 1 );
468+ test_jsonlab(' jd.('' key1'' ).('' subkey2'' ).size()' , @savejson , jd.(' key1' ).(' subkey2' ).size(), ' [1,3]' , ' compact' , 1 );
469+ test_jsonlab(' jd.('' key1'' ).keys()' , @savejson , jd.(' key1' ).keys(), ' [["subkey1"],["subkey2"],["subkey3"]]' , ' compact' , 1 );
470+ test_jsonlab(' jd.('' key1'' ).isKey('' subkey3'' )' , @savejson , jd.(' key1' ).isKey(' subkey3' ), ' [true]' , ' compact' , 1 );
471+ test_jsonlab(' jd.('' key1'' ).isKey('' subkey4'' )' , @savejson , jd.(' key1' ).isKey(' subkey4' ), ' [false]' , ' compact' , 1 );
472+
473+ jd.(' $.key1.subkey1' ) = [1 , 2 , 3 ];
474+ test_jsonlab(' jd.('' $.key1.subkey1'' )' , @savejson , jd.(' key1' ).(' subkey1' ), ' [1,2,3]' , ' compact' , 1 );
475+ jd .key1.(' $.subkey1' ) = ' newsubkey1' ;
476+ test_jsonlab(' jd.key1.('' $.subkey1'' )' , @savejson , jd.(' key1' ).(' subkey1' ), ' "newsubkey1"' , ' compact' , 1 );
477+ jd.(' $.key1' ).subkey1 = struct(' newkey' , 1 );
478+ test_jsonlab(' jd.('' $.key1'' ).subkey1' , @savejson , jd.(' key1' ).(' subkey1' ), ' {"newkey":1}' , ' compact' , 1 );
479+ test_jsonlab(' jd.('' $.key1.subkey1'' ).newkey' , @savejson , jd.(' key1' ).(' subkey1' ).newkey, ' [1]' , ' compact' , 1 );
464480
465481 clear testdata jd ;
466482end
@@ -702,13 +718,13 @@ function run_jsonlab_test(tests)
702718 jd7.(' data' ){' dims' } = {' x' , ' y' };
703719 jd7.(' data' ){' sampling_rate' } = 1000 ;
704720 end
705- r11a = jd7.(' data' ){' dims' };
706- r11b = jd7.(' data' ){' sampling_rate' };
707- if (iscell( r11a ) && r11b == 1000 )
708- fprintf( 1 , ' Testing attr persistence: ok \n ' );
709- else
710- warning( ' Test attr persistence: failed ' );
711- end
721+ test_jsonlab( ' dims attribute in level 1 ' , @ savejson , jd7.(' data' ){' dims' }, ' ["x","y"] ' , ' compact ' , 1 ) ;
722+ test_jsonlab( ' other attribute in level 1 ' , @ savejson , jd7.(' data' ){' sampling_rate' }, ' [1000] ' , ' compact ' , 1 ) ;
723+ test_jsonlab( ' getattr list top attr key ' , @ savejson , jd7 .getattr(), ' ["$.data"] ' , ' compact ' , 1 );
724+ test_jsonlab( ' getattr return all attributes ' , @ savejson , jd7 .getattr( ' $.data ' ).v(), ' {"dims":["x","y"],"sampling_rate":1000} ' , ' compact ' , 1 );
725+ test_jsonlab( ' getattr get one attr ' , @ savejson , jd7 .getattr( ' $.data ' , ' dims ' ).v(), ' ["x","y"] ' , ' compact ' , 1 );
726+ test_jsonlab( ' savejson with _ArrayLabel_ ' , @ savejson , jd7 , ' {"data":{"_ArrayType_":"double","_ArraySize_":[3,4],"_ArrayData_":[1,1,1,1,1,1,1,1,1,1,1,1],"_ArrayLabel_":["x","y"],"sampling_rate":1000}} ' , ' compact ' , 1 );
727+ test_jsonlab( ' loadjson with _ArrayLabel_ ' , @ savejson , loadjson( jd7 .tojson()).data.getattr( ' $ ' , ' dims ' ), ' ["x","y"] ' , ' compact ' , 1 );
712728
713729 % Test 12: Multiple attributes different types
714730 jd8 = jdict(rand(10 , 20 ));
0 commit comments