@@ -124,6 +124,45 @@ def test_get_collection_of_enum_values():
124124 assert result == [OfficeLocation .Dunhill , OfficeLocation .Oval ]
125125
126126
127+ def test_get_collection_of_enum_values_from_csv_string ():
128+ """Flags enums may be serialized as a comma-separated string."""
129+ parse_node = JsonParseNode ("dunhill,oval" )
130+ result = parse_node .get_collection_of_enum_values (OfficeLocation )
131+ assert isinstance (result , list )
132+ assert result == [OfficeLocation .Dunhill , OfficeLocation .Oval ]
133+
134+
135+ def test_get_collection_of_enum_values_from_csv_string_with_spaces ():
136+ """Flags enums may have spaces around the comma separator."""
137+ parse_node = JsonParseNode ("dunhill, oval" )
138+ result = parse_node .get_collection_of_enum_values (OfficeLocation )
139+ assert isinstance (result , list )
140+ assert result == [OfficeLocation .Dunhill , OfficeLocation .Oval ]
141+
142+
143+ def test_get_collection_of_enum_values_from_single_string ():
144+ """A flags enum with a single value is still serialized as a plain string."""
145+ parse_node = JsonParseNode ("dunhill" )
146+ result = parse_node .get_collection_of_enum_values (OfficeLocation )
147+ assert isinstance (result , list )
148+ assert result == [OfficeLocation .Dunhill ]
149+
150+
151+ def test_get_collection_of_enum_values_from_empty_string ():
152+ """An empty string should return an empty list."""
153+ parse_node = JsonParseNode ("" )
154+ result = parse_node .get_collection_of_enum_values (OfficeLocation )
155+ assert result == []
156+
157+
158+ def test_get_collection_of_enum_values_from_csv_string_with_unknown_member ():
159+ """Unknown members in a CSV string should be silently skipped."""
160+ parse_node = JsonParseNode ("dunhill,unknownValue,oval" )
161+ result = parse_node .get_collection_of_enum_values (OfficeLocation )
162+ assert isinstance (result , list )
163+ assert result == [OfficeLocation .Dunhill , OfficeLocation .Oval ]
164+
165+
127166def test_get_enum_value ():
128167 parse_node = JsonParseNode ("dunhill" )
129168 result = parse_node .get_enum_value (OfficeLocation )
0 commit comments