3 require_once
'lib/bagit_utils.php';
19 $this->assertEquals(1, count(filterArrayMatches(
'/a/', $input)));
21 $e = filterArrayMatches(
'/.*e.*/', $input);
22 $this->assertEquals(5, count($e));
23 $this->assertEquals(
'abcde', $e[0][0]);
24 $this->assertEquals(
'bcdef', $e[1][0]);
25 $this->assertEquals(
'cdefg', $e[2][0]);
26 $this->assertEquals(
'defgh', $e[3][0]);
27 $this->assertEquals(
'efghi', $e[4][0]);
41 $this->assertEquals(0, count(filterArrayMatches(
'/z/', $input)));
46 $this->assertTrue(endsWith(
"Scholars' Lab",
'b'));
47 $this->assertTrue(endsWith(
"Scholars' Lab",
'ab'));
48 $this->assertTrue(endsWith(
"Scholars' Lab",
'Lab'));
53 $this->assertFalse(endsWith(
"Scholars' Lab",
'z'));
56 private function _testRls($dirnames) {
58 foreach ($dirnames as $dirname) {
59 foreach (scandir($dirname) as $filename) {
60 if ($filename[0] !=
'.' && is_file(
"$dirname/$filename")) {
61 array_push($files,
"$dirname/$filename");
67 $lsout = rls($dirnames[0]);
70 $this->assertEquals(
count($files),
count($lsout));
72 for ($i=0; $i<
count($files); $i++) {
73 $this->assertEquals($files[$i], $lsout[$i]);
79 $dirname = __DIR__ .
'/../lib';
80 $this->_testRls(array($dirname));
87 array($dirname,
"$dirname/TestBag",
"$dirname/TestBag/data",
88 "$dirname/TestBag/data/imgs")
101 $this->assertFileExists(
"$tmpdir/a");
105 $this->assertFalse(file_exists($tmpdir));
106 $this->assertFalse(file_exists(
"$tmpdir/a"));
107 $this->assertFalse(file_exists(
"$tmpdir/b"));
108 $this->assertFalse(file_exists(
"$tmpdir/c"));
116 mkdir(
"$tmpdir/sub");
117 touch(
"$tmpdir/sub/a");
118 touch(
"$tmpdir/sub/b");
119 touch(
"$tmpdir/sub/c");
121 $this->assertFileExists(
"$tmpdir/sub/c");
125 $this->assertFalse(file_exists($tmpdir));
126 $this->assertFalse(file_exists(
"$tmpdir/sub"));
127 $this->assertFalse(file_exists(
"$tmpdir/sub/a"));
128 $this->assertFalse(file_exists(
"$tmpdir/sub/b"));
129 $this->assertFalse(file_exists(
"$tmpdir/sub/c"));
137 $this->assertFileExists($tmpdir);
139 $this->assertFileExists($tmpdir);
145 $this->assertFalse(file_exists($tmpdir));
146 $this->assertTrue(strpos($tmpdir, sys_get_temp_dir()) !==
false);
151 $tmpdir = tmpdir(
'test_');
152 $this->assertStringStartsWith(
'test_', basename($tmpdir));
158 array(
'a',
'b',
'c'),
159 array(
'd',
'e',
'f'),
163 $this->assertTrue(seenAtKey($data, 0,
'a'));
164 $this->assertTrue(seenAtKey($data, 1,
'e'));
165 $this->assertTrue(seenAtKey($data, 2,
'i'));
171 array(
'a' => 1,
'z' => 2),
172 array(
'a' => 3,
'z' => 4),
173 array(
'a' => 5,
'z' => 6),
174 array(
'a' => 7,
'z' => 8)
177 $this->assertTrue(seenAtKey($data,
'a', 1));
178 $this->assertTrue(seenAtKey($data,
'z', 4));
179 $this->assertTrue(seenAtKey($data,
'a', 5));
180 $this->assertTrue(seenAtKey($data,
'z', 8));
186 array(
'a' => 1,
'z' => 2),
187 array(
'a' => 3,
'z' => 4),
188 array(
'a' => 5,
'z' => 6),
189 array(
'a' => 7,
'z' => 8)
192 $this->assertFalse(seenAtKey($data,
'a', 2));
193 $this->assertFalse(seenAtKey($data,
'z', 5));
194 $this->assertFalse(seenAtKey($data,
'a', 6));
195 $this->assertFalse(seenAtKey($data,
'z', 9));
196 $this->assertFalse(seenAtKey($data,
'm', 13));
204 saveUrl(
'http://www.google.com',
"$tmpdir/google.html");
206 $this->assertFileExists(
"$tmpdir/google.html");
207 $this->assertContains(
209 strtolower(file_get_contents(
"$tmpdir/google.html"))
222 findFirstExisting(array(
"$tmpdir/a",
"$tmpdir/b",
"$tmpdir/c"))
234 findFirstExisting(array(
"$tmpdir/a",
"$tmpdir/b",
"$tmpdir/d"))
247 findFirstExisting(array(
"$tmpdir/a",
"$tmpdir/b",
"$tmpdir/d"),
255 "BagIt-Version: 0.96\n" .
256 "Tag-File-Character-Encoding: UTF-8\n",
257 readFileText(__DIR__ .
'/TestBag/bagit.txt',
'UTF-8')
263 $lines = readLines(__DIR__ .
'/TestBag/bagit.txt',
'UTF-8');
264 $this->assertEquals(2, count($lines));
265 $this->assertEquals(
"BagIt-Version: 0.96", $lines[0]);
266 $this->assertEquals(
"Tag-File-Character-Encoding: UTF-8", $lines[1]);
276 "This is some text.\nYep, it sure is.\n"
280 "This is some text.\nYep, it sure is.\n",
281 file_get_contents($tmpfile)
288 "this_contained_significant_whitespace_at_one_time",
289 BagIt_sanitizeFileName(
"this contained\tsignificant\t" .
290 "whitespace at one time")
298 BagIt_sanitizeFileName(
"this&that###wow!!!!~~~???")
304 $this->assertStringStartsWith(
'nul_', BagIt_sanitizeFileName(
'NUL'));
305 $this->assertStringStartsWith(
'aux_', BagIt_sanitizeFileName(
'AUX'));
306 $this->assertStringStartsWith(
'com3_', BagIt_sanitizeFileName(
'COM3'));
307 $this->assertStringStartsWith(
'lpt6_', BagIt_sanitizeFileName(
'LPT6'));
314 BagIt_sanitizeFileName(
'this-is-ok.txt')
320 $filename = __DIR__ .
'/TestBag/bagit.txt';
321 list($versions, $encoding, $errors) = BagIt_readBagItFile($filename);
323 $this->assertEquals(2, count($versions));
324 $this->assertEquals(0, $versions[
'major']);
325 $this->assertEquals(96, $versions[
'minor']);
326 $this->assertEquals(
'UTF-8', $encoding);
327 $this->assertEquals(0, count($errors));
332 $tmpfile = tmpdir(
'bagit_');
335 "Tag-File-Character-Encoding: ISO-8859-1\n"
338 list($versions, $encoding, $errors) = BagIt_readBagItFile($tmpfile);
339 $this->assertNull($versions);
340 $this->assertEquals(
'ISO-8859-1', $encoding);
341 $this->assertEquals(1, count($errors));
342 $this->assertEquals(
'bagit', $errors[0][0]);
344 'Error reading version information from bagit.txt file.',
351 $tmpfile = tmpdir(
'bagit_');
354 "BagIt-Version: 0.96\n"
357 list($versions, $encoding, $errors) = BagIt_readBagItFile($tmpfile);
358 $this->assertEquals(2, count($versions));
359 $this->assertEquals(0, $versions[
'major']);
360 $this->assertEquals(96, $versions[
'minor']);
365 $this->assertNull($encoding);
366 $this->assertEquals(0, count($errors));
371 $filename = __DIR__ .
'/doesn-not-exist';
372 list($versions, $encoding, $errors) = BagIt_readBagItFile($filename);
374 $this->assertEquals(2, count($versions));
375 $this->assertEquals(0, $versions[
'major']);
376 $this->assertEquals(96, $versions[
'minor']);
377 $this->assertEquals(
'UTF-8', $encoding);
378 $this->assertEquals(0, count($errors));
384 "BagIt-Version: 0.96\n" .
385 "Tag-File-Character-Encoding: UTF-8\n";
386 $versions = BagIt_parseVersionString($data);
388 $this->assertEquals(2, count($versions));
389 $this->assertEquals(0, $versions[
'major']);
390 $this->assertEquals(96, $versions[
'minor']);
396 "BagIt-Versions: 0.96\n" .
397 "Tag-File-Character-Encoding: UTF-8\n";
398 $versions = BagIt_parseVersionString($data);
400 $this->assertNull($versions);
406 "BagIt-Version: 0.96\n" .
407 "Tag-File-Character-Encoding: UTF-8\n";
408 $encoding = BagIt_parseEncodingString($data);
409 $this->assertEquals(
'UTF-8', $encoding);
415 "BagIt-Version: 0.96\n" .
416 "Tag-File-Character-encoding: UTF-8\n";
417 $encoding = BagIt_parseEncodingString($data);
418 $this->assertNull($encoding);
421 private function _clearTagManifest() {
424 $rmfile = __DIR__ .
'/TestBag/tagmanifest-sha1.txt';
425 if (file_exists($rmfile)) {
432 $zipfile = __DIR__ .
'/TestBag.zip';
433 $output = BagIt_uncompressBag($zipfile);
435 $this->assertFileExists($output);
436 $this->assertTrue(strpos($output, sys_get_temp_dir()) !==
false);
438 $this->_clearTagManifest();
440 $bagFiles = rls(__DIR__ .
'/TestBag');
442 $outFiles = rls($output);
445 $this->assertEquals(count($bagFiles), count($outFiles));
446 for ($i=0; $i<count($outFiles); $i++) {
448 basename($bagFiles[$i]),
449 basename($outFiles[$i])
456 $tarfile = __DIR__ .
'/TestBag.tgz';
457 $output = BagIt_uncompressBag($tarfile);
459 $this->assertFileExists($output);
460 $this->assertTrue(strpos($output, sys_get_temp_dir()) !==
false);
462 $this->_clearTagManifest();
464 $bagFiles = rls(__DIR__ .
'/TestBag');
466 $outFiles = rls($output);
469 $this->assertEquals(count($bagFiles), count($outFiles));
470 for ($i=0; $i<count($outFiles); $i++) {
472 basename($bagFiles[$i]),
473 basename($outFiles[$i])
483 BagIt_uncompressBag(__DIR__ .
'/TestBag');
511 $this->assertTrue(BagIt_validateExists(__FILE__, $errors));
512 $this->assertEquals(0, count($errors));
519 BagIt_validateExists(__DIR__ .
'/not-here', $errors)
521 $this->assertEquals(1, count($errors));
522 $this->assertEquals(
'not-here', $errors[0][0]);
523 $this->assertEquals(
'not-here does not exist.', $errors[0][1]);
534 $info = BagIt_parseBagInfo($lines);
535 $this->assertEquals(
'here', $info[
'some']);
536 $this->assertEquals(
'there', $info[
'other']);
548 $info = BagIt_parseBagInfo($lines);
549 $this->assertEquals(
'here and there', $info[
'some']);
550 $this->assertEquals(
'there and here', $info[
'other']);
560 $info = BagIt_parseBagInfo($lines);
561 $this->assertEquals(
'here', $info[
'some']);
562 $this->assertEquals(
'there', $info[
'other']);