@@ -151,5 +151,58 @@ public void PasteWhenIAddChildSelectedAndCannotAdd()
151151 Assert . AreEqual ( _name , grid . ContentProperty . CollectionElements [ 3 ] . Name ) ;
152152 Assert . AreEqual ( grid . ContentProperty . CollectionElements [ 3 ] , selection . PrimarySelection ) ;
153153 }
154+
155+ [ Test ]
156+ public void PasteSameElementMultipleTimesCheckCopiesNames ( )
157+ {
158+ var grid = IntializePasteOperationsTest ( ) ;
159+ var xamlContext = grid . Context as XamlDesignContext ;
160+ Assert . IsNotNull ( xamlContext ) ;
161+
162+ var selection = grid . Services . Selection ;
163+ var innerGrid = grid . ContentProperty . CollectionElements [ 0 ] ;
164+
165+ selection . SetSelectedComponents ( new [ ] { innerGrid } ) ;
166+ xamlContext . XamlEditAction . Paste ( ) ;
167+ Assert . AreEqual ( innerGrid . ContentProperty . CollectionElements [ 1 ] , selection . PrimarySelection ) ;
168+
169+ selection . SetSelectedComponents ( new [ ] { innerGrid } ) ;
170+ xamlContext . XamlEditAction . Paste ( ) ;
171+ Assert . AreEqual ( innerGrid . ContentProperty . CollectionElements [ 2 ] , selection . PrimarySelection ) ;
172+
173+ selection . SetSelectedComponents ( new [ ] { innerGrid } ) ;
174+ xamlContext . XamlEditAction . Paste ( ) ;
175+ Assert . AreEqual ( innerGrid . ContentProperty . CollectionElements [ 3 ] , selection . PrimarySelection ) ;
176+
177+ selection . SetSelectedComponents ( new [ ] { innerGrid } ) ;
178+ xamlContext . XamlEditAction . Paste ( ) ;
179+ Assert . AreEqual ( innerGrid . ContentProperty . CollectionElements [ 4 ] , selection . PrimarySelection ) ;
180+
181+ Assert . IsNullOrEmpty ( innerGrid . ContentProperty . CollectionElements [ 0 ] . Name ) ;
182+ Assert . AreEqual ( _name , innerGrid . ContentProperty . CollectionElements [ 1 ] . Name ) ;
183+ Assert . AreEqual ( _name + "_Copy" , innerGrid . ContentProperty . CollectionElements [ 2 ] . Name ) ;
184+ Assert . AreEqual ( _name + "_Copy1" , innerGrid . ContentProperty . CollectionElements [ 3 ] . Name ) ;
185+ Assert . AreEqual ( _name + "_Copy2" , innerGrid . ContentProperty . CollectionElements [ 4 ] . Name ) ;
186+
187+ xamlContext . XamlEditAction . Copy ( new [ ] { innerGrid . ContentProperty . CollectionElements [ 3 ] } ) ;
188+ var cutXaml = Clipboard . GetText ( TextDataFormat . Xaml ) ;
189+ Assert . That ( cutXaml , Is . StringContaining ( ":Name=\" " + _name + "_Copy1\" " ) ) ;
190+
191+ selection . SetSelectedComponents ( new [ ] { innerGrid } ) ;
192+ xamlContext . XamlEditAction . Paste ( ) ;
193+ Assert . AreEqual ( innerGrid . ContentProperty . CollectionElements [ 5 ] , selection . PrimarySelection ) ;
194+ Assert . AreEqual ( _name + "_Copy3" , innerGrid . ContentProperty . CollectionElements [ 5 ] . Name ) ;
195+
196+ var gridDepObj = grid . Component as DependencyObject ;
197+ Assert . IsNotNull ( gridDepObj ) ;
198+ var nameScope = NameScope . GetNameScope ( gridDepObj ) ;
199+ Assert . IsNotNull ( nameScope ) ;
200+ Assert . IsNotNull ( nameScope . FindName ( _name ) ) ;
201+ Assert . IsNotNull ( nameScope . FindName ( _name + "_Copy" ) ) ;
202+ Assert . IsNotNull ( nameScope . FindName ( _name + "_Copy1" ) ) ;
203+ Assert . IsNotNull ( nameScope . FindName ( _name + "_Copy2" ) ) ;
204+ Assert . IsNotNull ( nameScope . FindName ( _name + "_Copy3" ) ) ;
205+ Assert . IsNull ( nameScope . FindName ( _name + "_Copy4" ) ) ;
206+ }
154207 }
155208}
0 commit comments