EntityParser = new HTMLPurifier_EntityParser ();
$this->_entity_lookup = HTMLPurifier_EntityLookup::instance ();
}
public function test_substituteNonSpecialEntities() {
$char_theta = $this->_entity_lookup->table ['theta'];
$this->assertIdentical ( $char_theta, $this->EntityParser->substituteNonSpecialEntities ( 'θ' ) );
$this->assertIdentical ( '"', $this->EntityParser->substituteNonSpecialEntities ( '"' ) );
// numeric tests, adapted from Feyd
$args = array ();
$args [] = array (
1114112,
false
);
$args [] = array (
1114111,
'F48FBFBF'
); // 0x0010FFFF
$args [] = array (
1048576,
'F4808080'
); // 0x00100000
$args [] = array (
1048575,
'F3BFBFBF'
); // 0x000FFFFF
$args [] = array (
262144,
'F1808080'
); // 0x00040000
$args [] = array (
262143,
'F0BFBFBF'
); // 0x0003FFFF
$args [] = array (
65536,
'F0908080'
); // 0x00010000
$args [] = array (
65535,
'EFBFBF'
); // 0x0000FFFF
$args [] = array (
57344,
'EE8080'
); // 0x0000E000
$args [] = array (
57343,
false
); // 0x0000DFFF these are ill-formed
$args [] = array (
56040,
false
); // 0x0000DAE8 these are ill-formed
$args [] = array (
55296,
false
); // 0x0000D800 these are ill-formed
$args [] = array (
55295,
'ED9FBF'
); // 0x0000D7FF
$args [] = array (
53248,
'ED8080'
); // 0x0000D000
$args [] = array (
53247,
'ECBFBF'
); // 0x0000CFFF
$args [] = array (
4096,
'E18080'
); // 0x00001000
$args [] = array (
4095,
'E0BFBF'
); // 0x00000FFF
$args [] = array (
2048,
'E0A080'
); // 0x00000800
$args [] = array (
2047,
'DFBF'
); // 0x000007FF
$args [] = array (
128,
'C280'
); // 0x00000080 invalid SGML char
$args [] = array (
127,
'7F'
); // 0x0000007F invalid SGML char
$args [] = array (
0,
'00'
); // 0x00000000 invalid SGML char
$args [] = array (
20108,
'E4BA8C'
); // 0x00004E8C
$args [] = array (
77,
'4D'
); // 0x0000004D
$args [] = array (
66306,
'F0908C82'
); // 0x00010302
$args [] = array (
1072,
'D0B0'
); // 0x00000430
foreach ( $args as $arg ) {
$string = '' . $arg [0] . ';' . // decimal
'' . dechex ( $arg [0] ) . ';'; // hex
$expect = '';
if ($arg [1] !== false) {
// this is only for PHP 5, the below is PHP 5 and PHP 4
// $chars = str_split($arg[1], 2);
$chars = array ();
// strlen must be called in loop because strings size changes
for($i = 0; strlen ( $arg [1] ) > $i; $i += 2) {
$chars [] = $arg [1] [$i] . $arg [1] [$i + 1];
}
foreach ( $chars as $char ) {
$expect .= chr ( hexdec ( $char ) );
}
$expect .= $expect; // double it
}
$this->assertIdentical ( $this->EntityParser->substituteNonSpecialEntities ( $string ), $expect, 'Identical expectation [Hex: ' . dechex ( $arg [0] ) . ']' );
}
}
public function test_substituteSpecialEntities() {
$this->assertIdentical ( "'", $this->EntityParser->substituteSpecialEntities ( ''' ) );
}
}
// vim: et sw=4 sts=4