@@ -83,5 +83,67 @@ public void TestShallowCopyFrom()
8383 Assert . Equal ( 0 , innerNode2 . nodes [ 0 ] . values . Count ) ;
8484 Assert . Equal ( 0 , innerNode2 . nodes [ 0 ] . nodes . Count ) ;
8585 }
86+
87+ [ Fact ]
88+ public void TestDeepCopy ( )
89+ {
90+ ConfigNode fromNode = new TestConfigNode ( "SOME_NODE" )
91+ {
92+ { "abc" , "def" } ,
93+ { "ghi" , "jkl" } ,
94+ new TestConfigNode ( "INNER_NODE_1" )
95+ {
96+ { "mno" , "pqr" } ,
97+ new TestConfigNode ( "INNER_INNER_NODE_1" ) ,
98+ } ,
99+ new TestConfigNode ( "INNER_NODE_2" )
100+ {
101+ { "stu" , "vwx" } ,
102+ new TestConfigNode ( "INNER_INNER_NODE_2" ) ,
103+ } ,
104+ } ;
105+
106+ ConfigNode toNode = fromNode . DeepCopy ( ) ;
107+
108+ Assert . Equal ( "SOME_NODE" , toNode . name ) ;
109+
110+ Assert . Equal ( 2 , toNode . values . Count ) ;
111+
112+ Assert . NotSame ( fromNode . values [ 0 ] , toNode . values [ 0 ] ) ;
113+ Assert . Equal ( "abc" , toNode . values [ 0 ] . name ) ;
114+ Assert . Equal ( "def" , toNode . values [ 0 ] . value ) ;
115+
116+ Assert . NotSame ( fromNode . values [ 1 ] , toNode . values [ 1 ] ) ;
117+ Assert . Equal ( "ghi" , toNode . values [ 1 ] . name ) ;
118+ Assert . Equal ( "jkl" , toNode . values [ 1 ] . value ) ;
119+
120+ Assert . Equal ( 2 , toNode . nodes . Count ) ;
121+
122+ ConfigNode innerNode1 = toNode . nodes [ 0 ] ;
123+ Assert . NotSame ( fromNode . nodes [ 0 ] , innerNode1 ) ;
124+ Assert . Equal ( "INNER_NODE_1" , innerNode1 . name ) ;
125+ Assert . Equal ( 1 , innerNode1 . values . Count ) ;
126+ Assert . NotSame ( fromNode . nodes [ 0 ] . values [ 0 ] , innerNode1 . values [ 0 ] ) ;
127+ Assert . Equal ( "mno" , innerNode1 . values [ 0 ] . name ) ;
128+ Assert . Equal ( "pqr" , innerNode1 . values [ 0 ] . value ) ;
129+ Assert . Equal ( 1 , toNode . nodes [ 0 ] . nodes . Count ) ;
130+ Assert . NotSame ( fromNode . nodes [ 0 ] . nodes [ 0 ] , innerNode1 . nodes [ 0 ] ) ;
131+ Assert . Equal ( "INNER_INNER_NODE_1" , innerNode1 . nodes [ 0 ] . name ) ;
132+ Assert . Equal ( 0 , innerNode1 . nodes [ 0 ] . values . Count ) ;
133+ Assert . Equal ( 0 , innerNode1 . nodes [ 0 ] . nodes . Count ) ;
134+
135+ ConfigNode innerNode2 = toNode . nodes [ 1 ] ;
136+ Assert . NotSame ( fromNode . nodes [ 1 ] , innerNode2 ) ;
137+ Assert . Equal ( "INNER_NODE_2" , innerNode2 . name ) ;
138+ Assert . Equal ( 1 , innerNode2 . values . Count ) ;
139+ Assert . NotSame ( fromNode . nodes [ 1 ] . values [ 0 ] , innerNode2 . values [ 0 ] ) ;
140+ Assert . Equal ( "stu" , innerNode2 . values [ 0 ] . name ) ;
141+ Assert . Equal ( "vwx" , innerNode2 . values [ 0 ] . value ) ;
142+ Assert . Equal ( 1 , innerNode2 . nodes . Count ) ;
143+ Assert . NotSame ( fromNode . nodes [ 1 ] . nodes [ 0 ] , innerNode2 . nodes [ 0 ] ) ;
144+ Assert . Equal ( "INNER_INNER_NODE_2" , innerNode2 . nodes [ 0 ] . name ) ;
145+ Assert . Equal ( 0 , innerNode2 . nodes [ 0 ] . values . Count ) ;
146+ Assert . Equal ( 0 , innerNode2 . nodes [ 0 ] . nodes . Count ) ;
147+ }
86148 }
87149}
0 commit comments