2 namespace TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers;
22 $this->templateVariableContainer = new \TYPO3\CMS\Fluid\Core\ViewHelper\TemplateVariableContainer(array());
23 $this->renderingContext->injectTemplateVariableContainer($this->templateVariableContainer);
25 $this->arguments[
'reverse'] = null;
26 $this->arguments[
'key'] =
'';
27 $this->arguments[
'iteration'] = null;
35 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
37 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
38 $this->arguments[
'each'] = array(0, 1, 2, 3);
39 $this->arguments[
'as'] =
'innerVariable';
42 $viewHelper->setViewHelperNode($viewHelperNode);
43 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as']);
45 $expectedCallProtocol = array(
46 array(
'innerVariable' => 0),
47 array(
'innerVariable' => 1),
48 array(
'innerVariable' => 2),
49 array(
'innerVariable' => 3)
51 $this->assertEquals($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
59 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
61 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
63 $this->arguments[
'each'] = array(
'key1' =>
'value1',
'key2' =>
'value2');
64 $this->arguments[
'as'] =
'innerVariable';
65 $this->arguments[
'key'] =
'someKey';
68 $viewHelper->setViewHelperNode($viewHelperNode);
69 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key']);
71 $expectedCallProtocol = array(
73 'innerVariable' =>
'value1',
77 'innerVariable' =>
'value2',
81 $this->assertEquals($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
89 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
91 $this->arguments[
'each'] = null;
92 $this->arguments[
'as'] =
'foo';
96 $this->assertEquals(
'', $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as']));
104 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
106 $this->arguments[
'each'] = array();
107 $this->arguments[
'as'] =
'foo';
111 $this->assertEquals(
'', $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as']));
119 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
121 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
123 $this->arguments[
'each'] = array(0, 1, 2, 3);
124 $this->arguments[
'as'] =
'innerVariable';
125 $this->arguments[
'reverse'] =
true;
128 $viewHelper->setViewHelperNode($viewHelperNode);
129 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key'], $this->arguments[
'reverse']);
131 $expectedCallProtocol = array(
132 array(
'innerVariable' => 3),
133 array(
'innerVariable' => 2),
134 array(
'innerVariable' => 1),
135 array(
'innerVariable' => 0)
137 $this->assertEquals($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
145 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
147 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
149 $this->arguments[
'each'] = array(
'key1' =>
'value1',
'key2' =>
'value2');
150 $this->arguments[
'as'] =
'innerVariable';
151 $this->arguments[
'key'] =
'someKey';
152 $this->arguments[
'reverse'] =
true;
155 $viewHelper->setViewHelperNode($viewHelperNode);
156 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key'], $this->arguments[
'reverse']);
158 $expectedCallProtocol = array(
160 'innerVariable' =>
'value2',
164 'innerVariable' =>
'value1',
168 $this->assertEquals($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
176 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
178 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
180 $this->arguments[
'each'] = array(
'foo',
'bar',
'baz');
181 $this->arguments[
'as'] =
'innerVariable';
182 $this->arguments[
'key'] =
'someKey';
185 $viewHelper->setViewHelperNode($viewHelperNode);
186 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key']);
188 $expectedCallProtocol = array(
190 'innerVariable' =>
'foo',
194 'innerVariable' =>
'bar',
198 'innerVariable' =>
'baz',
202 $this->assertSame($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
210 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
212 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
214 $this->arguments[
'each'] = array(
'foo',
'bar',
'baz');
215 $this->arguments[
'as'] =
'innerVariable';
216 $this->arguments[
'key'] =
'someKey';
217 $this->arguments[
'reverse'] =
true;
220 $viewHelper->setViewHelperNode($viewHelperNode);
221 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key'], $this->arguments[
'reverse']);
223 $expectedCallProtocol = array(
225 'innerVariable' =>
'baz',
229 'innerVariable' =>
'bar',
233 'innerVariable' =>
'foo',
237 $this->assertSame($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
246 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
247 $object = new \stdClass();
249 $this->arguments[
'each'] = $object;
250 $this->arguments[
'as'] =
'innerVariable';
251 $this->arguments[
'key'] =
'someKey';
252 $this->arguments[
'reverse'] =
true;
255 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key']);
264 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
266 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
268 $this->arguments[
'each'] = new \ArrayObject(array(
'key1' =>
'value1',
'key2' =>
'value2'));
269 $this->arguments[
'as'] =
'innerVariable';
272 $viewHelper->setViewHelperNode($viewHelperNode);
273 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as']);
275 $expectedCallProtocol = array(
276 array(
'innerVariable' =>
'value1'),
277 array(
'innerVariable' =>
'value2')
279 $this->assertEquals($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
287 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
289 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
291 $this->arguments[
'each'] = new \ArrayIterator(array(
'key1' =>
'value1',
'key2' =>
'value2'));
292 $this->arguments[
'as'] =
'innerVariable';
293 $this->arguments[
'key'] =
'someKey';
296 $viewHelper->setViewHelperNode($viewHelperNode);
297 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key']);
299 $expectedCallProtocol = array(
301 'innerVariable' =>
'value1',
305 'innerVariable' =>
'value2',
309 $this->assertEquals($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
317 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
319 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
321 $splObjectStorageObject = new \SplObjectStorage();
322 $object1 = new \stdClass();
323 $splObjectStorageObject->attach($object1);
324 $object2 = new \stdClass();
325 $splObjectStorageObject->attach($object2,
'foo');
326 $object3 = new \stdClass();
327 $splObjectStorageObject->attach($object3,
'bar');
329 $this->arguments[
'each'] = $splObjectStorageObject;
330 $this->arguments[
'as'] =
'innerVariable';
331 $this->arguments[
'key'] =
'someKey';
334 $viewHelper->setViewHelperNode($viewHelperNode);
335 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key']);
337 $expectedCallProtocol = array(
339 'innerVariable' => $object1,
343 'innerVariable' => $object2,
347 'innerVariable' => $object3,
351 $this->assertSame($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
359 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
361 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
363 $this->arguments[
'each'] = array(
'foo' =>
'bar',
'FLOW3' =>
'Fluid',
'TYPO3' =>
'rocks');
364 $this->arguments[
'as'] =
'innerVariable';
365 $this->arguments[
'iteration'] =
'iteration';
368 $viewHelper->setViewHelperNode($viewHelperNode);
369 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as'], $this->arguments[
'key'], $this->arguments[
'reverse'], $this->arguments[
'iteration']);
371 $expectedCallProtocol = array(
373 'innerVariable' =>
'bar',
374 'iteration' => array(
385 'innerVariable' =>
'Fluid',
386 'iteration' => array(
397 'innerVariable' =>
'rocks',
398 'iteration' => array(
409 $this->assertSame($expectedCallProtocol, $viewHelperNode->callProtocol,
'The call protocol differs -> The for loop does not work as it should!');
417 $viewHelper = new \TYPO3\CMS\Fluid\ViewHelpers\ForViewHelper();
419 $viewHelperNode = new \TYPO3\CMS\Fluid\Tests\Unit\ViewHelpers\Fixtures\ConstraintSyntaxTreeNode($this->templateVariableContainer);
421 $mockItems = $this->getMockBuilder(\ArrayObject::class)->setMethods([
'count'])->disableOriginalConstructor()->getMock();
422 $mockItems->expects($this->never())->method(
'count');
423 $this->arguments[
'each'] = $mockItems;
424 $this->arguments[
'as'] =
'innerVariable';
427 $viewHelper->setViewHelperNode($viewHelperNode);
428 $viewHelper->render($this->arguments[
'each'], $this->arguments[
'as']);