ILIAS  release_7 Revision v7.30-3-g800a261c036
All Data Structures Namespaces Files Functions Variables Modules Pages
EstimatedReadingTimeTest.php
Go to the documentation of this file.
1 <?php declare(strict_types=1);
2 /* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */
4 
7 
9 {
10  const TEXT = <<<EOT
11 Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
12 EOT;
13  const HTML = <<<EOT
14 <div>Lorem ipsum dolor <span style="color: red;">sit amet</span>, <img src="#" /> consetetur sadipscing elitr, sed diam nonumy eirmod <img src="#" /> tempor invidunt <img src="#" /> ut labore et dolore <img src="#" /> magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor <img src="#" /> sit amet. <img src="#" /> Lorem ipsum dolor <img src="#" /> sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, <img src="#" /> sed diam voluptua. <img src="#" /> At vero eos et accusam et justo duo dolores et ea rebum. Stet <img src="#" /> clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</div>
15 EOT;
16 
18  private $refinery;
19 
23  protected function setUp() : void
24  {
25  $this->refinery = new Factory(
26  $this->createMock(\ILIAS\Data\Factory::class),
27  $this->createMock(\ilLanguage::class)
28  );
29 
30  parent::setUp();
31  }
32 
36  public function subjectProvider() : array
37  {
38  return [
39  [5],
40  [6.3],
41  [[]],
42  [new \stdClass()],
43  [true],
44  [null],
45  [function () {
46  }],
47  ];
48  }
49 
54  public function testExceptionIsRaisedIfSubjectIsNotAString($from) : void
55  {
56  $readingTimeTrafo = $this->refinery->string()->estimatedReadingTime(true);
57 
58  $this->expectException(\InvalidArgumentException::class);
59  $readingTimeTrafo->transform($from);
60  }
61 
62  public function testReadingTimeForPlainText() : void
63  {
64  $readingTimeTrafo = $this->refinery->string()->estimatedReadingTime(true);
65  $this->assertEquals(
66  1,
67  $readingTimeTrafo->transform(self::TEXT)
68  );
69  }
70 
71  public function testReadingTimeForHtmlFragment() : void
72  {
73  $text = self::HTML;
74 
75  $readingTimeTrafo = $this->refinery->string()->estimatedReadingTime(true);
76  $this->assertEquals(
77  2,
78  $readingTimeTrafo->transform($text)
79  );
80 
81  $onlyTextReadingTimeInfo = $this->refinery->string()->estimatedReadingTime();
82  $this->assertEquals(
83  1,
84  $onlyTextReadingTimeInfo->transform($text)
85  );
86  }
87 
89  {
90  $textSegmentWithPunctuation = 'Lorem ipsum <img src="#" />, and some other text... ';
91  $repetitions = 300; // 275 repetitions result in an additional minute, if the `,` would be considered
92 
93  $readingTimeTrafo = $this->refinery->string()->estimatedReadingTime(true);
94 
95  $text = str_repeat($textSegmentWithPunctuation, $repetitions);
96 
97  $timeInMinutes = $readingTimeTrafo->transform($text);
98  $this->assertEquals(23, $timeInMinutes);
99 
100  $textSegmentWithoutPunctuation = 'Lorem ipsum <img src="#" /> and some other text... ';
101  $text = str_repeat($textSegmentWithoutPunctuation, $repetitions);
102 
103  $timeInMinutes = $readingTimeTrafo->transform($text);
104  $this->assertEquals(23, $timeInMinutes);
105  }
106 
108  {
109  $text = self::HTML;
110 
111  $comment = '<script><!--a comment--></script>';
112  $repetitions = 300;
113  $text = $text . str_repeat($comment, $repetitions);
114 
115  $onlyTextReadingTimeInfo = $this->refinery->string()->estimatedReadingTime();
116  $this->assertEquals(
117  1,
118  $onlyTextReadingTimeInfo->transform($text)
119  );
120  }
121 }
Class ChatMainBarProvider .
Builds data types.
Definition: Factory.php:19
$comment
Definition: buildRTE.php:83