Browse Source

Coverage fixes

multi-byte
J. King 4 years ago
parent
commit
ffa3f431d6
  1. 4
      lib/Encoding/Encoder.php
  2. 2
      lib/Encoding/ISO2022JP.php
  3. 22
      tests/cases/TestEncoding.php

4
lib/Encoding/Encoder.php

@ -20,7 +20,7 @@ class Encoder {
public function __construct(string $label, bool $fatal = true) {
$l = Matcher::matchLabel($label);
if (!$l || !$l['encoder']) {
throw new EncoderException("Label '$label' does not have an encoder", Encoder::E_UNAVAILABLE_ENCODER);
throw new EncoderException("Label '$label' does not have an encoder", Encoding::E_UNAVAILABLE_ENCODER);
} else {
$this->name = $l['name'];
$this->fatal = $fatal;
@ -158,7 +158,7 @@ class Encoder {
return $this->err($codePoint);
}
}
}
} // @codeCoverageIgnore
protected function modeSet(int $mode, string $bytes): string {
$head = ["\x1B\x28\x42", "\x1B\x28\x4A", "\x1B\x24\x42"][$mode];

2
lib/Encoding/ISO2022JP.php

@ -134,7 +134,7 @@ class ISO2022JP extends AbstractEncoding implements Encoding {
}
}
}
}
} // @codeCoverageIgnore
protected function modeSet(int $mode): int {
$this->modeStack[] = [$this->modeMark, $this->mode];

22
tests/cases/TestEncoding.php

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace MensBeam\Intl\TestCase;
use MensBeam\Intl\Encoding;
use MensBeam\Intl\Encoding\Encoder;
class TestEncoding extends \PHPUnit\Framework\TestCase {
/** @dataProvider provideLabelData */
@ -31,6 +32,23 @@ class TestEncoding extends \PHPUnit\Framework\TestCase {
$this->assertNull(Encoding::createDecoder("Not a label", ""));
}
/** @dataProvider provideLabelData */
public function testCreateAnEncoderFromALabel(string $label, array $data) {
if ($data['encoder']) {
$this->assertInstanceOf(Encoder::class, Encoding::createEncoder($label));
$this->assertInstanceOf(Encoder::class, Encoding::createEncoder(strtoupper($label)));
$this->assertInstanceOf(Encoder::class, Encoding::createEncoder(" $label\n\n\r\t"));
} else {
$this->assertNull(Encoding::createEncoder($label));
$this->assertNull(Encoding::createEncoder(strtoupper($label)));
$this->assertNull(Encoding::createEncoder(" $label\n\n\r\t"));
}
}
public function testFailToCreateAnEncoderFromALabel() {
$this->assertNull(Encoding::createEncoder("Not a label"));
}
public function provideLabelData() {
$ns = "MensBeam\\Intl\\Encoding\\";
$labels = [];
@ -47,12 +65,10 @@ class TestEncoding extends \PHPUnit\Framework\TestCase {
}
}
}
$out = [];
foreach ($labels as $label => $name) {
$class = $names[$name];
$encoder = !in_array($name, ["UTF-16LE", "UTF-16BE", "replacement"]);
$out[] = [(string) $label, ['label' => (string) $label, 'name' => $name, 'encoder' => $encoder, 'class' => $class]];
yield [(string) $label, ['label' => (string) $label, 'name' => $name, 'encoder' => $encoder, 'class' => $class]];
}
return $out;
}
}

Loading…
Cancel
Save