11import unittest
22from hed .models .definition_dict import DefinitionDict
3- from hed .errors import ErrorHandler , DefinitionErrors
3+ from hed .errors import ErrorHandler , DefinitionErrors , ValidationErrors , ErrorSeverity
44from hed .models .hed_string import HedString
55from hed import HedTag
66from hed import load_schema_version
@@ -15,17 +15,18 @@ def setUpClass(cls):
1515 def check_def_base (self , test_strings , expected_issues ):
1616 for test_key in test_strings :
1717 def_dict = DefinitionDict ()
18+ def_dict .add_definitions ("(Definition/OkayDef, (White))" , self .hed_schema )
1819 hed_string_obj = HedString (test_strings [test_key ], self .hed_schema )
1920 test_issues = def_dict .check_for_definitions (hed_string_obj )
21+ issues = [issue for issue in test_issues if issue ['severity' ] < ErrorSeverity .WARNING ]
2022 expected_params = expected_issues [test_key ]
2123 expected_issue = self .format_errors_fully (ErrorHandler (), hed_string = hed_string_obj ,
2224 params = expected_params )
23- self .assertCountEqual (test_issues , expected_issue , HedString (test_strings [test_key ], self .hed_schema ))
24-
25+ self .assertCountEqual (issues , expected_issue , HedString (test_strings [test_key ], self .hed_schema ))
2526
2627class TestDefinitionDict (TestDefBase ):
27- def_contents_string = "(Item/TestDef1,Item/TestDef2 )"
28- def_contents_string2 = "(Item/TestDef3,Item/TestDef4 )"
28+ def_contents_string = "(Item,Red )"
29+ def_contents_string2 = "(Property, Blue )"
2930 basic_definition_string = f"(Definition/TestDef,{ def_contents_string } )"
3031 label_def_string = "def/TestDef"
3132 expanded_def_string = f"(Def-expand/TestDef,{ def_contents_string } )"
@@ -51,7 +52,7 @@ def test_check_for_definitions_placeholder(self):
5152 new_def_count = len (def_dict .defs )
5253 self .assertGreater (new_def_count , original_def_count )
5354
54- placeholder_invalid_def_contents = "(Age/#,Item/TestDef2 /#)"
55+ placeholder_invalid_def_contents = "(Age/#,Item-count /#)"
5556 placeholder_invalid_def_string = f"(Definition/TestDefPlaceholder/#,{ placeholder_invalid_def_contents } )"
5657
5758 def test_definitions (self ):
@@ -62,17 +63,17 @@ def test_definitions(self):
6263 'twoDefTags' : f"(Definition/InvalidDef1,Definition/InvalidDef2,{ self .def_contents_string } )" ,
6364 'twoGroupTags' : f"(Definition/InvalidDef1,{ self .def_contents_string } ,{ self .def_contents_string2 } )" ,
6465 'extraValidTags' : "(Definition/InvalidDefA, Red, Blue)" ,
65- 'extraOtherTags' : "(Definition/InvalidDef1, InvalidContents )" ,
66+ 'extraOtherTags' : "(Definition/InvalidDef1, Black )" ,
6667 'duplicateDef' : (f"(Definition/Def1, { self .def_contents_string } ), "
67- f"(Definition/Def1, { self . def_contents_string } )" ),
68+ f"(Definition/Def1, (Green) )" ),
6869 'duplicateDef2' : (f"(Definition/Def1, { self .def_contents_string } ), "
6970 f"(Definition/Def1/#, { self .placeholder_def_contents } )" ),
7071 'defTooManyPlaceholders' : self .placeholder_invalid_def_string ,
7172 'invalidPlaceholder' : f"(Definition/InvalidDef1/InvalidPlaceholder, { self .def_contents_string } )" ,
7273 'invalidPlaceholderExtension' :
7374 f"(Definition/InvalidDef1/this-part-is-not-allowed/#, { self .def_contents_string } )" ,
74- 'defInGroup' : "(Definition/ValidDefName, (Def/ImproperlyPlacedDef ))" ,
75- 'defExpandInGroup' : "(Definition/ValidDefName, (Def-expand/ImproperlyPlacedDef , (ImproperContents )))" ,
75+ 'defInGroup' : "(Definition/ValidDefName, (Def/OkayDef ))" ,
76+ 'defExpandInGroup' : "(Definition/ValidDefName, (Def-expand/OkayDef , (White )))" ,
7677 'doublePoundSignPlaceholder' : f"(Definition/InvalidDef/##, { self .placeholder_def_contents } )" ,
7778 'doublePoundSignDiffPlaceholder' : "(Definition/InvalidDef/#, (Age/##,Item/TestDef2))" ,
7879 'placeholdersWrongSpot' : "(Definition/InvalidDef/#, (Age/#,Item/TestDef2))" ,
@@ -83,30 +84,31 @@ def test_definitions(self):
8384 'placeholderWrongSpot' : self .format_error (DefinitionErrors .NO_DEFINITION_CONTENTS , "InvalidDef1#" ) +
8485 self .format_error (DefinitionErrors .INVALID_DEFINITION_EXTENSION ,
8586 tag = 0 , def_name = "InvalidDef1#" ),
86- 'twoDefTags' : self .format_error (DefinitionErrors .WRONG_NUMBER_TAGS , "InvalidDef1" ,
87- ["Definition/InvalidDef2" ]),
88- 'twoGroupTags' : self .format_error (DefinitionErrors .WRONG_NUMBER_GROUPS , "InvalidDef1" ,
89- [self .def_contents_string , self .def_contents_string2 ]),
90- 'extraValidTags' : self .format_error (DefinitionErrors .WRONG_NUMBER_TAGS , "InvalidDefA" ,
91- ["Red" , "Blue" ]),
92- 'extraOtherTags' : self .format_error (DefinitionErrors .WRONG_NUMBER_TAGS , "InvalidDef1" ,
93- ["InvalidContents" ]),
87+ 'twoDefTags' : self .format_error (ValidationErrors .HED_RESERVED_TAG_REPEATED , "Definition/InvalidDef2" ,
88+ "(Definition/InvalidDef1,Definition/InvalidDef2,(Item,Red))" ),
89+ 'twoGroupTags' : self .format_error (ValidationErrors .HED_RESERVED_TAG_GROUP_ERROR ,
90+ "(Definition/InvalidDef1,(Item,Red),(Property,Blue))" , 2 ,
91+ ["Definition/InvalidDef1" ]),
92+ 'extraValidTags' : self .format_error (ValidationErrors .HED_TAGS_NOT_ALLOWED , "Red" ,
93+ "(Definition/InvalidDefA,Red,Blue)" ),
94+ 'extraOtherTags' : self .format_error (ValidationErrors .HED_TAGS_NOT_ALLOWED , "Black" ,
95+ "(Definition/InvalidDef1,Black)" ),
9496 'duplicateDef' : self .format_error (DefinitionErrors .DUPLICATE_DEFINITION , "Def1" ),
9597 'duplicateDef2' : self .format_error (DefinitionErrors .DUPLICATE_DEFINITION , "Def1" ),
9698
9799 'defTooManyPlaceholders' : self .format_error (DefinitionErrors .WRONG_NUMBER_PLACEHOLDER_TAGS ,
98100 "TestDefPlaceholder" , expected_count = 1 ,
99- tag_list = ["Age/#" , "Item/TestDef2 /#" ]),
100- 'invalidPlaceholderExtension' : self .format_error (DefinitionErrors . INVALID_DEFINITION_EXTENSION ,
101- tag = 0 , def_name = " InvalidDef1/this-part-is-not-allowed" ),
102- 'invalidPlaceholder' : self .format_error (DefinitionErrors . INVALID_DEFINITION_EXTENSION ,
103- tag = 0 , def_name = "InvalidDef1/InvalidPlaceholder " ),
101+ tag_list = ["Age/#" , "Item-count /#" ]),
102+ 'invalidPlaceholderExtension' : self .format_error (ValidationErrors . INVALID_VALUE_CLASS_CHARACTER ,
103+ "Definition/ InvalidDef1/this-part-is-not-allowed/#" , "/" , value_class = "nameClass " ),
104+ 'invalidPlaceholder' : self .format_error (ValidationErrors . INVALID_VALUE_CLASS_CHARACTER ,
105+ "Definition/InvalidDef1/InvalidPlaceholder" , "/" , value_class = "nameClass " ),
104106 'defInGroup' : self .format_error (DefinitionErrors .DEF_TAG_IN_DEFINITION ,
105- tag = HedTag ("Def/ImproperlyPlacedDef " , self .hed_schema ),
107+ tag = HedTag ("Def/OkayDef " , self .hed_schema ),
106108 def_name = "ValidDefName" ),
107- 'defExpandInGroup' : self .format_error (DefinitionErrors . DEF_TAG_IN_DEFINITION ,
108- tag = HedTag ("Def-expand/ImproperlyPlacedDef " , self .hed_schema ),
109- def_name = " ValidDefName" ),
109+ 'defExpandInGroup' : self .format_error (ValidationErrors . HED_TAGS_NOT_ALLOWED ,
110+ tag = HedTag ("Definition/ValidDefName " , self .hed_schema ),
111+ group = "(Definition/ ValidDefName,(Def-expand/OkayDef,(White))) " ),
110112 'doublePoundSignPlaceholder' : self .format_error (DefinitionErrors .INVALID_DEFINITION_EXTENSION ,
111113 tag = 0 , def_name = "InvalidDef/##" ),
112114 'doublePoundSignDiffPlaceholder' : self .format_error (DefinitionErrors .WRONG_NUMBER_PLACEHOLDER_TAGS ,
@@ -152,14 +154,16 @@ def test_add_definition(self):
152154 def_dict = DefinitionDict ()
153155 def_dict .add_definitions ("(Definition/testdefplaceholder,(Acceleration/#,Item/TestDef2,Red))" ,
154156 self .hed_schema )
155- self .assertEqual (len (def_dict .issues ), 1 )
157+ self .assertEqual (len (def_dict .issues ), 2 )
158+ errors = [issue for issue in def_dict .issues if issue ['severity' ] < ErrorSeverity .WARNING ]
159+ self .assertEqual (len (errors ), 1 )
156160 self .assertEqual (len (def_dict .defs ), 0 )
157161
158162 # Good input string
159163 def_dict2 = DefinitionDict ()
160164 def_dict2 .add_definitions ("(Definition/testdefplaceholder/#,(Acceleration/#,Item/TestDef2, Red))" ,
161165 self .hed_schema )
162- self .assertEqual (len (def_dict2 .issues ), 0 )
166+ self .assertEqual (len (def_dict2 .issues ), 1 )
163167 self .assertEqual (len (def_dict2 .defs ), 1 )
164168
165169
0 commit comments