@@ -146,3 +146,49 @@ def test_deep_update() -> None:
146146 list_utils .deep_update (d , [], {'x' : 'y' })
147147 list_utils .deep_update (d , ['foo' ], {'x' : 'y' })
148148 assert d ['foo' ] == {'bar' : {'a' : 'b' , 'c' : 'd' }, 'x' : 'y' }
149+
150+
151+ def test_deep_set_falsy_values () -> None :
152+ """Test deep_set preserves falsy values that are not None."""
153+ d : dict = {}
154+ list_utils .deep_set (d , ['count' ], 0 )
155+ assert d ['count' ] == 0
156+
157+ list_utils .deep_set (d , ['enabled' ], False )
158+ assert d ['enabled' ] is False
159+
160+ list_utils .deep_set (d , ['name' ], '' )
161+ assert d ['name' ] == ''
162+
163+ list_utils .deep_set (d , ['items' ], [])
164+ assert d ['items' ] == []
165+
166+ list_utils .deep_set (d , ['meta' ], {})
167+ assert d ['meta' ] == {}
168+
169+ # None should still pop the key
170+ list_utils .deep_set (d , ['count' ], None )
171+ assert 'count' not in d
172+
173+
174+ def test_set_or_pop_falsy_values () -> None :
175+ """Test set_or_pop preserves falsy values that are not None."""
176+ d : dict = {}
177+
178+ list_utils .set_or_pop (d , 'enabled' , False )
179+ assert d ['enabled' ] is False
180+
181+ list_utils .set_or_pop (d , 'name' , '' )
182+ assert d ['name' ] == ''
183+
184+ list_utils .set_or_pop (d , 'count' , 0 )
185+ assert d ['count' ] == 0
186+
187+ list_utils .set_or_pop (d , 'items' , [])
188+ assert d ['items' ] == []
189+
190+ # None should still remove the key
191+ list_utils .set_or_pop (d , 'key' , 'value' )
192+ assert d ['key' ] == 'value'
193+ list_utils .set_or_pop (d , 'key' , None )
194+ assert 'key' not in d
0 commit comments