class HtmlEscapedTextTest

Same name and namespace in other branches
  1. 9 core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php \Drupal\Tests\Component\Render\HtmlEscapedTextTest
  2. 8.9.x core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php \Drupal\Tests\Component\Render\HtmlEscapedTextTest
  3. 11.x core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php \Drupal\Tests\Component\Render\HtmlEscapedTextTest

Tests the HtmlEscapedText class.

@coversDefaultClass \Drupal\Component\Render\HtmlEscapedText
@group utility

Hierarchy

  • class \Drupal\Tests\Component\Render\HtmlEscapedTextTest implements \PHPUnit\Framework\TestCase

Expanded class hierarchy of HtmlEscapedTextTest

File

core/tests/Drupal/Tests/Component/Render/HtmlEscapedTextTest.php, line 18

Namespace

Drupal\Tests\Component\Render
View source
class HtmlEscapedTextTest extends TestCase {
  
  /**
   * @covers ::__toString
   * @covers ::jsonSerialize
   *
   * @dataProvider providerToString
   */
  public function testToString($text, $expected, $message) : void {
    $escapable_string = new HtmlEscapedText($text);
    $this->assertEquals($expected, (string) $escapable_string, $message);
    $this->assertEquals($expected, $escapable_string->jsonSerialize());
  }
  
  /**
   * Data provider for testToString().
   *
   * @see testToString()
   */
  public static function providerToString() {
    $prophet = new Prophet();
    // Checks that invalid multi-byte sequences are escaped.
    $tests[] = [
      "Foo\xc0bar",
      'Foo�bar',
      'Escapes invalid sequence "Foo\\xC0bar"',
    ];
    $tests[] = [
      "\xc2\"",
      '�"',
      'Escapes invalid sequence "\\xc2\\""',
    ];
    $tests[] = [
      "Foo ÿñ",
      "Foo ÿñ",
      'Does not escape valid sequence "Foo ÿñ"',
    ];
    // Checks that special characters are escaped.
    $script_tag = $prophet->prophesize(MarkupInterface::class);
    $script_tag->__toString()
      ->willReturn('<script>');
    $script_tag = $script_tag->reveal();
    $tests[] = [
      $script_tag,
      '&lt;script&gt;',
      'Escapes &lt;script&gt; even inside an object that implements MarkupInterface.',
    ];
    $tests[] = [
      "<script>",
      '&lt;script&gt;',
      'Escapes &lt;script&gt;',
    ];
    $tests[] = [
      '<>&"\'',
      '&lt;&gt;&amp;&quot;&#039;',
      'Escapes reserved HTML characters.',
    ];
    $special_chars = $prophet->prophesize(MarkupInterface::class);
    $special_chars->__toString()
      ->willReturn('<>&"\'');
    $special_chars = $special_chars->reveal();
    $tests[] = [
      $special_chars,
      '&lt;&gt;&amp;&quot;&#039;',
      'Escapes reserved HTML characters even inside an object that implements MarkupInterface.',
    ];
    return $tests;
  }
  
  /**
   * @covers ::count
   */
  public function testCount() : void {
    $string = 'Can I have a <em>kitten</em>';
    $escapable_string = new HtmlEscapedText($string);
    $this->assertEquals(strlen($string), $escapable_string->count());
  }

}

Members

Title Sort descending Modifiers Object type Summary
HtmlEscapedTextTest::providerToString public static function Data provider for testToString().
HtmlEscapedTextTest::testCount public function @covers ::count[[api-linebreak]]
HtmlEscapedTextTest::testToString public function @covers ::__toString[[api-linebreak]]
@covers ::jsonSerialize[[api-linebreak]]

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.