@@ -176,8 +176,60 @@ public function testSlot()
176176 $ this ->assertTrue (ComponentExtension::slot ('foo ' , ['pug_component_slot ' => 'foo ' ]));
177177 $ this ->assertTrue (ComponentExtension::slot ('__main__ ' , ['pug_component_slot ' => '__main__ ' ]));
178178
179+ $ called = false ;
180+ $ callback = function () use (&$ called ) {
181+ $ called = true ;
182+ };
183+
184+ $ this ->assertTrue (ComponentExtension::slot ('foo ' , ['pug_component_slot ' => 'foo ' , 'pug_component_slot_foo ' => $ callback ]));
185+ $ this ->assertTrue ($ called );
186+
187+ $ called = false ;
188+ $ this ->assertTrue (ComponentExtension::slot ('__main__ ' , ['pug_component_slot ' => '__main__ ' , 'pug_component_slot_foo ' => $ callback ]));
189+ $ this ->assertFalse ($ called );
190+
191+ $ called = false ;
192+ $ this ->assertTrue (ComponentExtension::slot ('foo ' , ['pug_component_slot ' => 'foo ' , 'pug_component_slot___main__ ' => $ callback ]));
193+ $ this ->assertFalse ($ called );
194+
195+ $ called = false ;
196+ $ this ->assertTrue (ComponentExtension::slot ('__main__ ' , ['pug_component_slot ' => '__main__ ' , 'pug_component_slot___main__ ' => $ callback ]));
197+ $ this ->assertTrue ($ called );
198+
199+ $ arguments = [];
200+ $ children = static function (...$ args ) use (&$ arguments ) {
201+ if (isset ($ args [0 ]['pug_component_slot_foo ' ])) {
202+ unset($ args [0 ]['pug_component_slot_foo ' ]);
203+ }
204+
205+ if (isset ($ args [0 ]['pug_component_slot___main__ ' ])) {
206+ unset($ args [0 ]['pug_component_slot___main__ ' ]);
207+ }
208+
209+ $ arguments = $ args ;
210+ };
211+
212+ $ this ->assertTrue (ComponentExtension::slot ('foo ' , ['pug_component_slot ' => 'foo ' , '__pug_children ' => $ children ]));
213+ $ this ->assertSame ([['pug_component_slot ' => 'foo ' , '__pug_children ' => $ children ]], $ arguments );
214+ $ this ->assertTrue (ComponentExtension::slot ('__main__ ' , ['pug_component_slot ' => '__main__ ' , '__pug_children ' => $ children ]));
215+ $ this ->assertSame ([['pug_component_slot ' => '__main__ ' , '__pug_children ' => $ children ]], $ arguments );
216+ $ this ->assertTrue (ComponentExtension::slot ('foo ' , ['__pug_children ' => $ children ]));
217+ $ this ->assertSame ([['pug_component_slot ' => 'foo ' , '__pug_children ' => $ children ]], $ arguments );
218+ $ this ->assertTrue (ComponentExtension::slot ('__main__ ' , ['__pug_children ' => $ children ]));
219+ $ this ->assertSame ([['pug_component_slot ' => '__main__ ' , '__pug_children ' => $ children ]], $ arguments );
220+
179221 $ arguments = [];
180222 $ children = static function (...$ args ) use (&$ arguments ) {
223+ if (isset ($ args [0 ]['pug_component_slot_foo ' ])) {
224+ $ args [0 ]['pug_component_slot_foo ' ]();
225+ unset($ args [0 ]['pug_component_slot_foo ' ]);
226+ }
227+
228+ if (isset ($ args [0 ]['pug_component_slot___main__ ' ])) {
229+ $ args [0 ]['pug_component_slot___main__ ' ]();
230+ unset($ args [0 ]['pug_component_slot___main__ ' ]);
231+ }
232+
181233 $ arguments = $ args ;
182234 };
183235
0 commit comments