@@ -37,7 +37,11 @@ void _testNode() {
3737 test ('replaceWith' , () {
3838 final e0 = Element .tag ('e0' )..appendText ('e0-text' );
3939 final e1 = Element .tag ('e1' )..appendText ('e1-text' );
40- final e2 = Element .tag ('e2' )..appendText ('e2-text' );
40+ final e2 = Element .tag ('e2' )..append (
41+ Element .tag ('e2c1' )
42+ )..append (
43+ Element .tag ('e2c2' )
44+ );
4145 final root = Element .tag ('sometag' )
4246 ..setAttribute ('k' , 'v' )
4347 ..append (e0)
@@ -46,11 +50,9 @@ void _testNode() {
4650
4751 // Initial tree
4852 expect (
49- root.outerHtml,
50- equals (
51- '<sometag k="v"><e0>e0-text</e0><e1>e1-text</e1><e2>e2-text</e2></sometag>' ,
52- ),
53- );
53+ root.outerHtml,
54+ equals (
55+ '<sometag k="v"><e0>e0-text</e0><e1>e1-text</e1><e2><e2c1></e2c1><e2c2></e2c2></e2></sometag>' ));
5456
5557 // Replace child #1 of 'e1'
5658 {
@@ -64,11 +66,9 @@ void _testNode() {
6466 expect (e1.firstChild, same (replacement));
6567 expect (e1.firstChild! .parent, same (e1));
6668 expect (
67- root.outerHtml,
68- equals (
69- '<sometag k="v"><e0>e0-text</e0><e1>e1-text-replaced</e1><e2>e2-text</e2></sometag>' ,
70- ),
71- );
69+ root.outerHtml,
70+ equals (
71+ '<sometag k="v"><e0>e0-text</e0><e1>e1-text-replaced</e1><e2><e2c1></e2c1><e2c2></e2c2></e2></sometag>' ));
7272 }
7373
7474 // Replace child #2 of root ('e1')
@@ -84,12 +84,26 @@ void _testNode() {
8484 expect (e1.nextNode, isNull);
8585 expect (replacement.parent, same (root));
8686 expect (replacement.nextNode, same (e2));
87+ expect (
88+ root.outerHtml,
89+ equals (
90+ '<sometag k="v"><e0>e0-text</e0>e1-replaced<e2><e2c1></e2c1><e2c2></e2c2></e2></sometag>' ));
91+ }
92+ // Replace with existing node to check if it moved properly
93+ {
94+ final replacement = e2.children.first;
95+ e0.replaceWith (replacement);
96+
97+ expect (e0.nextNode, isNull);
98+ expect (e0.previousNode, isNull);
99+ expect (e0.parent, isNull);
100+ expect (replacement.parent, same (root));
101+ expect (replacement.previousNode, isNull);
102+ expect (replacement.nextNode, isNotNull);
87103 expect (
88104 root.outerHtml,
89105 equals (
90- '<sometag k="v"><e0>e0-text</e0>e1-replaced<e2>e2-text</e2></sometag>' ,
91- ),
92- );
106+ '<sometag k="v"><e2c1></e2c1>e1-replaced<e2><e2c2></e2c2></e2></sometag>' ));
93107 }
94108 });
95109 test ('replaceWith when the node has no parent' , () {
0 commit comments