public function testCharsToLines()
{
// Convert chars up to lines.
$diffs = array(array(Diff::EQUAL, ""), array(Diff::INSERT, ""));
$this->dt->charsToLines($diffs, array("", "alpha\n", "beta\n"));
$this->assertEquals(array(array(Diff::EQUAL, "alpha\nbeta\nalpha\n"), array(Diff::INSERT, "beta\nalpha\nbeta\n")), $diffs);
// More than 256 to reveal any 8-bit limitations.
$n = 300;
$lineList = array();
$charList = array();
for ($x = 1; $x <= $n; $x++) {
$lineList[] = $x . "\n";
$charList[] = Utils::unicodeChr($x);
}
$this->assertCount($n, $lineList);
$lines = implode('', $lineList);
$chars = implode('', $charList);
$this->assertEquals($n, mb_strlen($chars));
array_unshift($lineList, "");
$diffs = array(array(Diff::DELETE, $chars));
$this->dt->charsToLines($diffs, $lineList);
$this->assertEquals(array(array(Diff::DELETE, $lines)), $diffs);
}