File: ParseChromiumBookmarksTest.php

package info (click to toggle)
php-netscape-bookmark-parser 4.0.0-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 636 kB
  • sloc: php: 3,592; makefile: 49; sh: 3
file content (349 lines) | stat: -rw-r--r-- 31,559 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
<?php

declare(strict_types=1);

namespace Shaarli\NetscapeBookmarkParser\Tests\Unit\Encoder;

use PHPUnit\Framework\TestCase;
use Shaarli\NetscapeBookmarkParser\Encoder\NetscapeBookmarkDecoder;

/**
 * Ensure Chromium exports are properly parsed.
 *
 * The reference data has been dumped with Chromium 51.0.2704.84
 */
class ParseChromiumBookmarksTest extends TestCase
{
    public const FIXTURE_DIRECTORY = __DIR__ . '/../../Fixtures/Encoder/';

    // https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-parts-of-a-file
    // phpcs:disable Generic.Files.LineLength
    public const EXPECTED_1 = [
        [
            'name'        => 'Cozy - Simple, versatile, yours',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeElEQVQ4jX1TW0hUURRd+8yZuaPOdQxNiSiipAdjICISNhBFVIIRiBoYRP9BSSBFBXPnoyj666O+AoOEmMmpNBUKHSQRiTCDKYqeX6KBzuOa4zzu2X3M+NbW1zn77LX3WntzgI1gsFh1Z6Z1sTzkuggzgUgBAB4nSt1SqThRFADn33jzAvmEPU/jDXA6L1E6tUMxVFn3wg9rIen/TTSxtgitIAsQqf2BeBsT34bNfnlfeeFQZDIqSMhWCe7IZLjt51f3eM5mXiUAoIVtee/yYCgeORCarVrrbG9g5mxVKBbeYE5MAFD9PFpS22c+rHkZ688lhJftBXIN6nvjX04MzXVUPpkpXrQsAOL6vsQFTWLEoWkuAXULzAQML0tsJQsA0hbfTMBRXVpMo95XsRYQMR0eiDaRwh3Fsmm0UY9sspVVkz/UG6uRQnURc7vUiK6RxMXBk3oEYZYY9qvKunP27++6MjAMBSL2BNjx6TOyeb4YO03jx15Hr5OiG9QwGP0l55Oe3sZtSfj9BMNQx9/Mep02WafY6ibBuhDijFOlHwWPlk8BTDD85K1td+savxd2sJovcBW0BIMCPh8DTFn5cYyt9IAg4UGWt3Mi2xkcfvBnkWz4fCgpyBZKwRlqHoq+gA0Tz45sMdb5/w+aw7P3FKOC2t7GdrNl9ZBAyGXZ7yfT88lpAG6HoFSCCADcu8rU9NQ0KgDAVVRkqcwVZpxKWdxIAHB+ZHKnUtpdaYOHhC3DSoFZ5UZPAEGAAGYiAitpKf4gNefVzjrXFK1cU0P/t+KS8gqHjjmYJqDrLphmTrKuAyaAvwupVI93q7m04qXDJt91QzCLRfI/LI8pZq5PEwYAAAAASUVORK5CYII=',
            'url'         => 'https://cozy.io/en/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009029,
            'public'      => null,
        ],
        [
            'name'        => 'Framasoft ~ Page portail du réseau',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABqklEQVQ4jaWTz0vTYRzHX+/vKnOpEHWpCApslwaVs0GHIpDIykNdkoRunrQoO4TtD7CuHbY/oCCY0C3rpAQdCnQRhhUlEYqyGKMi5MsyeXvYRmv5DaL36YH383k9nx/PRzRpuH8sYWvAJiWRArApSBQkP8jmM+8b7+vX0Rruv33N1hjQ2gyuKZScyeZv3QW5AWANXbzzCDgbEdisx7nx0T6QY9W0W66Dru7r3MXJM91s39HB8mIJ21GAA+nks6/Tc5MvVKv5VT1tSVweOsfuvTt5eG+KD28WoiCh5MOBrYHGmm1zPzdBpbLK4I3zbGnZHAVotXUpsKudbpRtnk/N0tYep/fCschG2HQH9VE16/XLeWw42NUZCZBIBVHmyveQtZ9rtHfEIwEAgU0hyix9/kJ821baIiA2hUCKBjx9MkNsU4zjp45s6EvMxNLJnmXQIPBHuxc+FsFw4nQX5dI3ikvlRjuUfCU2PTdZTid7VkC9G70y/3aRd7OfOHQ0wf7EHopLZX5UVpF8M5vPTPz3V65NQc6Nj/ZJHgHCvwSGkkfqwfDbNlb1r+u8Dmi/rn7y/d+2AAAAAElFTkSuQmCC',
            'url'         => 'https://framasoft.org/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009059,
            'public'      => null,
        ],
        [
            'name'        => 'The Linux Kernel Archives',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdUlEQVQ4jZVSTUhUURg9975nb35y/JnxJ5tkMlMzEhmjv0VYGhkiLmJESqNFqyJaFLUSxlWtQiSCCIu20WKgCFxJYomGxGAJzaQVmYJkRfnm571779fCGVMyo7P5Fvec7/vOdy6wMep0XT8cDof5P3hrwDL1MgDTYRgpn6/oKQDP/zTRysu3TTpzfRRs2J/2+7cSgLPZt9VE/Q8pgYGBt7Z18N3+BLl9VTQyHpcDd28HiIgzxrBhA+oFY4Daqd//eaElgblZYkNz+ZphbC5FL1sesQrrHCcMADKl1erR1x6m57fzXXtPksvtOsHCyAWgNvLOAcDr9XaPjkXl/OdZYUmihcUfts/nJQB9GR5bV01EHEBZY2PjAimppFIimTApHo/J011dAoAE0PS37TmFwT0eR8/g4CAREdm2rYQQSgihhoef2YWFBaTr2lBGvHYLopAGIG97ZXBaCEulUilhmglFRJKIaMlMq5rqagUgCaA6ayWbAmfsobp6igXdxaLCEjlgZPJ0Og2Xy8lBBJGIwZKA0+HGji2mMTmD34lSGHz+CVrVy9IJigfo0cA58eHTF2VZaWlZFllCKPPVUdlSB/vBjSJJ0ZLOrA4AMH0Necnxku/0Jkg0ddAevQd1q/+6pAzMFMlYpEbSWK6gqT1Eb4Pv0hP+upVLRh0wOIQLLgFA6gcOVbDQvkk+8nwMkUgE3R3t/NviR47SWg3QkRSWYFqOYyXPUAibLh3BeYOz5oJCd31xEcoij5dmztzUhgFpAfC96NOOByrdzth7+07XxWTPLPB1va9gVABV/R1o66x3BJbTCfOGhjbXlWY09x5DU3Zo1v8v0xEfb77i9asAAAAASUVORK5CYII=',
            'url'         => 'https://www.kernel.org/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009167,
            'public'      => null,
        ],
        [
            'name'        => 'Regex Crossword',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB2UlEQVQ4jYWTz2uScRzHXz5uQfp46i6uQ4QhQf4DgzpFPVtKlxmNrkG2npOSY1rgcX/ARoeCdliroHaJLYg8RoeQIDoEQqvUkqRNI/V5dzAft/mjL3zh++HL683788vzfI71Cye4jIeB87sNjsA3OfiHYPMjjzzKomFwowWL70+DMUHu5FvMI8NFjHFwemWbzOoWSx+i7P4ZIuABYxR8Y/kppmni8/m4ufxkpIhxGL724hjplW1CoSm+ff3Czs5ngsEgmdUtUu8iAyLGfth6COtvfpDP5/lerTI7e4kZa4ZKpUy73eLO/VeDTpRDexl0dgp1y4JM09SthQU3zmaX1Gg0JEmlUkl2PKpft5FyiObiQThgmioUCnIcR+lUSrZty3Ec1et1VStlNZtN1Wo12fGo9jLI6FXTdSThdDq9LrmnWCxy0bKo138iCfSv+24Kx/su/H6/riQSbpxMJhUIBAToVDgsO3ZGu70UlOs+Dov0biQSUaVcVjqVEqDpEC6sHPIo13faaIG1Bi8/uXPCxuMNYrE4tVqN6+fD3DtXxr9vKif299Q3Cc/m+iIC5q/O4/V6ef3g7gAMcMDBKCfTIdhMMAB3BcYsk7UGHWc0jMDzv3WW4OiYdf4LzLYa1HClursAAAAASUVORK5CYII=',
            'url'         => 'https://regexcrossword.com/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009412,
            'public'      => null,
        ],
        [
            'name'        => 'WINDOWS93',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVQ4jaVTMRLAIAwKnt/q6/swOlTbFJPqnSw6ACExmm0CizxmupmBCocAaKTI6BGfYnM4dgkEVLEXHPgaFqk+izwARtKAtAWN75P0BI1OPme/L6B8qidCnYFHpZEwIGgjHKS2VF/2bUS7U0BeNptFhb2Vu/ivBTVbWqQ/VHfvRpEwnc9siXb/yhwXQHI8D4Tvv90AAAAASUVORK5CYII=',
            'url'         => 'http://www.windows93.net/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009435,
            'public'      => null,
        ],
        [
            'name'        => 'Are there any worse sorting algorithms than Bogosort (a.k.a Monkey Sort)? - Stack Overflow',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABXklEQVQ4jbWQsUsCYRjGn/fuSu/Sk3ALmlzNtoagKRqSaHMKGkKhEOV0KWispSXPQaglAnNobOgfaCyIcgicmxO9zFPv/N5WwTs5gt7x+5739/2eDwgw/bK67HcnBQG4Ag3L0LJ/BoBFDuDzTiGUCAywDC3bNbRtANCrwxaBziRZanAGcjADwR8AX1uGesEZyFGzXwO43VsKn07GaJa5lY/GMefUAYooEvaELDnCEW9M2I1V7GdPg04hlLAM7dYqqut67ftLNwdpMB5dgRfXdVMgHIFpx9egfbwYk0eDA2LKAWJMkK6cUOhOGdkpZmoQiy29OmwFq1AKb5CgQyakAXqQJKpELn/eJzPK1JKhPhHjk4EmMzUVmU/coVLkeXff672pk155YXUsxikCJQFeYVCSgCiAV920N311b+r37FslH413S+qaV86rggfIBbG38RRAN+2ZHzsTMKvGv80vvziHGAusG84AAAAASUVORK5CYII=',
            'url'         => 'http://stackoverflow.com/questions/2609857/are-there-any-worse-sorting-algorithms-than-bogosort-a-k-a-monkey-sort',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009639,
            'public'      => null,
        ],
        [
            'name'        => 'GitHub - lhartikk/ArnoldC: Arnold Schwarzenegger based programming language',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJElEQVQ4jY1TMWsUQRT+5r3d3Cbe7t3u3hEDdoJgIVieGo1YBixsBIsUtvkHNpaCnaJFUMEihSlEbGxFE8XCRrDWIAqJyd3t3JGcuduZeRa5DUtAk6968/i+733zhlE4hHq9foWZbwG4pkRmAECU2gDw1lr7Qmu9WuarUs2NOH7Onrdw2LQMa8xyO8tuA7BlA07TdM0juvA/cQHj3KdOp3MZgGUAaMTxssc8nxuzOsrzm90s2yDmU6TUtoh0BKhut9t3Rnl+1/O8Mz7z7GSlcnqwt/cKURS1pptNmW42JUmSpfGQKoCp0tBqkTZJkqWCH0VRiyaYFw/uZ+2zcbkDYFAy2AEgAOCcWymaE8yLBOZZALDOjQB0jrGCdevccH9zPEsYPxWU2uz1eutHqbXWP6DUbwCAyAwV0QDUANAxEhBE6uNaSICfAMBK1dI0vX6UOo7jeSaKsD/5F5FSa04EW+22dca8jMPw0r/ESRheZKKnxVlE3lFuzOPRMIeIWN3v93u7ux+IaBBFUasgBkFwlYi2/SD4yEQnSwaPSGv9xa/4T6abzYm6789Vq9WFMAw/K6W2CmKlUtmJoqhRTmNFHmRZ9vXgLyRx/J6IzlnnzotIX2utS/ywkaabTDQFANaY1+0su7G/0TG6WTYHpVaY6LvH/A3ATMngRCE2xtwrxADA5ViDweDNZBDsQamG7/vLw+HwDwDUajVfiZx1wMNOt3u/rPkLJe7aBdfH1TYAAAAASUVORK5CYII=',
            'url'         => 'https://github.com/lhartikk/ArnoldC',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009667,
            'public'      => null,
        ],
        [
            'name'        => 'OpenClassrooms, MOOCs and courses open for all',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADBElEQVQ4jb2TW0hTcRzHf/9zNp27uM3tzM2ZObwMybA0MrWbiTUkwojCLH0wsaRQyUBIi5GSLwlmD2VQT0FREIZd6AKtpUXiCou8K5o5dbo2j+64c87O+feU2INPQZ+378vn4cv3C/CPoLXhvT49AyFU9UYxVp1GKeKzY+U1WCRbjE8Gv60nkAAAXDJTxwgCdwGLQzwm62DCT1sSohgMIEjJkI+5dTAryPCS8WsLrm1uF7NWQNopSoklqBAL2F3UnLKYdN8xtdNs6Ohf4ETb48JnygKrwI94rwRnhAJPD3MzTS0xZWsiFt7SgWkAANLBMJyTDjiet+wrEQUcuvp0ZHS3ShEccnvuH63Z4RQxKJpKX1KiPvztnjuZ2uQEBVaEo+0b5nmNk2Y+SwLtBXflLK5kQFz82D1b1hBLEWczI0cIrO6m7w2c7L/hj9cZlMlRSRoNgTAdgQQ2QiRCSjGs6ENWgkNCEGQjqupkAaC9wUwdRIDipATRJ4j4y+TjHwAh5X5bivXcxjwDz73/0RrsmUpQD4p0DmfMtRgCtQgAYO5I4mUSiIe6zcXDy9Ef9KrKV556s/48AnRxaHo++hGAAABwFIC80ZL/Qp1K8dIUKqdp14N+EgCg1qqXC4AXyXSuEBHEO/t12wuVl9HoKbm//vtc55/G+wFwGTJlBoeXRDTh9pkStV6iW7N141iXsm3SqQIgiWdkYlRrkGbrjCbFhpzdMZbeigz1H4HHvlfJ0SEzP8spuK+eOMogl6wOyR4TIw8hviGvelPbm9aBTITEjvTtOusBW+IDfsBzgQ9yojw9tlmWHy9lfrJ032FX7utwd+OqALdnSF86QsldTvdxDNBXXpGaq6dk8yvOyTxVadoUS4N0sH7UOJkhzEabZNyWmEjt84fjJcTqpk+7+APWwwOAcQ8AkimxwHATfvMvf5Cj51gh4MXCIs1yvjGfsDyztBKmJRuLXcMLf31hLXOHLNEskpTf7vWf2MWbZngkRH6SzstPndl0R6eT3lNVvvKs+7D/ym//plTn6CKKEQAAAABJRU5ErkJggg==',
            'url'         => 'https://openclassrooms.com/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466010140,
            'public'      => null,
        ],
        [
            'name'        => 'Timeline of the Elves in Tolkien’s works | LotrProject Blog',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVQ4jaWT0Q3DIAxE3zkdLKNVXaULdAQGCzgfQJqUJg3NSXwg+Y5nWwhwAEm4O71SDfhXJumK/zeBCZLnwqq1YQmo/X8jShuzYRJyARN2FtXKGcpjL6Y+gvqSDGICaUAeuZ0lWFpIhiSerj6CdTNSykN1zhM8yh7uGPg7snsGn2oIQgib+ziOh2QNQVMgEcnrOwzYkwnc94uuf6YrZoAZgvY+bSu6dgkAAAAASUVORK5CYII=',
            'url'         => 'http://lotrproject.com/blog/2013/02/08/timeline-of-the-elves-in-tolkiens-works/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466010205,
            'public'      => null,
        ],
    ];

