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) { public function __construct(string $label, bool $fatal = true) {
$l = Matcher::matchLabel($label); $l = Matcher::matchLabel($label);
if (!$l || !$l['encoder']) { 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 { } else {
$this->name = $l['name']; $this->name = $l['name'];
$this->fatal = $fatal; $this->fatal = $fatal;
@ -158,7 +158,7 @@ class Encoder {
return $this->err($codePoint); return $this->err($codePoint);
} }
} }
} } // @codeCoverageIgnore
protected function modeSet(int $mode, string $bytes): string { protected function modeSet(int $mode, string $bytes): string {
$head = ["\x1B\x28\x42", "\x1B\x28\x4A", "\x1B\x24\x42"][$mode]; $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 { protected function modeSet(int $mode): int {
$this->modeStack[] = [$this->modeMark, $this->mode]; $this->modeStack[] = [$this->modeMark, $this->mode];

22
tests/cases/TestEncoding.php

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace MensBeam\Intl\TestCase; namespace MensBeam\Intl\TestCase;
use MensBeam\Intl\Encoding; use MensBeam\Intl\Encoding;
use MensBeam\Intl\Encoding\Encoder;
class TestEncoding extends \PHPUnit\Framework\TestCase { class TestEncoding extends \PHPUnit\Framework\TestCase {
/** @dataProvider provideLabelData */ /** @dataProvider provideLabelData */
@ -31,6 +32,23 @@ class TestEncoding extends \PHPUnit\Framework\TestCase {
$this->assertNull(Encoding::createDecoder("Not a label", "")); $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() { public function provideLabelData() {
$ns = "MensBeam\\Intl\\Encoding\\"; $ns = "MensBeam\\Intl\\Encoding\\";
$labels = []; $labels = [];
@ -47,12 +65,10 @@ class TestEncoding extends \PHPUnit\Framework\TestCase {
} }
} }
} }
$out = [];
foreach ($labels as $label => $name) { foreach ($labels as $label => $name) {
$class = $names[$name]; $class = $names[$name];
$encoder = !in_array($name, ["UTF-16LE", "UTF-16BE", "replacement"]); $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