|
|
@@ -1588,4 +1588,176 @@ podeís adquirirla.</span></p>
|
|
|
[['size' => '2VB', 'default' => 'Unknown type'], 'Unknown type']
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test getting/setting default transliterator id.
|
|
|
+ *
|
|
|
+ * @return void
|
|
|
+ */
|
|
|
+ public function testGetSetTransliteratorId()
|
|
|
+ {
|
|
|
+ $defaultTransliteratorId = 'Any-Latin; Latin-ASCII; [\u0080-\u7fff] remove';
|
|
|
+ $this->assertEquals($defaultTransliteratorId, Text::getTransliteratorId());
|
|
|
+
|
|
|
+ $expected = 'Latin-ASCII; [\u0080-\u7fff] remove';
|
|
|
+ Text::setTransliteratorId($expected);
|
|
|
+ $this->assertEquals($expected, Text::getTransliteratorId());
|
|
|
+
|
|
|
+ Text::setTransliteratorId($defaultTransliteratorId);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Data provider for testTransliterate()
|
|
|
+ *
|
|
|
+ * @return array
|
|
|
+ */
|
|
|
+ public function transliterateInputProvider()
|
|
|
+ {
|
|
|
+ return [
|
|
|
+ [
|
|
|
+ 'Foo Bar: Not just for breakfast any-more', null,
|
|
|
+ 'Foo Bar: Not just for breakfast any-more'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'A æ Übérmensch på høyeste nivå! И я люблю PHP! есть. fi ¦', null,
|
|
|
+ 'A ae Ubermensch pa hoyeste niva! I a lublu PHP! est. fi '
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'Äpfel Über Öl grün ärgert groß öko', null,
|
|
|
+ 'Apfel Uber Ol grun argert gross oko'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'La langue française est un attribut de souveraineté en France', null,
|
|
|
+ 'La langue francaise est un attribut de souverainete en France'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ '!@$#exciting stuff! - what !@-# was that?', null,
|
|
|
+ '!@$#exciting stuff! - what !@-# was that?'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'controller/action/りんご/1', null,
|
|
|
+ 'controller/action/ringo/1'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'の話が出たので大丈夫かなあと', null,
|
|
|
+ 'no huaga chutanode da zhang fukanaato'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'posts/view/한국어/page:1/sort:asc', null,
|
|
|
+ 'posts/view/hangug-eo/page:1/sort:asc'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ "non\xc2\xa0breaking\xc2\xa0space", null,
|
|
|
+ 'non breaking space'
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * testTransliterate method
|
|
|
+ *
|
|
|
+ * @param string $string String
|
|
|
+ * @param string $transliteratorId Transliterator Id
|
|
|
+ * @param String $expected Exepected string
|
|
|
+ * @return void
|
|
|
+ * @dataProvider transliterateInputProvider
|
|
|
+ */
|
|
|
+ public function testTransliterate($string, $transliteratorId, $expected)
|
|
|
+ {
|
|
|
+ $result = Text::transliterate($string, $transliteratorId);
|
|
|
+ $this->assertEquals($expected, $result);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function slugInputProvider()
|
|
|
+ {
|
|
|
+ return [
|
|
|
+ [
|
|
|
+ 'Foo Bar: Not just for breakfast any-more', [],
|
|
|
+ 'Foo-Bar-Not-just-for-breakfast-any-more'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'Foo Bar: Not just for breakfast any-more', ['replacement' => '_'],
|
|
|
+ 'Foo_Bar_Not_just_for_breakfast_any_more'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'Foo Bar: Not just for breakfast any-more', ['replacement' => '+'],
|
|
|
+ 'Foo+Bar+Not+just+for+breakfast+any+more'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'A æ Übérmensch på høyeste nivå! И я люблю PHP! есть. fi ¦', [],
|
|
|
+ 'A-ae-Ubermensch-pa-hoyeste-niva-I-a-lublu-PHP-est-fi'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'A æ Übérmensch på høyeste nivå! И я люблю PHP! есть. fi ¦', ['transliteratorId' => 'Latin-ASCII'],
|
|
|
+ 'A-ae-Ubermensch-pa-hoyeste-niva-И-я-люблю-PHP-есть-fi'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'Äpfel Über Öl grün ärgert groß öko', [],
|
|
|
+ 'Apfel-Uber-Ol-grun-argert-gross-oko'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'The truth - and- more- news', [],
|
|
|
+ 'The-truth-and-more-news'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'The truth: and more news', [],
|
|
|
+ 'The-truth-and-more-news'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'La langue française est un attribut de souveraineté en France', [],
|
|
|
+ 'La-langue-francaise-est-un-attribut-de-souverainete-en-France'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ '!@$#exciting stuff! - what !@-# was that?', [],
|
|
|
+ 'exciting-stuff-what-was-that'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ '20% of profits went to me!', [],
|
|
|
+ '20-of-profits-went-to-me'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ '#this melts your face1#2#3', [],
|
|
|
+ 'this-melts-your-face1-2-3'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'controller/action/りんご/1', ['transliteratorId' => false],
|
|
|
+ 'controller-action-りんご-1'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'の話が出たので大丈夫かなあと', ['transliteratorId' => false],
|
|
|
+ 'の話が出たので大丈夫かなあと'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'posts/view/한국어/page:1/sort:asc', ['transliteratorId' => false],
|
|
|
+ 'posts-view-한국어-page-1-sort-asc'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ "non\xc2\xa0breaking\xc2\xa0space", [],
|
|
|
+ 'non-breaking-space'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'Foo Bar: Not just for breakfast any-more', ['replacement' => ''],
|
|
|
+ 'FooBarNotjustforbreakfastanymore'
|
|
|
+ ],
|
|
|
+ [
|
|
|
+ 'clean!_me.tar.gz', ['preserve' => '.'],
|
|
|
+ 'clean-me.tar.gz'
|
|
|
+ ]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * testSlug method
|
|
|
+ *
|
|
|
+ * @param string $string String
|
|
|
+ * @param array $options Options
|
|
|
+ * @param String $expected Exepected string
|
|
|
+ * @return void
|
|
|
+ * @dataProvider slugInputProvider
|
|
|
+ */
|
|
|
+ public function testSlug($string, $options, $expected)
|
|
|
+ {
|
|
|
+ $result = Text::slug($string, $options);
|
|
|
+ $this->assertEquals($expected, $result);
|
|
|
+ }
|
|
|
}
|