assertSame(substr_count($html, 'parseCalendarHtml($cal);
93 |
94 | $expected = [
95 | [
96 | [ 'class' => '', 'text' => 'Sun', ],
97 | [ 'class' => '', 'text' => 'Mon', ],
98 | [ 'class' => '', 'text' => 'Tue', ],
99 | [ 'class' => '', 'text' => 'Wed', ],
100 | [ 'class' => '', 'text' => 'Thu', ],
101 | [ 'class' => '', 'text' => 'Fri', ],
102 | [ 'class' => '', 'text' => 'Sat', ],
103 | ],
104 |
105 | [
106 | [ 'class' => 'SCprefix', 'text' => ' ', ],
107 | [ 'class' => 'SCprefix', 'text' => ' ', ],
108 | [ 'class' => 'SCprefix', 'text' => ' ', ],
109 | [ 'class' => '', 'text' => '1', 'date' => '2016-06-01', ],
110 | [ 'class' => '', 'text' => '2', 'date' => '2016-06-02', ],
111 | [ 'class' => '', 'text' => '3', 'date' => '2016-06-03', ],
112 | [ 'class' => '', 'text' => '4', 'date' => '2016-06-04', ],
113 | ],
114 |
115 | [
116 | [ 'class' => '', 'text' => '5', 'date' => '2016-06-05', ],
117 | [ 'class' => '', 'text' => '6', 'date' => '2016-06-06', ],
118 | [ 'class' => '', 'text' => '7', 'date' => '2016-06-07', ],
119 | [ 'class' => '', 'text' => '8', 'date' => '2016-06-08', ],
120 | [ 'class' => '', 'text' => '9', 'date' => '2016-06-09', ],
121 | [ 'class' => '', 'text' => '10', 'date' => '2016-06-10', ],
122 | [ 'class' => '', 'text' => '11', 'date' => '2016-06-11', ],
123 | ],
124 |
125 | [
126 | [ 'class' => '', 'text' => '12', 'date' => '2016-06-12', ],
127 | [ 'class' => '', 'text' => '13', 'date' => '2016-06-13', ],
128 | [ 'class' => '', 'text' => '14', 'date' => '2016-06-14', ],
129 | [ 'class' => '', 'text' => '15', 'date' => '2016-06-15', ],
130 | [ 'class' => '', 'text' => '16', 'date' => '2016-06-16', ],
131 | [ 'class' => '', 'text' => '17', 'date' => '2016-06-17', ],
132 | [ 'class' => '', 'text' => '18', 'date' => '2016-06-18', ],
133 | ],
134 |
135 | [
136 | [ 'class' => '', 'text' => '19', 'date' => '2016-06-19', ],
137 | [ 'class' => '', 'text' => '20', 'date' => '2016-06-20', ],
138 | [ 'class' => '', 'text' => '21', 'date' => '2016-06-21', ],
139 | [ 'class' => '', 'text' => '22', 'date' => '2016-06-22', ],
140 | [ 'class' => '', 'text' => '23', 'date' => '2016-06-23', ],
141 | [ 'class' => '', 'text' => '24', 'date' => '2016-06-24', ],
142 | [ 'class' => '', 'text' => '25', 'date' => '2016-06-25', ],
143 | ],
144 |
145 | [
146 | [ 'class' => '', 'text' => '26', 'date' => '2016-06-26', ],
147 | [ 'class' => '', 'text' => '27', 'date' => '2016-06-27', ],
148 | [ 'class' => '', 'text' => '28', 'date' => '2016-06-28', ],
149 | [ 'class' => '', 'text' => '29', 'date' => '2016-06-29', ],
150 | [ 'class' => '', 'text' => '30', 'date' => '2016-06-30', ],
151 | [ 'class' => 'SCsuffix', 'text' => ' ', ],
152 | [ 'class' => 'SCsuffix', 'text' => ' ', ],
153 | ],
154 | ];
155 |
156 | $this->assertSame($expected, $tableArray);
157 | }
158 |
159 | public function testGenericGeneration_mTs() : void {
160 | $cal = new SimpleCalendar("June 5 2016");
161 | $cal->setStartOfWeek(5);
162 |
163 | $tableArray = $this->parseCalendarHtml($cal);
164 |
165 | $expected = [
166 | [
167 | [ 'class' => '', 'text' => 'Fri', ],
168 | [ 'class' => '', 'text' => 'Sat', ],
169 | [ 'class' => '', 'text' => 'Sun', ],
170 | [ 'class' => '', 'text' => 'Mon', ],
171 | [ 'class' => '', 'text' => 'Tue', ],
172 | [ 'class' => '', 'text' => 'Wed', ],
173 | [ 'class' => '', 'text' => 'Thu', ],
174 | ],
175 | [
176 | [ 'class' => 'SCprefix', 'text' => ' ', ],
177 | [ 'class' => 'SCprefix', 'text' => ' ', ],
178 | [ 'class' => 'SCprefix', 'text' => ' ', ],
179 | [ 'class' => 'SCprefix', 'text' => ' ', ],
180 | [ 'class' => 'SCprefix', 'text' => ' ', ],
181 | [ 'class' => '', 'text' => '1', 'date' => '2016-06-01', ],
182 | [ 'class' => '', 'text' => '2', 'date' => '2016-06-02', ],
183 | ],
184 | [
185 | [ 'class' => '', 'text' => '3', 'date' => '2016-06-03', ],
186 | [ 'class' => '', 'text' => '4', 'date' => '2016-06-04', ],
187 | [ 'class' => '', 'text' => '5', 'date' => '2016-06-05', ],
188 | [ 'class' => '', 'text' => '6', 'date' => '2016-06-06', ],
189 | [ 'class' => '', 'text' => '7', 'date' => '2016-06-07', ],
190 | [ 'class' => '', 'text' => '8', 'date' => '2016-06-08', ],
191 | [ 'class' => '', 'text' => '9', 'date' => '2016-06-09', ],
192 | ],
193 | [
194 | [ 'class' => '', 'text' => '10', 'date' => '2016-06-10', ],
195 | [ 'class' => '', 'text' => '11', 'date' => '2016-06-11', ],
196 | [ 'class' => '', 'text' => '12', 'date' => '2016-06-12', ],
197 | [ 'class' => '', 'text' => '13', 'date' => '2016-06-13', ],
198 | [ 'class' => '', 'text' => '14', 'date' => '2016-06-14', ],
199 | [ 'class' => '', 'text' => '15', 'date' => '2016-06-15', ],
200 | [ 'class' => '', 'text' => '16', 'date' => '2016-06-16', ],
201 | ],
202 | [
203 | [ 'class' => '', 'text' => '17', 'date' => '2016-06-17', ],
204 | [ 'class' => '', 'text' => '18', 'date' => '2016-06-18', ],
205 | [ 'class' => '', 'text' => '19', 'date' => '2016-06-19', ],
206 | [ 'class' => '', 'text' => '20', 'date' => '2016-06-20', ],
207 | [ 'class' => '', 'text' => '21', 'date' => '2016-06-21', ],
208 | [ 'class' => '', 'text' => '22', 'date' => '2016-06-22', ],
209 | [ 'class' => '', 'text' => '23', 'date' => '2016-06-23', ],
210 | ],
211 | [
212 | [ 'class' => '', 'text' => '24', 'date' => '2016-06-24', ],
213 | [ 'class' => '', 'text' => '25', 'date' => '2016-06-25', ],
214 | [ 'class' => '', 'text' => '26', 'date' => '2016-06-26', ],
215 | [ 'class' => '', 'text' => '27', 'date' => '2016-06-27', ],
216 | [ 'class' => '', 'text' => '28', 'date' => '2016-06-28', ],
217 | [ 'class' => '', 'text' => '29', 'date' => '2016-06-29', ],
218 | [ 'class' => '', 'text' => '30', 'date' => '2016-06-30', ],
219 | ],
220 | ];
221 |
222 | $this->assertSame($expected, $tableArray);
223 | }
224 |
225 | /**
226 | * @return array>>
227 | */
228 | private function parseCalendarHtml( SimpleCalendar $cal ) : array {
229 | $x = new DOMDocument;
230 | @$x->loadHTML($cal->show(false));
231 |
232 | $trs = $x->getElementsByTagName('tr');
233 | $tableArray = [];
234 | $rowi = 0;
235 | foreach( $trs as $tr ) {
236 | /**
237 | * @var \DOMElement $tr
238 | */
239 | $this->assertEquals(7, $tr->childNodes->length);
240 |
241 | $rowArray = [];
242 | foreach( $tr->childNodes as $childNode ) {
243 | /**
244 | * @var \DOMElement $childNode
245 | */
246 | $class = $childNode->getAttribute("class");
247 | $rowItem = [
248 | 'class' => $class,
249 | 'text' => $childNode->textContent,
250 | ];
251 |
252 | if( $rowi == 0 ) {
253 | $this->assertSame('th', $childNode->tagName);
254 | } else {
255 | $this->assertSame('td', $childNode->tagName);
256 |
257 | $time = $childNode->getElementsByTagName('time');
258 |
259 | if( $class === 'SCprefix' || $class === 'SCsuffix' ) {
260 | $this->assertSame(0, $time->length);
261 | } else {
262 | $this->assertGreaterThan(0, $time->length);
263 | $item = $time->item(0);
264 | assert($item instanceof DOMElement);
265 | $rowItem['date'] = $item->getAttribute('datetime');
266 | }
267 | }
268 |
269 | $rowArray[] = $rowItem;
270 | }
271 |
272 | $tableArray[] = $rowArray;
273 |
274 | $rowi++;
275 | }
276 |
277 | return $tableArray;
278 | }
279 |
280 | }
281 |
--------------------------------------------------------------------------------
|