@@ -203,6 +203,29 @@ def test_children(self):
203203 with self .assertRaises (ValueError ):
204204 sec .properties [0 ] = "prop"
205205
206+ # same tests with props alias
207+ prop = Property (name = "prop2" , parent = sec )
208+ newprop = Property (name = "newprop2" )
209+
210+ self .assertEqual (prop .parent , sec )
211+ self .assertEqual (sec .props [1 ], prop )
212+ self .assertEqual (len (sec .props ), 2 )
213+ self .assertIsNone (newprop .parent )
214+
215+ sec .props [1 ] = newprop
216+ self .assertEqual (newprop .parent , sec )
217+ self .assertEqual (sec .props [1 ], newprop )
218+ self .assertEqual (len (sec .props ), 2 )
219+ self .assertIsNone (prop .parent )
220+
221+ # Test set property fails
222+ with self .assertRaises (ValueError ):
223+ sec .props [1 ] = Document ()
224+ with self .assertRaises (ValueError ):
225+ sec .props [1 ] = newsec
226+ with self .assertRaises (ValueError ):
227+ sec .props [1 ] = "prop2"
228+
206229 def test_id (self ):
207230 s = Section (name = "S" )
208231 self .assertIsNotNone (s .id )
@@ -863,6 +886,63 @@ def test_comparison(self):
863886 self .assertNotEqual (sec_a , sec_b )
864887 self .assertNotEqual (sec_a .properties , sec_b .properties )
865888
889+ def test_create_section (self ):
890+ root = Section ("root" )
891+ self .assertEqual (len (root .sections ), 0 )
892+
893+ name = "subsec"
894+ type = "subtype"
895+ oid = "79b613eb-a256-46bf-84f6-207df465b8f7"
896+ subsec = root .create_section (name , type , oid )
897+
898+ self .assertEqual (len (root .sections ), 1 )
899+ self .assertEqual (subsec .parent , root )
900+ self .assertEqual (root .sections [name ], subsec )
901+ self .assertEqual (root .sections [name ].type , type )
902+ self .assertEqual (root .sections [name ].oid , oid )
903+
904+ name = "othersec"
905+ subsec = root .create_section (name )
906+ self .assertEqual (len (root .sections ), 2 )
907+ self .assertEqual (subsec .parent , root )
908+ self .assertEqual (root .sections [name ], subsec )
909+ self .assertEqual (root .sections [name ].type , "undefined" )
910+
911+ name = "subsubsec"
912+ subsec = root .sections [0 ].create_section (name )
913+ self .assertEqual (len (root .sections ), 2 )
914+ self .assertEqual (subsec .parent , root .sections [0 ])
915+ self .assertEqual (len (root .sections [0 ].sections ), 1 )
916+ self .assertEqual (root .sections [0 ].sections [0 ].name , name )
917+
918+ def test_create_property (self ):
919+ root = Section ("root" )
920+ self .assertEqual (len (root .properties ), 0 )
921+
922+ name = "prop"
923+ oid = "79b613eb-a256-46bf-84f6-207df465b8f7"
924+ prop = root .create_property (name , oid = oid )
925+ self .assertEqual (len (root .properties ), 1 )
926+ self .assertEqual (prop .parent , root )
927+ self .assertEqual (root .properties [name ].oid , oid )
928+
929+ name = "test_values"
930+ values = ["a" , "b" ]
931+ prop = root .create_property (name , value = values )
932+ self .assertEqual (len (root .properties ), 2 )
933+ self .assertEqual (root .properties [name ].value , values )
934+
935+ name = "test_dtype"
936+ dtype = "str"
937+ prop = root .create_property (name , dtype = dtype )
938+ self .assertEqual (len (root .properties ), 3 )
939+ self .assertEqual (root .properties [name ].dtype , dtype )
940+
941+ name = "test_dtype_fail"
942+ dtype = "I do not exist"
943+ prop = root .create_property (name , dtype = dtype )
944+ self .assertIsNone (prop .dtype )
945+
866946 def test_link (self ):
867947 pass
868948
0 commit comments