    public const EXPECTED_2 = [
        [
            'name'        => 'jabber.org - the original XMPP instant messaging service',
            'image'       => null,
            'url'         => 'http://www.jabber.org/',
            'tags'        => [
                'personal',
                'toolbar',
            ],
            'description' => null,
            'dateCreated' => 1466010266,
            'public'      => null,
        ],
        [
            'name'        => 'Regex Crossword',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAB2UlEQVQ4jYWTz2uScRzHXz5uQfp46i6uQ4QhQf4DgzpFPVtKlxmNrkG2npOSY1rgcX/ARoeCdliroHaJLYg8RoeQIDoEQqvUkqRNI/V5dzAft/mjL3zh++HL683788vzfI71Cye4jIeB87sNjsA3OfiHYPMjjzzKomFwowWL70+DMUHu5FvMI8NFjHFwemWbzOoWSx+i7P4ZIuABYxR8Y/kppmni8/m4ufxkpIhxGL724hjplW1CoSm+ff3Czs5ngsEgmdUtUu8iAyLGfth6COtvfpDP5/lerTI7e4kZa4ZKpUy73eLO/VeDTpRDexl0dgp1y4JM09SthQU3zmaX1Gg0JEmlUkl2PKpft5FyiObiQThgmioUCnIcR+lUSrZty3Ec1et1VStlNZtN1Wo12fGo9jLI6FXTdSThdDq9LrmnWCxy0bKo138iCfSv+24Kx/su/H6/riQSbpxMJhUIBAToVDgsO3ZGu70UlOs+Dov0biQSUaVcVjqVEqDpEC6sHPIo13faaIG1Bi8/uXPCxuMNYrE4tVqN6+fD3DtXxr9vKif299Q3Cc/m+iIC5q/O4/V6ef3g7gAMcMDBKCfTIdhMMAB3BcYsk7UGHWc0jMDzv3WW4OiYdf4LzLYa1HClursAAAAASUVORK5CYII=',
            'url'         => 'https://regexcrossword.com/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009412,
            'public'      => null,
        ],
        [
            'name'        => 'WINDOWS93',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAjElEQVQ4jaVTMRLAIAwKnt/q6/swOlTbFJPqnSw6ACExmm0CizxmupmBCocAaKTI6BGfYnM4dgkEVLEXHPgaFqk+izwARtKAtAWN75P0BI1OPme/L6B8qidCnYFHpZEwIGgjHKS2VF/2bUS7U0BeNptFhb2Vu/ivBTVbWqQ/VHfvRpEwnc9siXb/yhwXQHI8D4Tvv90AAAAASUVORK5CYII=',
            'url'         => 'http://www.windows93.net/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466009435,
            'public'      => null,
        ],
        [
            'name'        => 'Timeline of the Elves in Tolkien’s works | LotrProject Blog',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAoUlEQVQ4jaWT0Q3DIAxE3zkdLKNVXaULdAQGCzgfQJqUJg3NSXwg+Y5nWwhwAEm4O71SDfhXJumK/zeBCZLnwqq1YQmo/X8jShuzYRJyARN2FtXKGcpjL6Y+gvqSDGICaUAeuZ0lWFpIhiSerj6CdTNSykN1zhM8yh7uGPg7snsGn2oIQgib+ziOh2QNQVMgEcnrOwzYkwnc94uuf6YrZoAZgvY+bSu6dgkAAAAASUVORK5CYII=',
            'url'         => 'http://lotrproject.com/blog/2013/02/08/timeline-of-the-elves-in-tolkiens-works/',
            'tags'        => [],
            'description' => null,
            'dateCreated' => 1466010205,
            'public'      => null,
        ],
        [
            'name'        => 'PHP Standards Recommendations - PHP-FIG',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACK0lEQVQ4jX2SO0+UURCGn/d8u8viekEEYhRlV2Ik+bg01saYqGCtNiKVFjQ2/gFjQWtiAz9AbSAxohEsVBJbCyNs4iVBwGAiYITCvbD7nbHYZXUFnGaSeeeZk5n3iF1iz7FTR1B8GgAr9ee+fvy2U5/qoI6eS4YNm9ka0mlJ3QBmNofZW0ktQqO5xdnnOww4G0um12blXBdmldJWlmrZvP9QWGjpgZkyQABAGCYaUvkbTrqGmdttreqMpqAptxIdbX3P6mok2sPmZMADSReBnWEJzFaBPNJxzLyZvShEDLqkLJTcwH9hzw8jdtXLXcDbFyQnuYGkLHSy+Dxmy3/OobqdMX56uF5YeDdj5VK8ognMlmXxeRcF0X5EosIrb97uYH4S58DY8MZgcXF2am9nb3cQCx4jMuBBJKIg2h8kmltfgctUhvqXhaXszXLzvqm4xdqjSCObS7PPUpmwz3ueIHXWnEEpJzujZDr8JLmTVaFoxt3C4tzI1glSmbDPm6u8XIOrlpr/HMSaDj0F1ycpA8QkzsUOtJXKGytvEumeLsEk0ontsL2G+GUBNKTDfoebglqTx7iH7DxyvXVw9dAeP1BcyE7HABS5HEHNbwCH021MbIMrzlQYqj+x3Hh4LYj7Rkkp4OBWfYfYRMp6/KNi0T3k1/eS6vUrQWNHdhgX3MesXpMMH93KL4ajMB5tlf/5feNRPtM2htkEaN08Q+YZAtYxm8hn2sb+hgF+A8fT7/CxquCOAAAAAElFTkSuQmCC',
            'url'         => 'http://www.php-fig.org/psr/',
            'tags'        => [
                'dev',
                'php',
            ],
            'description' => null,
            'dateCreated' => 1466013084,
            'public'      => null,
        ],
        [
            'name'        => 'php - Best practices to test protected methods with PHPUnit - Stack Overflow',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABXklEQVQ4jbWQsUsCYRjGn/fuSu/Sk3ALmlzNtoagKRqSaHMKGkKhEOV0KWispSXPQaglAnNobOgfaCyIcgicmxO9zFPv/N5WwTs5gt7x+5739/2eDwgw/bK67HcnBQG4Ag3L0LJ/BoBFDuDzTiGUCAywDC3bNbRtANCrwxaBziRZanAGcjADwR8AX1uGesEZyFGzXwO43VsKn07GaJa5lY/GMefUAYooEvaELDnCEW9M2I1V7GdPg04hlLAM7dYqqut67ftLNwdpMB5dgRfXdVMgHIFpx9egfbwYk0eDA2LKAWJMkK6cUOhOGdkpZmoQiy29OmwFq1AKb5CgQyakAXqQJKpELn/eJzPK1JKhPhHjk4EmMzUVmU/coVLkeXff672pk155YXUsxikCJQFeYVCSgCiAV920N311b+r37FslH413S+qaV86rggfIBbG38RRAN+2ZHzsTMKvGv80vvziHGAusG84AAAAASUVORK5CYII=',
            'url'         => 'http://stackoverflow.com/questions/249664/best-practices-to-test-protected-methods-with-phpunit/2798203#2798203',
            'tags'        => [
                'dev',
                'php',
            ],
            'description' => null,
            'dateCreated' => 1466013093,
            'public'      => null,
        ],
        [
            'name'        => 'Welcome :: CheckiO',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACRElEQVQ4jZ2Tz0tUURiGn3PO3Bnn6kjTkGREIYESYSBBZJvAoiIdbNFEmwiEDPoPBInZhAlBRfRjmZsWSosIAimC0CDCRW0iyHRRUDE249yZO869c889LcZM0xL6duc93/t+B87zwf9WNisBsUoxYlnczLlJjzECjFinZzJqzfnC9QOMPt3JSvODmV4evkv/HmTqT1xnHDnOmeFHjDzO8+TTqbrZILj/+jmpRA9W5DYLn69y8dj3FVM6a9MoT2NFBvH9I+zaDYe7a2D66gE3pztQcoZEg6JlaxytZ4nGhpgYm6LCOZQYQEb2UwugualEz1GJEjY1fTICgBQnsBNN1LwyruvilNqYnx3DDYqoaCuhAd81xO0lursllmok0BohRD0gGutFoikUazj5CrlcgrKr2NaaQusSoVZ4XkBXlya5JYnnGYQEDBGuveykkDvE4kKV/IJNyw6LPXttQm0whJgwjhCGsuOhjcJ1KzQ0xAm0wBgj+TGXY/7jJBW3EaViOAVJdclHa0VQs4AI1WoVr9JEqZxg/ktIwXGQ0qCk+vXfkst3riDkMEFN0dZeJJlqRmuBDso4i2BCGyElVgzCEJrjeban+gV1HA0Al271A/dIplpp6/AJAo1TiGBFLcIQfK+IEG8w5gXe0jM+TLxdRVxWQjZkYLSDeOIu7Z09+FWfauUbSr0i1JMoNcVQ39xqrv5AdjkkPWhzsO88Sn4lV5nmxtn8WqzHFfveG7LZcB3yG+4BRpAZVxvf/a0y42plH/5RPwGlE+0Z56LIlQAAAABJRU5ErkJggg==',
            'url'         => 'https://checkio.org/',
            'tags'        => [
                'dev',
                'python',
            ],
            'description' => null,
            'dateCreated' => 1466011820,
            'public'      => null,
        ],
        [
            'name'        => 'Welcome to the tox automation project — tox 2.3.2 documentation',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACT0lEQVQ4jWWTO2uUQRSGnzMzuzubZONGlKitEASjFoqCaOcFG8VbtBYL/4J4RxFBBBtBUAQrRa1sRLQVRVG8JCksLDWJScyyi9lkZ+ZY7H7fJniquTG8z3vOK/sOn9QYAiG0AKFdinMFjHU0GnWSKlmJCKqKL5Xw3uNCCKwaXMPqwXXEGAGw1jI18ZPa7G9Gjh6hVCqSkiICIUR8qcTX0TFGx8dxIbRYNbiWTVt30KjXAejrr/D5/Vvqf6Y5cewIzlpCDIgYnLOsXNHHvYeP+PDpE04QUkw06nVeP38CwJ5DI6QYEREmp6a4duMmc7UalUqFqxfPYYyh2ZzHGIPJ2IzJl8vW1trcl2xvrc3fOARUE8459hw83j50DlUlpYT3nju3b5FiBBEWFhZIMeWGO7TtbEqJH9/HARjauAURQUQIIfDi5Sv+zs/jSyV279qJGMkVdT4wxBj58v4NAOs3DCMiGGNYXFzk7v0HzMzOUK0OsGP7to58XY5grWXztp05Z4ZQLBY5c/pUrqBYLJLSUgQBVcUYw9DwltxEVUVVcc5xYP/eZR5o0v89UFUWmk0Ayj09iIA1lmazydkLl5mrzVGp9HP9ykUGBqrLEbIRzVojko10t5XW2CUt7ZYDct42G6SUUIXUae/VS+eJISDG4Kyl1Qqk1FGgqljn8OUessj4cg/WOUCpVqtU+nqJnclsLbYYWNGL956UEs65AtOTv/j28V0nkeBcgZmpCZIKj58+o+BcHqZ2Ej3fRscoe48sjXPG3na/G2ftmp7fZ3H+BzaBF12WwHSWAAAAAElFTkSuQmCC',
            'url'         => 'https://tox.readthedocs.io/en/latest/',
            'tags'        => [
                'dev',
                'python',
            ],
            'description' => null,
            'dateCreated' => 1466012966,
            'public'      => null,
        ],
        [
            'name'        => 'Overview — Sphinx 1.4.4 documentation',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACT0lEQVQ4jWWTO2uUQRSGnzMzuzubZONGlKitEASjFoqCaOcFG8VbtBYL/4J4RxFBBBtBUAQrRa1sRLQVRVG8JCksLDWJScyyi9lkZ+ZY7H7fJniquTG8z3vOK/sOn9QYAiG0AKFdinMFjHU0GnWSKlmJCKqKL5Xw3uNCCKwaXMPqwXXEGAGw1jI18ZPa7G9Gjh6hVCqSkiICIUR8qcTX0TFGx8dxIbRYNbiWTVt30KjXAejrr/D5/Vvqf6Y5cewIzlpCDIgYnLOsXNHHvYeP+PDpE04QUkw06nVeP38CwJ5DI6QYEREmp6a4duMmc7UalUqFqxfPYYyh2ZzHGIPJ2IzJl8vW1trcl2xvrc3fOARUE8459hw83j50DlUlpYT3nju3b5FiBBEWFhZIMeWGO7TtbEqJH9/HARjauAURQUQIIfDi5Sv+zs/jSyV279qJGMkVdT4wxBj58v4NAOs3DCMiGGNYXFzk7v0HzMzOUK0OsGP7to58XY5grWXztp05Z4ZQLBY5c/pUrqBYLJLSUgQBVcUYw9DwltxEVUVVcc5xYP/eZR5o0v89UFUWmk0Ayj09iIA1lmazydkLl5mrzVGp9HP9ykUGBqrLEbIRzVojko10t5XW2CUt7ZYDct42G6SUUIXUae/VS+eJISDG4Kyl1Qqk1FGgqljn8OUessj4cg/WOUCpVqtU+nqJnclsLbYYWNGL956UEs65AtOTv/j28V0nkeBcgZmpCZIKj58+o+BcHqZ2Ej3fRscoe48sjXPG3na/G2ftmp7fZ3H+BzaBF12WwHSWAAAAAElFTkSuQmCC',
            'url'         => 'http://www.sphinx-doc.org/en/stable/',
            'tags'        => [
                'dev',
                'python',
            ],
            'description' => null,
            'dateCreated' => 1466012980,
            'public'      => null,
        ],
        [
            'name'        => 'GitHub - lhartikk/ArnoldC: Arnold Schwarzenegger based programming language',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJElEQVQ4jY1TMWsUQRT+5r3d3Cbe7t3u3hEDdoJgIVieGo1YBixsBIsUtvkHNpaCnaJFUMEihSlEbGxFE8XCRrDWIAqJyd3t3JGcuduZeRa5DUtAk6968/i+733zhlE4hHq9foWZbwG4pkRmAECU2gDw1lr7Qmu9WuarUs2NOH7Onrdw2LQMa8xyO8tuA7BlA07TdM0juvA/cQHj3KdOp3MZgGUAaMTxssc8nxuzOsrzm90s2yDmU6TUtoh0BKhut9t3Rnl+1/O8Mz7z7GSlcnqwt/cKURS1pptNmW42JUmSpfGQKoCp0tBqkTZJkqWCH0VRiyaYFw/uZ+2zcbkDYFAy2AEgAOCcWymaE8yLBOZZALDOjQB0jrGCdevccH9zPEsYPxWU2uz1eutHqbXWP6DUbwCAyAwV0QDUANAxEhBE6uNaSICfAMBK1dI0vX6UOo7jeSaKsD/5F5FSa04EW+22dca8jMPw0r/ESRheZKKnxVlE3lFuzOPRMIeIWN3v93u7ux+IaBBFUasgBkFwlYi2/SD4yEQnSwaPSGv9xa/4T6abzYm6789Vq9WFMAw/K6W2CmKlUtmJoqhRTmNFHmRZ9vXgLyRx/J6IzlnnzotIX2utS/ywkaabTDQFANaY1+0su7G/0TG6WTYHpVaY6LvH/A3ATMngRCE2xtwrxADA5ViDweDNZBDsQamG7/vLw+HwDwDUajVfiZx1wMNOt3u/rPkLJe7aBdfH1TYAAAAASUVORK5CYII=',
            'url'         => 'https://github.com/lhartikk/ArnoldC',
            'tags'        => [
                'dev',
            ],
            'description' => null,
            'dateCreated' => 1466011676,
            'public'      => null,
        ],
        [
            'name'        => 'Are there any worse sorting algorithms than Bogosort (a.k.a Monkey Sort)? - Stack Overflow',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABXklEQVQ4jbWQsUsCYRjGn/fuSu/Sk3ALmlzNtoagKRqSaHMKGkKhEOV0KWispSXPQaglAnNobOgfaCyIcgicmxO9zFPv/N5WwTs5gt7x+5739/2eDwgw/bK67HcnBQG4Ag3L0LJ/BoBFDuDzTiGUCAywDC3bNbRtANCrwxaBziRZanAGcjADwR8AX1uGesEZyFGzXwO43VsKn07GaJa5lY/GMefUAYooEvaELDnCEW9M2I1V7GdPg04hlLAM7dYqqut67ftLNwdpMB5dgRfXdVMgHIFpx9egfbwYk0eDA2LKAWJMkK6cUOhOGdkpZmoQiy29OmwFq1AKb5CgQyakAXqQJKpELn/eJzPK1JKhPhHjk4EmMzUVmU/coVLkeXff672pk155YXUsxikCJQFeYVCSgCiAV920N311b+r37FslH413S+qaV86rggfIBbG38RRAN+2ZHzsTMKvGv80vvziHGAusG84AAAAASUVORK5CYII=',
            'url'         => 'http://stackoverflow.com/questions/2609857/are-there-any-worse-sorting-algorithms-than-bogosort-a-k-a-monkey-sort',
            'tags'        => [
                'dev',
            ],
            'description' => null,
            'dateCreated' => 1466011763,
            'public'      => null,
        ],
        [
            'name'        => 'OpenClassrooms, MOOCs and courses open for all',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAADBElEQVQ4jb2TW0hTcRzHf/9zNp27uM3tzM2ZObwMybA0MrWbiTUkwojCLH0wsaRQyUBIi5GSLwlmD2VQT0FREIZd6AKtpUXiCou8K5o5dbo2j+64c87O+feU2INPQZ+378vn4cv3C/CPoLXhvT49AyFU9UYxVp1GKeKzY+U1WCRbjE8Gv60nkAAAXDJTxwgCdwGLQzwm62DCT1sSohgMIEjJkI+5dTAryPCS8WsLrm1uF7NWQNopSoklqBAL2F3UnLKYdN8xtdNs6Ohf4ETb48JnygKrwI94rwRnhAJPD3MzTS0xZWsiFt7SgWkAANLBMJyTDjiet+wrEQUcuvp0ZHS3ShEccnvuH63Z4RQxKJpKX1KiPvztnjuZ2uQEBVaEo+0b5nmNk2Y+SwLtBXflLK5kQFz82D1b1hBLEWczI0cIrO6m7w2c7L/hj9cZlMlRSRoNgTAdgQQ2QiRCSjGs6ENWgkNCEGQjqupkAaC9wUwdRIDipATRJ4j4y+TjHwAh5X5bivXcxjwDz73/0RrsmUpQD4p0DmfMtRgCtQgAYO5I4mUSiIe6zcXDy9Ef9KrKV556s/48AnRxaHo++hGAAABwFIC80ZL/Qp1K8dIUKqdp14N+EgCg1qqXC4AXyXSuEBHEO/t12wuVl9HoKbm//vtc55/G+wFwGTJlBoeXRDTh9pkStV6iW7N141iXsm3SqQIgiWdkYlRrkGbrjCbFhpzdMZbeigz1H4HHvlfJ0SEzP8spuK+eOMogl6wOyR4TIw8hviGvelPbm9aBTITEjvTtOusBW+IDfsBzgQ9yojw9tlmWHy9lfrJ032FX7utwd+OqALdnSF86QsldTvdxDNBXXpGaq6dk8yvOyTxVadoUS4N0sH7UOJkhzEabZNyWmEjt84fjJcTqpk+7+APWwwOAcQ8AkimxwHATfvMvf5Cj51gh4MXCIs1yvjGfsDyztBKmJRuLXcMLf31hLXOHLNEskpTf7vWf2MWbZngkRH6SzstPndl0R6eT3lNVvvKs+7D/ym//plTn6CKKEQAAAABJRU5ErkJggg==',
            'url'         => 'https://openclassrooms.com/',
            'tags'        => [
                'mooc',
            ],
            'description' => null,
            'dateCreated' => 1466011755,
            'public'      => null,
        ],
        [
            'name'        => 'Coursera',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACI0lEQVQ4jc2SzUtUYRTGn/O+79yZO+pM3cAyWkQELoYWFhWYi2JSITAUmhYtqm2LaiOVVHTJIE2CoEUIbdoOGIFWkIlSZtKqD9wFEVSQ5TiOo3fu13vaTM6M/gF1Vuc5P86Bc84D/D+RycoabduinBFsFrWsoqm6ftieVL4ZMRPfCt7z+8fcarb7/LPo1h27jLzz0Z2zT3o1A1L2nNEUL1wXLLoA3gnwPDO/ypWMCwZ+xxrim20wd4CwjYDvWtCYX1ztn7KPFGnf8HDEWkyNRBONXTrw4DsFmFYTnIUf07lStNMyvelovdWiAw+B50BF6yCUgVLh58RiKX9cJXOpMypW3+UVcwHr8I7WGHOWfh3wSY5Ypnct2rClxV1ecFjjBrOeZT9/lJS6FIkl0hbTaSWI9spYPAzc4vj4lbar5dXetg59aIzolXPad8Gsb77saxsqs9ftAzP7pRHrDEoraSEAsA4FQVrVn4iHxVtGXTLpl4pfQ2C0ck4mEBJgBhG71H57JiMMIwtm6MB7yqApYm6GoLPKMJXvrj4gIA3QJIBPANIkZQ8JidAPugkA2gfe3IvEExelMsBggATAgLM0/4iIP5ubtveDNXQYQEiFwHXgOct3J/oO9a75oGNw9gQJ0aPDYI9QkS8aenS89+BDANQx+O4UJHVz4DULZbzn0H/84nLrk/U+wl9PbCiusWw1W9ecyUqAqSJZ1rJyAzNtsP0/jT96ceveE5d6tQAAAABJRU5ErkJggg==',
            'url'         => 'https://www.coursera.org/',
            'tags'        => [
                'mooc',
            ],
            'description' => null,
            'dateCreated' => 1466011780,
            'public'      => null,
        ],
        [
            'name'        => 'The Linux Kernel Archives',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACdUlEQVQ4jZVSTUhUURg9975nb35y/JnxJ5tkMlMzEhmjv0VYGhkiLmJESqNFqyJaFLUSxlWtQiSCCIu20WKgCFxJYomGxGAJzaQVmYJkRfnm571779fCGVMyo7P5Fvec7/vOdy6wMep0XT8cDof5P3hrwDL1MgDTYRgpn6/oKQDP/zTRysu3TTpzfRRs2J/2+7cSgLPZt9VE/Q8pgYGBt7Z18N3+BLl9VTQyHpcDd28HiIgzxrBhA+oFY4Daqd//eaElgblZYkNz+ZphbC5FL1sesQrrHCcMADKl1erR1x6m57fzXXtPksvtOsHCyAWgNvLOAcDr9XaPjkXl/OdZYUmihcUfts/nJQB9GR5bV01EHEBZY2PjAimppFIimTApHo/J011dAoAE0PS37TmFwT0eR8/g4CAREdm2rYQQSgihhoef2YWFBaTr2lBGvHYLopAGIG97ZXBaCEulUilhmglFRJKIaMlMq5rqagUgCaA6ayWbAmfsobp6igXdxaLCEjlgZPJ0Og2Xy8lBBJGIwZKA0+HGji2mMTmD34lSGHz+CVrVy9IJigfo0cA58eHTF2VZaWlZFllCKPPVUdlSB/vBjSJJ0ZLOrA4AMH0Necnxku/0Jkg0ddAevQd1q/+6pAzMFMlYpEbSWK6gqT1Eb4Pv0hP+upVLRh0wOIQLLgFA6gcOVbDQvkk+8nwMkUgE3R3t/NviR47SWg3QkRSWYFqOYyXPUAibLh3BeYOz5oJCd31xEcoij5dmztzUhgFpAfC96NOOByrdzth7+07XxWTPLPB1va9gVABV/R1o66x3BJbTCfOGhjbXlWY09x5DU3Zo1v8v0xEfb77i9asAAAAASUVORK5CYII=',
            'url'         => 'https://www.kernel.org/',
            'tags'        => [
                'linux',
                'unix os',
                'other stuff',
            ],
            'description' => null,
            'dateCreated' => 1466011739,
            'public'      => null,
        ],
        [
            'name'        => 'Cozy - Simple, versatile, yours',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACeElEQVQ4jX1TW0hUURRd+8yZuaPOdQxNiSiipAdjICISNhBFVIIRiBoYRP9BSSBFBXPnoyj666O+AoOEmMmpNBUKHSQRiTCDKYqeX6KBzuOa4zzu2X3M+NbW1zn77LX3WntzgI1gsFh1Z6Z1sTzkuggzgUgBAB4nSt1SqThRFADn33jzAvmEPU/jDXA6L1E6tUMxVFn3wg9rIen/TTSxtgitIAsQqf2BeBsT34bNfnlfeeFQZDIqSMhWCe7IZLjt51f3eM5mXiUAoIVtee/yYCgeORCarVrrbG9g5mxVKBbeYE5MAFD9PFpS22c+rHkZ688lhJftBXIN6nvjX04MzXVUPpkpXrQsAOL6vsQFTWLEoWkuAXULzAQML0tsJQsA0hbfTMBRXVpMo95XsRYQMR0eiDaRwh3Fsmm0UY9sspVVkz/UG6uRQnURc7vUiK6RxMXBk3oEYZYY9qvKunP27++6MjAMBSL2BNjx6TOyeb4YO03jx15Hr5OiG9QwGP0l55Oe3sZtSfj9BMNQx9/Mep02WafY6ibBuhDijFOlHwWPlk8BTDD85K1td+savxd2sJovcBW0BIMCPh8DTFn5cYyt9IAg4UGWt3Mi2xkcfvBnkWz4fCgpyBZKwRlqHoq+gA0Tz45sMdb5/w+aw7P3FKOC2t7GdrNl9ZBAyGXZ7yfT88lpAG6HoFSCCADcu8rU9NQ0KgDAVVRkqcwVZpxKWdxIAHB+ZHKnUtpdaYOHhC3DSoFZ5UZPAEGAAGYiAitpKf4gNefVzjrXFK1cU0P/t+KS8gqHjjmYJqDrLphmTrKuAyaAvwupVI93q7m04qXDJt91QzCLRfI/LI8pZq5PEwYAAAAASUVORK5CYII=',
            'url'         => 'https://cozy.io/en/',
            'tags'        => [
                'self-hosting',
            ],
            'description' => null,
            'dateCreated' => 1466011652,
            'public'      => null,
        ],
        [
            'name'        => 'Framasoft ~ Page portail du réseau',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABqklEQVQ4jaWTz0vTYRzHX+/vKnOpEHWpCApslwaVs0GHIpDIykNdkoRunrQoO4TtD7CuHbY/oCCY0C3rpAQdCnQRhhUlEYqyGKMi5MsyeXvYRmv5DaL36YH383k9nx/PRzRpuH8sYWvAJiWRArApSBQkP8jmM+8b7+vX0Rruv33N1hjQ2gyuKZScyeZv3QW5AWANXbzzCDgbEdisx7nx0T6QY9W0W66Dru7r3MXJM91s39HB8mIJ21GAA+nks6/Tc5MvVKv5VT1tSVweOsfuvTt5eG+KD28WoiCh5MOBrYHGmm1zPzdBpbLK4I3zbGnZHAVotXUpsKudbpRtnk/N0tYep/fCschG2HQH9VE16/XLeWw42NUZCZBIBVHmyveQtZ9rtHfEIwEAgU0hyix9/kJ821baIiA2hUCKBjx9MkNsU4zjp45s6EvMxNLJnmXQIPBHuxc+FsFw4nQX5dI3ikvlRjuUfCU2PTdZTid7VkC9G70y/3aRd7OfOHQ0wf7EHopLZX5UVpF8M5vPTPz3V65NQc6Nj/ZJHgHCvwSGkkfqwfDbNlb1r+u8Dmi/rn7y/d+2AAAAAElFTkSuQmCC',
            'url'         => 'https://framasoft.org/',
            'tags'        => [
                'self-hosting',
            ],
            'description' => null,
            'dateCreated' => 1466011661,
            'public'      => null,
        ],
        [
            'name'        => 'GitHub - shaarli/Shaarli: The personal, minimalist, super-fast, database free, bookmarking service - community repo',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACJElEQVQ4jY1TMWsUQRT+5r3d3Cbe7t3u3hEDdoJgIVieGo1YBixsBIsUtvkHNpaCnaJFUMEihSlEbGxFE8XCRrDWIAqJyd3t3JGcuduZeRa5DUtAk6968/i+733zhlE4hHq9foWZbwG4pkRmAECU2gDw1lr7Qmu9WuarUs2NOH7Onrdw2LQMa8xyO8tuA7BlA07TdM0juvA/cQHj3KdOp3MZgGUAaMTxssc8nxuzOsrzm90s2yDmU6TUtoh0BKhut9t3Rnl+1/O8Mz7z7GSlcnqwt/cKURS1pptNmW42JUmSpfGQKoCp0tBqkTZJkqWCH0VRiyaYFw/uZ+2zcbkDYFAy2AEgAOCcWymaE8yLBOZZALDOjQB0jrGCdevccH9zPEsYPxWU2uz1eutHqbXWP6DUbwCAyAwV0QDUANAxEhBE6uNaSICfAMBK1dI0vX6UOo7jeSaKsD/5F5FSa04EW+22dca8jMPw0r/ESRheZKKnxVlE3lFuzOPRMIeIWN3v93u7ux+IaBBFUasgBkFwlYi2/SD4yEQnSwaPSGv9xa/4T6abzYm6789Vq9WFMAw/K6W2CmKlUtmJoqhRTmNFHmRZ9vXgLyRx/J6IzlnnzotIX2utS/ywkaabTDQFANaY1+0su7G/0TG6WTYHpVaY6LvH/A3ATMngRCE2xtwrxADA5ViDweDNZBDsQamG7/vLw+HwDwDUajVfiZx1wMNOt3u/rPkLJe7aBdfH1TYAAAAASUVORK5CYII=',
            'url'         => 'https://github.com/shaarli/Shaarli',
            'tags'        => [
                'self-hosting',
            ],
            'description' => null,
            'dateCreated' => 1466012934,
            'public'      => null,
        ],
        [
            'name'        => 'ownCloud.org',
            'image'       => 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC2ElEQVQ4jW2TS2hdVRSGv7XPud7cvBrbmMQ0NyZtIokltVgbFUuiNgUtGWhBKtiOHAh2kI50VOhA6NSJOBacxEkmHRTFFDKoz0pbk9IohYrEPBriI7nnpvfcs34H96Y+cLNhb/Ze++ffa63PeobHBi3KfSizl5ACgJkZ/zMkiVqAmzSrLD0btXQNTIcod1xy1d9aXYQQApKQhJn9LWymEOUGHIatZ2SiWpcPZmYhBCFZUt4mrVZpLBSI4wh3B5CZmWqKDhAbRFLtwt21uVUyM2P0qREeK3Yzd/Vbfv9jk0JDnmrmJkl1JwGwuHaAuUtNjQU7Nv4s3Z2PcOG9d8jnH2Lh9k+8euYcK6vrtO1qYcfBzhq1duy7EMcRpVJi488f4eL5KQb29dLZsYfl1XXy+Tz9vd08MbSfG/OL1LNr9bxYHEJge7vC/UpKX7Gbza2EO3d/oVy+T/vuNippyuD+Pt58fZKN3/7kg48+ptjTjZkhiThJyvT17uXQyBDvnnuL1uYm1u5tcPDAIIWGBgDStMrs3NecOD7Gw22tfPLpJZJymTiO4OiJM1peuadbi3dUqVS0tr6ha9cXJElpmipNU7m7bswvqpQkkqTpmcsq7H1aXcMvKJycnKCrs51cLuaba/Nc/+E2O+V2F+56YHerVKZSSTk2/gxTb5+m+GgX8c2FHwEY6O9laXmVF4+O8uvKGkl5m8ZC7QtJeZssczradwOwfGedi+eneL+xAet4fMxPvfayPXfkSc1d/c5GDx/k+5u3uPvzEm+cfAUB0zOXaSoUOH1qkqXlVT6b/VKHDx2wmUufy4ojE9oqJaqXRoDl4pjMHUkgCFEAIAQjy1xmWKVSVVNjwWJB1trSjOqtXGfmPzzpwTTDJNTSHDxzJ0i6IkLkkmdZJnc3SWRZhrvj7mSZ4zWozN3lkrsscvcr0a49xa+AIcz6gR0S/+VgZ/8PnIVnX5ClZ/8Ce+CJ7pbOimUAAAAASUVORK5CYII=',
            'url'         => 'https://owncloud.org/',
            'tags'        => [
                'self-hosting',
            ],
            'description' => null,
            'dateCreated' => 1466013448,
            'public'      => null,
        ],
    ];
    // phpcs:enable

    /**
     * @var NetscapeBookmarkDecoder|null
     */
    private $decoder;

    /**
     * Parse flat Chromium bookmarks (no directories).
     */
    public function testParseFlat(): void
    {
        $content = \file_get_contents(self::FIXTURE_DIRECTORY . 'input/chromium_flat.htm');
        $result = $this->decoder->decode($content);

        $this->assertSame(self::EXPECTED_1, $result);
    }

    /**
     * Parse nested Chromium bookmarks (directories and subdirectories).
     */
    public function testParseNested(): void
    {
        $content = \file_get_contents(self::FIXTURE_DIRECTORY . 'input/chromium_nested.htm');
        $result = $this->decoder->decode($content);

        $this->assertSame(self::EXPECTED_2, $result);
    }

    // --------------------------------------------------
    // Setup / Tear Down
    // --------------------------------------------------

    protected function setUp(): void
    {
        $this->decoder = new NetscapeBookmarkDecoder();
    }

    protected function tearDown(): void
    {
        $this->decoder = null;
    }
}