@@ -49,7 +49,10 @@ public function testCastModernImplementation()
4949 );
5050 }
5151
52- public function testCastNode ()
52+ /**
53+ * @requires PHP < 8.4
54+ */
55+ public function testCastNodePriorToPhp84 ()
5356 {
5457 $ doc = new \DOMDocument ();
5558 $ doc ->loadXML ('<foo><bar/></foo> ' );
@@ -67,6 +70,27 @@ public function testCastNode()
6770 );
6871 }
6972
73+ /**
74+ * @requires PHP 8.4
75+ */
76+ public function testCastNode ()
77+ {
78+ $ doc = new \DOMDocument ();
79+ $ doc ->loadXML ('<foo><bar/></foo> ' );
80+ $ node = $ doc ->documentElement ->firstChild ;
81+
82+ $ this ->assertDumpMatchesFormat (<<<'EODUMP'
83+ DOMElement {%A
84+ +ownerDocument: ~ ?DOMDocument
85+ +namespaceURI: ~ ?string
86+ +prefix: ~ string
87+ +localName: ~ ?string
88+ %A}
89+ EODUMP,
90+ $ node
91+ );
92+ }
93+
7094 /**
7195 * @requires PHP 8.4
7296 */
@@ -77,9 +101,9 @@ public function testCastModernNode()
77101
78102 $ this ->assertDumpMatchesFormat (<<<'EODUMP'
79103 Dom\Element {%A
80- +baseURI: ? string
81- +isConnected: ? bool
82- +ownerDocument: ? ?Dom\Document
104+ +baseURI: ~ string
105+ +isConnected: ~ bool
106+ +ownerDocument: ~ ?Dom\Document
83107 %A}
84108 EODUMP,
85109 $ node
@@ -142,7 +166,10 @@ public function testCastHTMLDocument()
142166 );
143167 }
144168
145- public function testCastText ()
169+ /**
170+ * @requires PHP < 8.4
171+ */
172+ public function testCastTextPriorToPhp84 ()
146173 {
147174 $ doc = new \DOMText ('foo ' );
148175
@@ -155,6 +182,22 @@ public function testCastText()
155182 );
156183 }
157184
185+ /**
186+ * @requires PHP 8.4
187+ */
188+ public function testCastText ()
189+ {
190+ $ doc = new \DOMText ('foo ' );
191+
192+ $ this ->assertDumpMatchesFormat (<<<'EODUMP'
193+ DOMText {%A
194+ +wholeText: ~ string
195+ }
196+ EODUMP,
197+ $ doc
198+ );
199+ }
200+
158201 /**
159202 * @requires PHP 8.4
160203 */
@@ -163,14 +206,17 @@ public function testCastModernText()
163206 $ text = \Dom \HTMLDocument::createEmpty ()->createTextNode ('foo ' );
164207 $ this ->assertDumpMatchesFormat (<<<'EODUMP'
165208 Dom\Text {%A
166- +wholeText: ? string
209+ +wholeText: ~ string
167210 }
168211 EODUMP,
169212 $ text
170213 );
171214 }
172215
173- public function testCastAttr ()
216+ /**
217+ * @requires PHP < 8.4
218+ */
219+ public function testCastAttrPriorToPhp84 ()
174220 {
175221 $ attr = new \DOMAttr ('attr ' , 'value ' );
176222
@@ -187,6 +233,26 @@ public function testCastAttr()
187233 );
188234 }
189235
236+ /**
237+ * @requires PHP 8.4
238+ */
239+ public function testCastAttrPrior ()
240+ {
241+ $ attr = new \DOMAttr ('attr ' , 'value ' );
242+
243+ $ this ->assertDumpMatchesFormat (<<<'EODUMP'
244+ DOMAttr {%A
245+ +name: ~ string
246+ +specified: ~ bool
247+ +value: ~ string
248+ +ownerElement: ~ ?DOMElement
249+ +schemaTypeInfo: ~ mixed
250+ }
251+ EODUMP,
252+ $ attr
253+ );
254+ }
255+
190256 /**
191257 * @requires PHP 8.4
192258 */
@@ -196,17 +262,20 @@ public function testCastModernAttr()
196262
197263 $ this ->assertDumpMatchesFormat (<<<'EODUMP'
198264 Dom\Attr {%A
199- +name: ? string
200- +value: ? string
201- +ownerElement: ? ?Dom\Element
202- +specified: true
265+ +name: ~ string
266+ +value: ~ string
267+ +ownerElement: ~ ?Dom\Element
268+ +specified: ~ bool
203269 }
204270 EODUMP,
205271 $ attr
206272 );
207273 }
208274
209- public function testCastElement ()
275+ /**
276+ * @requires PHP < 8.4
277+ */
278+ public function testCastElementPriorToPhp84 ()
210279 {
211280 $ attr = new \DOMElement ('foo ' );
212281
@@ -219,6 +288,22 @@ public function testCastElement()
219288 );
220289 }
221290
291+ /**
292+ * @requires PHP 8.4
293+ */
294+ public function testCastElement ()
295+ {
296+ $ attr = new \DOMElement ('foo ' );
297+
298+ $ this ->assertDumpMatchesFormat (<<<'EODUMP'
299+ DOMElement {%A
300+ +tagName: ~ string
301+ %A}
302+ EODUMP,
303+ $ attr
304+ );
305+ }
306+
222307 /**
223308 * @requires PHP 8.4
224309 */
@@ -228,14 +313,17 @@ public function testCastModernElement()
228313
229314 $ this ->assertDumpMatchesFormat (<<<'EODUMP'
230315 Dom\HTMLElement {%A
231- +tagName: ? string
316+ +tagName: ~ string
232317 %A}
233318 EODUMP,
234319 $ attr
235320 );
236321 }
237322
238- public function testCastDocumentType ()
323+ /**
324+ * @requires PHP < 8.4
325+ */
326+ public function testCastDocumentTypePriorToPhp84 ()
239327 {
240328 $ implementation = new \DOMImplementation ();
241329 $ type = $ implementation ->createDocumentType ('html ' , 'publicId ' , 'systemId ' );
@@ -254,6 +342,28 @@ public function testCastDocumentType()
254342 );
255343 }
256344
345+ /**
346+ * @requires PHP 8.4
347+ */
348+ public function testCastDocumentType ()
349+ {
350+ $ implementation = new \DOMImplementation ();
351+ $ type = $ implementation ->createDocumentType ('html ' , 'publicId ' , 'systemId ' );
352+
353+ $ this ->assertDumpMatchesFormat (<<<'EODUMP'
354+ DOMDocumentType {%A
355+ +name: ~ string
356+ +entities: ~ DOMNamedNodeMap
357+ +notations: ~ DOMNamedNodeMap
358+ +publicId: ~ string
359+ +systemId: ~ string
360+ +internalSubset: ~ ?string
361+ }
362+ EODUMP,
363+ $ type
364+ );
365+ }
366+
257367 /**
258368 * @requires PHP 8.4
259369 */
@@ -264,19 +374,22 @@ public function testCastModernDocumentType()
264374
265375 $ this ->assertDumpMatchesFormat (<<<'EODUMP'
266376 Dom\DocumentType {%A
267- +name: ? string
268- +entities: ? Dom\DtdNamedNodeMap
269- +notations: ? Dom\DtdNamedNodeMap
270- +publicId: ? string
271- +systemId: ? string
272- +internalSubset: ? ?string
377+ +name: ~ string
378+ +entities: ~ Dom\DtdNamedNodeMap
379+ +notations: ~ Dom\DtdNamedNodeMap
380+ +publicId: ~ string
381+ +systemId: ~ string
382+ +internalSubset: ~ ?string
273383 }
274384 EODUMP,
275385 $ type
276386 );
277387 }
278388
279
8B92
- public function testCastProcessingInstruction ()
389+ /**
390+ * @requires PHP < 8.4
391+ */
392+ public function testCastProcessingInstructionPriorToPhp84 ()
280393 {
281394 $ entity = new \DOMProcessingInstruction ('target ' , 'data ' );
282395
@@ -290,6 +403,23 @@ public function testCastProcessingInstruction()
290403 );
291404 }
292405
406+ /**
407+ * @requires PHP 8.4
408+ */
409+ public function testCastProcessingInstruction ()
410+ {
411+ $ entity = new \DOMProcessingInstruction ('target ' , 'data ' );
412+
413+ $ this ->assertDumpMatchesFormat (<<<'EODUMP'
414+ DOMProcessingInstruction {%A
415+ +target: ~ string
416+ +data: ~ string
417+ }
418+ EODUMP,
419+ $ entity
420+ );
421+ }
422+
293423 /**
294424 * @requires PHP 8.4
295425 */
@@ -299,16 +429,19 @@ public function testCastModernProcessingInstruction()
299429
300430 $ this ->assertDumpMatchesFormat (<<<'EODUMP'
301431 Dom\ProcessingInstruction {%A
302- +data: ? string
303- +length: ? int
304- +target: ? string
432+ +data: ~ string
433+ +length: ~ int
434+ +target: ~ string
305435 }
306436 EODUMP,
307437 $ entity
308438 );
309439 }
310440
311- public function testCastXPath ()
441+ /**
442+ * @requires PHP < 8.4
443+ */
444+ public function testCastXPathPriorToPhp84 ()
312445 {
313446 $ xpath = new \DOMXPath (new \DOMDocument ());
314447
@@ -322,6 +455,23 @@ public function testCastXPath()
322455 );
323456 }
324457
458+ /**
459+ * @requires PHP 8.4
460+ */
461+ public function testCastXPath ()
462+ {
463+ $ xpath = new \DOMXPath (new \DOMDocument ());
464+
465+ $ this ->assertDumpEquals (<<<'EODUMP'
466+ DOMXPath {
467+ +document: ~ DOMDocument
468+ +registerNodeNamespaces: ~ bool
469+ }
470+ EODUMP,
471+ $ xpath
802E
472+ );
473+ }
474+
325475 /**
326476 * @requires PHP 8.4
327477 */
@@ -331,8 +481,8 @@ public function testCastModernXPath()
331481
332482 $ this ->assertDumpEquals (<<<'EODUMP'
333483 Dom\XPath {
334- +document: ? Dom\Document
335- +registerNodeNamespaces: ? bool
484+ +document: ~ Dom\Document
485+ +registerNodeNamespaces: ~ bool
336486 }
337487 EODUMP,
338488 $ entity
0 commit comments