Chris@0: installConfig(['text']); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Tests an edge case where the first sentence is a question and Chris@0: * subsequent sentences are not. This edge case is documented at Chris@0: * https://www.drupal.org/node/180425. Chris@0: */ Chris@0: public function testFirstSentenceQuestion() { Chris@0: $text = 'A question? A sentence. Another sentence.'; Chris@0: $expected = 'A question? A sentence.'; Chris@0: $this->assertTextSummary($text, $expected, NULL, 30); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Test summary with long example. Chris@0: */ Chris@0: public function testLongSentence() { Chris@0: // 125. Chris@0: $text = Chris@0: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' . Chris@0: // 108. Chris@0: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' . Chris@0: // 103. Chris@0: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. ' . Chris@0: // 110. Chris@0: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'; Chris@0: $expected = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ' . Chris@0: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. ' . Chris@0: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.'; Chris@0: // First three sentences add up to: 336, so add one for space and then 3 to get half-way into next word. Chris@0: $this->assertTextSummary($text, $expected, NULL, 340); Chris@0: } Chris@0: Chris@0: /** Chris@0: * Test various summary length edge cases. Chris@0: */ Chris@0: public function testLength() { Chris@0: FilterFormat::create([ Chris@0: 'format' => 'autop', Chris@0: 'filters' => [ Chris@0: 'filter_autop' => [ Chris@0: 'status' => 1, Chris@0: ], Chris@0: ], Chris@0: ])->save(); Chris@0: FilterFormat::create([ Chris@0: 'format' => 'autop_correct', Chris@0: 'filters' => [ Chris@0: 'filter_autop' => [ Chris@0: 'status' => 1, Chris@0: ], Chris@0: 'filter_htmlcorrector' => [ Chris@0: 'status' => 1, Chris@0: ], Chris@0: ], Chris@0: ])->save(); Chris@0: Chris@0: // This string tests a number of edge cases. Chris@0: $text = "

\nHi\n

\n

\nfolks\n
\n!\n

"; Chris@0: Chris@0: // The summaries we expect text_summary() to return when $size is the index Chris@0: // of each array item. Chris@0: // Using no text format: Chris@0: $format = NULL; Chris@0: $i = 0; Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "<", $format, $i++); Chris@0: $this->assertTextSummary($text, "assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\n", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nH", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n<", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\nassertTextSummary($text, "

\nHi\nassertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: Chris@0: // Using a text format with filter_autop enabled. Chris@0: $format = 'autop'; Chris@0: $i = 0; Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "<", $format, $i++); Chris@0: $this->assertTextSummary($text, "assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: Chris@0: // Using a text format with filter_autop and filter_htmlcorrector enabled. Chris@0: $format = 'autop_correct'; Chris@0: $i = 0; Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: $this->assertTextSummary($text, "

\nHi\n

\n

\nfolks\n
\n!\n

", $format, $i++); Chris@0: } Chris@0: Chris@0: /** Chris@14: * Test text_summary() returns an empty string without any error when called Chris@14: * with an invalid format. Chris@14: */ Chris@14: public function testInvalidFilterFormat() { Chris@14: Chris@14: $this->assertTextSummary($this->randomString(100), '', 'non_existent_format'); Chris@14: } Chris@14: Chris@14: /** Chris@0: * Calls text_summary() and asserts that the expected teaser is returned. Chris@0: */ Chris@0: public function assertTextSummary($text, $expected, $format = NULL, $size = NULL) { Chris@0: $summary = text_summary($text, $format, $size); Chris@0: $this->assertIdentical($summary, $expected, format_string('
@actual
is identical to
@expected
', [ Chris@0: '@actual' => $summary, Chris@0: '@expected' => $expected, Chris@0: ])); Chris@0: } Chris@0: Chris@0: }