extract( self::SIMPLE_TEXT, $query, ThemeOptionExtractEnum::no() ); $this->assertEquals('', $actual->getText()); } $queries = [ 'فنلندا', 'ويكيبيديا', 'مسارح', ]; foreach ($queries as $query) { $actual = $extractor->extract( self::ARABIC_TEXT, $query, ThemeOptionExtractEnum::no() ); $this->assertEquals('', $actual->getText()); } $queries = [ 'ひすう', '列りな', '留屋れこ', ]; foreach ($queries as $query) { $actual = $extractor->extract( self::HIEROGLYPHIC_TEXT, $query, ThemeOptionExtractEnum::no() ); $this->assertEquals('', $actual->getText()); } } /** * @dataProvider startExtractProvider * * @param string $text Document content text. * @param string $query Search query. * @param integer $startExtractLen How many characters extract from beginning * of content. * @param string $expected Expected result. * * @return void */ public function testExtractStart($text, $query, $startExtractLen, $expected) { $extractor = new BasicDocumentContentExtractor($startExtractLen, random_int(0, 100)); $actual = $extractor->extract($text, $query, ThemeOptionExtractEnum::start()); $this->assertEquals($expected, $actual->getText()); } /** * @return array */ public function startExtractProvider() { return [ [ self::SIMPLE_TEXT, 'cat', 20, 'Outside a character ', ], [ self::SIMPLE_TEXT, 'some', 1, 'O', ], [ self::SIMPLE_TEXT, '', 100000000, self::SIMPLE_TEXT, ], [ self::SIMPLE_TEXT, 'long query', 0, '', ], [ self::ARABIC_TEXT, '', 25, 'مع مدن يرتبط المؤلّفة, حي', ], [ self::ARABIC_TEXT, '', 1, 'م', ], [ self::ARABIC_TEXT, '', 10000000, self::ARABIC_TEXT, ], [ self::HIEROGLYPHIC_TEXT, '', 25, '絵列個列氏。さおひまきんせふこ二「夜等鵜もぬねゃ舳', ], [ self::HIEROGLYPHIC_TEXT, '', 1, '絵', ], [ self::HIEROGLYPHIC_TEXT, '', 10000000, self::HIEROGLYPHIC_TEXT, ], ]; } /** * @dataProvider contextExtractProvider * * @param string $text Document content text. * @param string $query Search query. * @param integer $contextExtractLen How many characters extract before and * after search keyword. * @param string $expected Expected result. * * @return void */ public function testExtractContext($text, $query, $contextExtractLen, $expected) { $extractor = new BasicDocumentContentExtractor(random_int(0, 100), $contextExtractLen); $actual = $extractor->extract($text, $query, ThemeOptionExtractEnum::context()); $this->assertEquals($expected, $actual->getText()); } /** * @return array */ public function contextExtractProvider() { return [ [ self::SIMPLE_TEXT, 'mode', 5, 'hing mode, the', ], [ self::SIMPLE_TEXT, 'mode', 0, 'mode', ], [ self::SIMPLE_TEXT, 'character mode', 25, 'Outside a character class, in the default ma', ], [ self::SIMPLE_TEXT, 'cat PCRE_MULTILINE dog', 7, 'if the PCRE_MULTILINE option', ], [ self::SIMPLE_TEXT, 'mode Outside PCRE_MULTILINE', 1000000000, self::SIMPLE_TEXT, ], [ self::SIMPLE_TEXT, 'cat', 25, 'MULTILINE is set or not. Cat also been here.', ], [ self::ARABIC_TEXT, 'المؤلّفة حين', 25, 'مع مدن يرتبط المؤلّفة, حين تونس تحرّكت في. بعض', ], [ self::ARABIC_TEXT, 'المؤلّفة', 0, 'المؤلّفة', ], [ self::ARABIC_TEXT, 'المؤلّفة', 10000000, self::ARABIC_TEXT, ], [ self::HIEROGLYPHIC_TEXT, '派阿ヌ ノきぬ離日み さおひまき', 25, '絵列個列氏。さおひまきんせふこ二「夜等鵜もぬねゃ舳カ」ラュャコ。ほゅ。る', ], [ self::HIEROGLYPHIC_TEXT, 'ラュャ', 0, 'ラュャ', ], [ self::HIEROGLYPHIC_TEXT, '派阿ヌ ノきぬ離日み', 10000000, self::HIEROGLYPHIC_TEXT, ], ]; } /** * @return void */ public function testExtractEmptyContent() { $extractor = new BasicDocumentContentExtractor(100, 100); $this->assertEquals('', $extractor->extract('', 'mode', ThemeOptionExtractEnum::no())->getText()); $this->assertEquals('', $extractor->extract('', 'mode', ThemeOptionExtractEnum::start())->getText()); $this->assertEquals('', $extractor->extract('', 'mode', ThemeOptionExtractEnum::context())->getText()); } }