2011-08-26 17:57:05 +02:00
|
|
|
<?php
|
|
|
|
/**
|
2012-04-12 08:02:46 +02:00
|
|
|
* @package framework
|
2011-08-26 17:57:05 +02:00
|
|
|
* @subpackage tests
|
|
|
|
*/
|
|
|
|
class FileNameFilterTest extends SapphireTest {
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-09-19 12:07:39 +02:00
|
|
|
public function testFilter() {
|
2011-08-26 17:57:05 +02:00
|
|
|
$name = 'Brötchen für allë-mit_Unterstrich!.jpg';
|
|
|
|
$filter = new FileNameFilter();
|
2011-11-14 16:30:53 +01:00
|
|
|
$filter->setTransliterator(false);
|
2011-08-26 17:57:05 +02:00
|
|
|
$this->assertEquals(
|
2014-08-15 08:53:05 +02:00
|
|
|
'Brtchen-fr-all-mit-Unterstrich.jpg',
|
2011-08-26 17:57:05 +02:00
|
|
|
$filter->filter($name)
|
|
|
|
);
|
|
|
|
}
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-09-19 12:07:39 +02:00
|
|
|
public function testFilterWithTransliterator() {
|
2011-08-26 17:57:05 +02:00
|
|
|
$name = 'Brötchen für allë-mit_Unterstrich!.jpg';
|
|
|
|
$filter = new FileNameFilter();
|
2012-06-15 05:54:47 +02:00
|
|
|
$filter->setTransliterator(new SS_Transliterator());
|
2011-08-26 17:57:05 +02:00
|
|
|
$this->assertEquals(
|
2014-08-15 08:53:05 +02:00
|
|
|
'Broetchen-fuer-alle-mit-Unterstrich.jpg',
|
2011-08-26 17:57:05 +02:00
|
|
|
$filter->filter($name)
|
|
|
|
);
|
|
|
|
}
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-09-19 12:07:39 +02:00
|
|
|
public function testFilterWithCustomRules() {
|
2011-11-14 16:30:53 +01:00
|
|
|
$name = 'Kuchen ist besser.jpg';
|
2011-08-26 17:57:05 +02:00
|
|
|
$filter = new FileNameFilter();
|
2011-11-14 16:30:53 +01:00
|
|
|
$filter->setTransliterator(false);
|
2011-08-26 17:57:05 +02:00
|
|
|
$filter->setReplacements(array('/[\s-]/' => '_'));
|
|
|
|
$this->assertEquals(
|
2014-08-15 08:53:05 +02:00
|
|
|
'Kuchen_ist_besser.jpg',
|
2011-08-26 17:57:05 +02:00
|
|
|
$filter->filter($name)
|
|
|
|
);
|
|
|
|
}
|
2014-08-15 08:53:05 +02:00
|
|
|
|
2012-09-19 12:07:39 +02:00
|
|
|
public function testFilterWithEmptyString() {
|
2011-08-26 17:57:05 +02:00
|
|
|
$name = 'ö ö ö.jpg';
|
|
|
|
$filter = new FileNameFilter();
|
2012-06-15 05:54:47 +02:00
|
|
|
$filter->setTransliterator(new SS_Transliterator());
|
2011-08-26 17:57:05 +02:00
|
|
|
$result = $filter->filter($name);
|
|
|
|
$this->assertFalse(
|
|
|
|
empty($result)
|
|
|
|
);
|
|
|
|
$this->assertStringEndsWith(
|
2014-08-15 08:53:05 +02:00
|
|
|
'.jpg',
|
2011-08-26 17:57:05 +02:00
|
|
|
$result
|
|
|
|
);
|
|
|
|
$this->assertGreaterThan(
|
2014-08-15 08:53:05 +02:00
|
|
|
strlen('.jpg'),
|
2011-08-26 17:57:05 +02:00
|
|
|
strlen($result)
|
|
|
|
);
|
|
|
|
}
|
2012-10-29 05:07:58 +01:00
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testUnderscoresStartOfNameRemoved() {
|
2012-10-29 05:07:58 +01:00
|
|
|
$name = '_test.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testDoubleUnderscoresStartOfNameRemoved() {
|
2012-10-29 05:07:58 +01:00
|
|
|
$name = '__test.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testDotsStartOfNameRemoved() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = '.test.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testDoubleDotsStartOfNameRemoved() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = '..test.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testMixedInvalidCharsStartOfNameRemoved() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = '..#@$#@$^__test.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testWhitespaceRemoved() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = ' test doc.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test-doc.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testUnderscoresReplacedWithDashes() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = 'test_doc.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test-doc.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testNonAsciiCharsReplacedWithDashes() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = '!@#$%^test_123@##@$#%^.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test-123.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-11-02 02:02:22 +01:00
|
|
|
public function testDuplicateDashesRemoved() {
|
2012-11-01 21:34:34 +01:00
|
|
|
$name = 'test--document.txt';
|
|
|
|
$filter = new FileNameFilter();
|
|
|
|
$this->assertEquals('test-document.txt', $filter->filter($name));
|
|
|
|
}
|
|
|
|
|
2012-03-24 04:04:52 +01:00
|
|
|
}
|