@@ -43,6 +43,30 @@ public function testConstruct(): void
4343 $ this ->assertEquals ('<element>BBB</element> ' . chr (10 ), $ object ->getData ());
4444 }
4545
46+ public function testConstructCompatibility (): void
47+ {
48+ $ object = new XMLWriter (XMLWriter::STORAGE_MEMORY , null , false );
49+ $ object ->startElement ('element ' );
50+ $ object ->startElement ('sub ' );
51+ $ object ->text ('CCC ' );
52+ $ object ->endElement ();
53+ $ object ->endElement ();
54+ $ this ->assertEquals (
55+ '<element> ' . PHP_EOL . ' <sub>CCC</sub> ' . PHP_EOL . '</element> ' . PHP_EOL ,
56+ $ object ->getData ()
57+ );
58+ $ object = new XMLWriter (XMLWriter::STORAGE_MEMORY , null , true );
59+ $ object ->startElement ('element ' );
60+ $ object ->startElement ('sub ' );
61+ $ object ->text ('CCC ' );
62+ $ object ->endElement ();
63+ $ object ->endElement ();
64+ $ this ->assertEquals (
65+ '<element><sub>CCC</sub></element> ' ,
66+ $ object ->getData ()
67+ );
68+ }
69+
4670 public function testWriteAttribute (): void
4771 {
4872 $ xmlWriter = new XMLWriter ();
@@ -53,6 +77,23 @@ public function testWriteAttribute(): void
5377 $ this ->assertSame ('<element name="value"/> ' . chr (10 ), $ xmlWriter ->getData ());
5478 }
5579
80+ public function testWriteAttributeIf (): void
81+ {
82+ $ xmlWriter = new XMLWriter ();
83+ $ xmlWriter ->startElement ('element ' );
84+ $ xmlWriter ->writeAttributeIf (true , 'name ' , 'value ' );
85+ $ xmlWriter ->endElement ();
86+
87+ $ this ->assertSame ('<element name="value"/> ' . chr (10 ), $ xmlWriter ->getData ());
88+
89+ $ xmlWriter = new XMLWriter ();
90+ $ xmlWriter ->startElement ('element ' );
91+ $ xmlWriter ->writeAttributeIf (false , 'name ' , 'value ' );
92+ $ xmlWriter ->endElement ();
93+
94+ $ this ->assertSame ('<element/> ' . chr (10 ), $ xmlWriter ->getData ());
95+ }
96+
5697 public function testWriteAttributeShouldWriteFloatValueLocaleIndependent (): void
5798 {
5899 $ value = 1.2 ;
@@ -73,4 +114,77 @@ public function testWriteAttributeShouldWriteFloatValueLocaleIndependent(): void
73114 }
74115 $ this ->assertSame ('<element name="1.2"/> ' . chr (10 ), $ xmlWriter ->getData ());
75116 }
117+
118+ public function testWriteElementBlock (): void
119+ {
120+ $ xmlWriter = new XMLWriter ();
121+ $ xmlWriter ->writeElementBlock ('element ' , 'name ' );
122+
123+ $ this ->assertSame ('<element name=""/> ' . chr (10 ), $ xmlWriter ->getData ());
124+
125+ $ xmlWriter = new XMLWriter ();
126+ $ xmlWriter ->writeElementBlock ('element ' , 'name ' , 'value ' );
127+
128+ $ this ->assertSame ('<element name="value"/> ' . chr (10 ), $ xmlWriter ->getData ());
129+
130+ $ xmlWriter = new XMLWriter ();
131+ $ xmlWriter ->writeElementBlock ('element ' , ['name ' => 'value ' ]);
132+
133+ $ this ->assertSame ('<element name="value"/> ' . chr (10 ), $ xmlWriter ->getData ());
134+
135+ $ xmlWriter = new XMLWriter ();
136+ $ xmlWriter ->writeElementBlock ('element ' , ['name ' => 'value ' ], 'value2 ' );
137+
138+ $ this ->assertSame ('<element name="value"/> ' . chr (10 ), $ xmlWriter ->getData ());
139+ }
140+
141+ /**
142+ * @dataProvider dataProviderWriteElementIf
143+ */
144+ public function testWriteElementIf (bool $ condition , ?string $ attribute , ?string $ value , string $ expected ): void
145+ {
146+ $ xmlWriter = new XMLWriter ();
147+ $ xmlWriter ->writeElementIf ($ condition , 'element ' , $ attribute , $ value );
148+
149+ $ this ->assertSame ($ expected , $ xmlWriter ->getData ());
150+ }
151+
152+ /**
153+ * @return array<array<bool|string|null>>
154+ */
155+ public function dataProviderWriteElementIf (): array
156+ {
157+ return [
158+ [
159+ false ,
160+ null ,
161+ null ,
162+ '' ,
163+ ],
164+ [
165+ true ,
166+ null ,
167+ null ,
168+ '<element/> ' . chr (10 ),
169+ ],
170+ [
171+ true ,
172+ 'attribute ' ,
173+ null ,
174+ '<element attribute=""/> ' . chr (10 ),
175+ ],
176+ [
177+ true ,
178+ null ,
179+ 'value ' ,
180+ '<element>value</element> ' . chr (10 ),
181+ ],
182+ [
183+ true ,
184+ 'attribute ' ,
185+ 'value ' ,
186+ '<element attribute="value"/> ' . chr (10 ),
187+ ],
188+ ];
189+ }
76190}
0 commit comments