Hoa central
IteratorIterator.php
Go to the documentation of this file.
1 <?php
2 
37 namespace Hoa\Iterator\Test\Unit;
38 
39 use Hoa\Iterator as LUT;
40 use Hoa\Test;
41 
51 {
52  public function case_inner_iterator()
53  {
54  $this
55  ->given(
56  $iterator = new LUT\Map([]),
57  $iteratoriterator = new LUT\IteratorIterator($iterator)
58  )
59  ->when($result = $iteratoriterator->getInnerIterator())
60  ->then
61  ->object($result)
62  ->isIdenticalTo($iterator);
63  }
64 
65  public function case_traverse()
66  {
67  $this
68  ->given(
69  $iterator = new LUT\Map(['a', 'b', 'c']),
70  $iteratoriterator = new LUT\IteratorIterator($iterator)
71  )
72  ->when($result = iterator_to_array($iteratoriterator))
73  ->then
74  ->array($result)
75  ->isEqualTo(['a', 'b', 'c']);
76  }
77 
78  public function case_recursive_leaves_only()
79  {
80  $this
81  ->given(
82  $array = [
83  'a' => ['b', 'c', 'd'],
84  'e' => ['f', 'g', 'i']
85  ],
86  $iterator = new LUT\Recursive\Map($array),
87  $iteratoriterator = new LUT\Recursive\Iterator(
88  $iterator,
89  LUT\Recursive\Iterator::LEAVES_ONLY
90  )
91  )
92  ->when($result = iterator_to_array($iteratoriterator, false))
93  ->then
94  ->array($result)
95  ->isEqualTo(['b', 'c', 'd', 'f', 'g', 'i']);
96  }
97 
98  public function case_recursive_self_first()
99  {
100  $this
101  ->given(
102  $array = [
103  'a' => ['b', 'c', 'd'],
104  'e' => ['f', 'g', 'i']
105  ],
106  $iterator = new LUT\Recursive\Map($array),
107  $iteratoriterator = new LUT\Recursive\Iterator(
108  $iterator,
109  LUT\Recursive\Iterator::SELF_FIRST
110  )
111  )
112  ->when($result = iterator_to_array($iteratoriterator, false))
113  ->then
114  ->array($result)
115  ->isEqualTo([
116  ['b', 'c', 'd'],
117  'b',
118  'c',
119  'd',
120  ['f', 'g', 'i'],
121  'f',
122  'g',
123  'i'
124  ]);
125  }
126 
127  public function case_recursive_child_first()
128  {
129  $this
130  ->given(
131  $array = [
132  'a' => ['b', 'c', 'd'],
133  'e' => ['f', 'g', 'i']
134  ],
135  $iterator = new LUT\Recursive\Map($array),
136  $iteratoriterator = new LUT\Recursive\Iterator(
137  $iterator,
138  LUT\Recursive\Iterator::CHILD_FIRST
139  )
140  )
141  ->when($result = iterator_to_array($iteratoriterator, false))
142  ->then
143  ->array($result)
144  ->isEqualTo([
145  'b',
146  'c',
147  'd',
148  ['b', 'c', 'd'],
149  'f',
150  'g',
151  'i',
152  ['f', 'g', 'i']
153  ]);
154  }
155 }