J. King
c234702cce
- The ISO 2022-JP encoder is now static as with all others; this is slightly slower, but localises the encoder logic to its class - Indexed encoders now cache pointer tables on first use, yielding significant performance benefits - Encoding multiple characters now uses fewer function calls, yielding moderate performance benefits at the expense of slight complication
48 lines
1.5 KiB
PHP
48 lines
1.5 KiB
PHP
<?php
|
|
/** @license MIT
|
|
* Copyright 2018 J. King et al.
|
|
* See LICENSE and AUTHORS files for details */
|
|
|
|
declare(strict_types=1);
|
|
namespace MensBeam\Intl\Test;
|
|
|
|
use \MensBeam\Intl\Encoding\Encoder;
|
|
|
|
abstract class CoderDecoderTest extends DecoderTest {
|
|
public function testEncodeCodePoints(bool $fatal, $input, $exp) {
|
|
$class = $this->testedClass;
|
|
$label = $class::NAME;
|
|
$e = new Encoder($label, $fatal);
|
|
$input = (array) $input;
|
|
if ($exp instanceof \Throwable) {
|
|
$this->expectException(get_class($exp));
|
|
$this->expectExceptionCode($exp->getCode());
|
|
} else {
|
|
$exp = strtolower(str_replace(" ", "", $exp));
|
|
}
|
|
$out = $e->encode($input);
|
|
$this->assertSame($exp, bin2hex($out));
|
|
$out = "";
|
|
foreach ($input as $c) {
|
|
$out .= $e->encodeChar($c);
|
|
}
|
|
$out .= $e->finalize();
|
|
$this->assertSame($exp, bin2hex($out));
|
|
}
|
|
|
|
public function testEncodeCodePointsStatically(bool $fatal, $input, $exp) {
|
|
$class = $this->testedClass;
|
|
if (!method_exists($class, "encode")) {
|
|
$this->assertTrue(true);
|
|
return;
|
|
}
|
|
if ($exp instanceof \Throwable) {
|
|
$this->expectException(get_class($exp));
|
|
$this->expectExceptionCode($exp->getCode());
|
|
} else {
|
|
$exp = strtolower(str_replace(" ", "", $exp));
|
|
}
|
|
$out = $class::encode($input, $fatal);
|
|
$this->assertSame($exp, bin2hex($out));
|
|
}
|
|
}
|