Skip to content

Commit 8019499

Browse files
committed
Address review comments
1 parent 52eee6f commit 8019499

File tree

3 files changed

+71
-22
lines changed

3 files changed

+71
-22
lines changed

ext/dom/element.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,6 +1426,8 @@ PHP_METHOD(DOMElement, insertAdjacentElement)
14261426
RETURN_NULL();
14271427
} else if (result != INSERT_ADJACENT_RES_FAILED) {
14281428
DOM_RET_OBJ(otherp, &ret, other_intern);
1429+
} else {
1430+
RETURN_THROWS();
14291431
}
14301432
}
14311433
/* }}} end DOMElement::insertAdjacentElement */

ext/dom/tests/DOMElement_insertAdjacentElement.phpt

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,31 @@ foreach (['beforebegin', 'afterbegin', 'beforeend', 'afterend'] as $where) {
3333
}
3434
}
3535

36-
echo "--- Normal cases ---\n";
36+
function testNormalCases($dom, $uppercase) {
37+
$container = $dom->documentElement;
38+
$p = $container->firstElementChild;
39+
$transform = fn ($s) => $uppercase ? strtoupper($s) : $s;
3740

38-
var_dump($p->insertAdjacentElement("beforebegin", $dom->createElement('A'))->tagName);
39-
echo $dom->saveXML();
41+
var_dump($p->insertAdjacentElement($transform("beforebegin"), $dom->createElement('A'))->tagName);
42+
echo $dom->saveXML();
4043

41-
var_dump($p->insertAdjacentElement("afterbegin", $dom->createElement('B'))->tagName);
42-
echo $dom->saveXML();
44+
var_dump($p->insertAdjacentElement($transform("afterbegin"), $dom->createElement('B'))->tagName);
45+
echo $dom->saveXML();
4346

44-
var_dump($p->insertAdjacentElement("beforeend", $dom->createElement('C'))->tagName);
45-
echo $dom->saveXML();
47+
var_dump($p->insertAdjacentElement($transform("beforeend"), $dom->createElement('C'))->tagName);
48+
echo $dom->saveXML();
4649

47-
var_dump($p->insertAdjacentElement("afterend", $dom->createElement('D'))->tagName);
48-
echo $dom->saveXML();
50+
var_dump($p->insertAdjacentElement($transform("afterend"), $dom->createElement('D'))->tagName);
51+
echo $dom->saveXML();
52+
}
53+
54+
echo "--- Normal cases uppercase ---\n";
55+
56+
testNormalCases(clone $dom, true);
57+
58+
echo "--- Normal cases lowercase ---\n";
59+
60+
testNormalCases($dom, false);
4961

5062
$empty = $dom->createElement('empty');
5163
var_dump($empty->insertAdjacentElement("afterbegin", $dom->createElement('A'))->tagName);
@@ -78,7 +90,20 @@ Hierarchy Request Error
7890
Hierarchy Request Error
7991
Hierarchy Request Error
8092
Hierarchy Request Error
81-
--- Normal cases ---
93+
--- Normal cases uppercase ---
94+
string(1) "A"
95+
<?xml version="1.0"?>
96+
<container><A/><p>foo</p></container>
97+
string(1) "B"
98+
<?xml version="1.0"?>
99+
<container><A/><p><B/>foo</p></container>
100+
string(1) "C"
101+
<?xml version="1.0"?>
102+
<container><A/><p><B/>foo<C/></p></container>
103+
string(1) "D"
104+
<?xml version="1.0"?>
105+
<container><A/><p><B/>foo<C/></p><D/></container>
106+
--- Normal cases lowercase ---
82107
string(1) "A"
83108
<?xml version="1.0"?>
84109
<container><A/><p>foo</p></container>

ext/dom/tests/DOMElement_insertAdjacentText.phpt

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ dom
77

88
$dom = new DOMDocument();
99
$dom->loadXML('<?xml version="1.0"?><container><p>foo</p></container>');
10-
$container = $dom->documentElement;
11-
$p = $container->firstElementChild;
1210

1311
echo "--- Edge cases ---\n";
1412

@@ -18,19 +16,33 @@ try {
1816
echo $e->getMessage(), "\n";
1917
}
2018

21-
echo "--- Normal cases ---\n";
19+
function testNormalCases($dom, $uppercase) {
20+
$container = $dom->documentElement;
21+
$p = $container->firstElementChild;
22+
$transform = fn ($s) => $uppercase ? strtoupper($s) : $s;
2223

23-
$p->insertAdjacentText("beforebegin", 'A');
24-
echo $dom->saveXML();
24+
$p->insertAdjacentText("beforebegin", 'A');
25+
echo $dom->saveXML();
2526

26-
$p->insertAdjacentText("afterbegin", 'B');
27-
echo $dom->saveXML();
27+
$p->insertAdjacentText("afterbegin", 'B');
28+
echo $dom->saveXML();
2829

29-
$p->insertAdjacentText("beforeend", 'C');
30-
echo $dom->saveXML();
30+
$p->insertAdjacentText("beforeend", 'C');
31+
echo $dom->saveXML();
3132

32-
$p->insertAdjacentText("afterend", 'D');
33-
echo $dom->saveXML();
33+
$p->insertAdjacentText("afterend", 'D');
34+
echo $dom->saveXML();
35+
}
36+
37+
echo "--- Normal cases uppercase ---\n";
38+
39+
testNormalCases(clone $dom, true);
40+
41+
echo "--- Normal cases lowercase ---\n";
42+
43+
testNormalCases($dom, false);
44+
45+
echo "--- Normal cases starting from empty element ---\n";
3446

3547
$empty = $dom->createElement('empty');
3648
$empty->insertAdjacentText("afterbegin", 'A');
@@ -45,7 +57,16 @@ var_dump($AText->textContent);
4557
--EXPECT--
4658
--- Edge cases ---
4759
Syntax Error
48-
--- Normal cases ---
60+
--- Normal cases uppercase ---
61+
<?xml version="1.0"?>
62+
<container>A<p>foo</p></container>
63+
<?xml version="1.0"?>
64+
<container>A<p>Bfoo</p></container>
65+
<?xml version="1.0"?>
66+
<container>A<p>BfooC</p></container>
67+
<?xml version="1.0"?>
68+
<container>A<p>BfooC</p>D</container>
69+
--- Normal cases lowercase ---
4970
<?xml version="1.0"?>
5071
<container>A<p>foo</p></container>
5172
<?xml version="1.0"?>
@@ -54,6 +75,7 @@ Syntax Error
5475
<container>A<p>BfooC</p></container>
5576
<?xml version="1.0"?>
5677
<container>A<p>BfooC</p>D</container>
78+
--- Normal cases starting from empty element ---
5779
<empty>A</empty>
5880
<empty>BA</empty>
5981
string(2) "BA"

0 commit comments

Comments
 (0)