@@ -177,6 +177,84 @@ public async Task ChangeValue_MissingKeys() {
177177 result . ToString ( ) . Should ( ) . Be ( "AD" ) ;
178178 }
179179
180+ [ TestMethod ]
181+ public async Task ChangeValue_Add ( ) {
182+ var resolver = new DependencyResolver < string , string > ( ) ;
183+ resolver . ChangeValue ( "A" , "A:BD" , true , "B" , "D" ) ;
184+ resolver . ChangeValue ( "C" , "C" , false ) ;
185+
186+ var walker = resolver . CreateWalker ( ) ;
187+ walker . MissingKeys . Should ( ) . Equal ( "B" , "D" ) ;
188+ var node1 = await walker . GetNextAsync ( default ) ;
189+ var node2 = await walker . GetNextAsync ( default ) ;
190+ node1 . Value . Should ( ) . Be ( "A:BD" ) ;
191+ node2 . Value . Should ( ) . Be ( "C" ) ;
192+ node1 . Commit ( ) ;
193+ node2 . Commit ( ) ;
194+
195+ walker . Remaining . Should ( ) . Be ( 0 ) ;
196+
197+ resolver . ChangeValue ( "B" , "B" , false ) ;
198+ walker = resolver . CreateWalker ( ) ;
199+ walker . MissingKeys . Should ( ) . Equal ( "D" ) ;
200+
201+ var node = await walker . GetNextAsync ( default ) ;
202+ node . Value . Should ( ) . Be ( "B" ) ;
203+ node . Commit ( ) ;
204+
205+ node = await walker . GetNextAsync ( default ) ;
206+ node . Value . Should ( ) . Be ( "A:BD" ) ;
207+ node . Commit ( ) ;
208+
209+ walker . Remaining . Should ( ) . Be ( 0 ) ;
210+
211+ resolver . ChangeValue ( "D" , "D:C" , false ) ;
212+ walker = resolver . CreateWalker ( ) ;
213+ walker . MissingKeys . Should ( ) . BeEmpty ( ) ;
214+
215+ node = await walker . GetNextAsync ( default ) ;
216+ node . Value . Should ( ) . Be ( "D:C" ) ;
217+ node . Commit ( ) ;
218+
219+ node = await walker . GetNextAsync ( default ) ;
220+ node . Value . Should ( ) . Be ( "A:BD" ) ;
221+ node . Commit ( ) ;
222+
223+ walker . Remaining . Should ( ) . Be ( 0 ) ;
224+ }
225+
226+ [ TestMethod ]
227+ public async Task ChangeValue_Remove ( ) {
228+ var resolver = new DependencyResolver < string , string > ( ) ;
229+ resolver . ChangeValue ( "A" , "A:BC" , true , "B" , "C" ) ;
230+ resolver . ChangeValue ( "B" , "B:C" , false , "C" ) ;
231+ resolver . ChangeValue ( "C" , "C" , false ) ;
232+
233+ var walker = resolver . CreateWalker ( ) ;
234+ walker . MissingKeys . Should ( ) . BeEmpty ( ) ;
235+ var node = await walker . GetNextAsync ( default ) ;
236+ node . Value . Should ( ) . Be ( "C" ) ;
237+ node . Commit ( ) ;
238+
239+ node = await walker . GetNextAsync ( default ) ;
240+ node . Value . Should ( ) . Be ( "B:C" ) ;
241+ node . Commit ( ) ;
242+
243+ node = await walker . GetNextAsync ( default ) ;
244+ node . Value . Should ( ) . Be ( "A:BC" ) ;
245+ node . Commit ( ) ;
246+
247+ resolver . Remove ( "B" ) ;
248+ walker = resolver . CreateWalker ( ) ;
249+ walker . MissingKeys . Should ( ) . Equal ( "B" ) ;
250+
251+ node = await walker . GetNextAsync ( default ) ;
252+ node . Value . Should ( ) . Be ( "A:BC" ) ;
253+ node . Commit ( ) ;
254+
255+ walker . Remaining . Should ( ) . Be ( 0 ) ;
256+ }
257+
180258 [ TestMethod ]
181259 public async Task ChangeValue_RemoveKeys ( ) {
182260 var resolver = new DependencyResolver < string , string > ( ) ;
0 commit comments