FOSSology  4.4.0
Open Source License Compliance by Open Source Software
EncodingConverterTest.php
1 <?php
2 /*
3  SPDX-FileCopyrightText: © 2014 Siemens AG
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 
8 namespace Fossology\Lib\Text;
9 
10 class EncodingConverterTest extends \PHPUnit\Framework\TestCase
11 {
12 
13  private $testString = "äöüßÄÖÜ";
14 
16  private $converter;
17 
18  protected function setUp() : void
19  {
20  $detected = mb_detect_encoding($this->testString);
21  assertThat($detected, is("UTF-8"));
22  $this->converter = new EncodingConverter();
23  }
24 
25  public function testUtf8IsKept()
26  {
27  assertThat( $this->converter->convert($this->testString), is($this->testString));
28  }
29 
30  public function testLatin15IsConverted()
31  {
32  $encodedString = iconv("UTF-8", "ISO-8859-15", $this->testString);
33  assertThat( $this->converter->convert($encodedString), is($this->testString));
34  }
35 
36  public function testMixedEncodingIsConvertedAndCoercedToUtf8()
37  {
38  $inputString = $this->testString;
39  $inputString .= iconv("UTF-8", "ISO-8859-15", $this->testString);
40  $outputString = $this->converter->convert($inputString);
41  assertThat( $outputString, endsWith($this->testString));
42  assertThat( strlen($outputString), is(greaterThan(2 * strlen($this->testString))));
43  }
44 
45  public function testMixedEncodingStartingWithLatin1IsConvertedAndCoercedToUtf8()
46  {
47  $inputString = iconv("UTF-8", "ISO-8859-15", $this->testString);
48  $inputString .= $this->testString;
49  $outputString = $this->converter->convert($inputString);
50  assertThat( $outputString, startsWith($this->testString));
51  assertThat( strlen($outputString), is(greaterThan(2 * strlen($this->testString))));
52  }
53 }