getUnit ();
$converter = new HTMLPurifier_UnitConverter ( 4, 10 );
$result = $converter->convert ( $length, $to_unit );
if (! $result || ! $expectl)
$this->assertIdentical ( $result, $expectl );
else
$this->assertIdentical ( $result->toString (), $expectl->toString () );
$converter = new HTMLPurifier_UnitConverter ( 4, 10, true );
$result = $converter->convert ( $length, $to_unit );
if (! $result || ! $expectl)
$this->assertIdentical ( $result, $expectl );
else
$this->assertIdentical ( $result->toString (), $expectl->toString (), 'BCMath substitute: %s' );
if ($test_negative) {
$this->assertConversion ( "-$input", $expect === false ? false : "-$expect", $unit, false );
}
}
public function testFail() {
$this->assertConversion ( '1in', false, 'foo' );
$this->assertConversion ( '1foo', false, 'in' );
}
public function testZero() {
$this->assertConversion ( '0', '0', 'in', false );
$this->assertConversion ( '-0', '0', 'in', false );
$this->assertConversion ( '0in', '0', 'in', false );
$this->assertConversion ( '-0in', '0', 'in', false );
$this->assertConversion ( '0in', '0', 'pt', false );
$this->assertConversion ( '-0in', '0', 'pt', false );
}
public function testEnglish() {
$this->assertConversion ( '1in', '6pc' );
$this->assertConversion ( '6pc', '1in' );
$this->assertConversion ( '1in', '72pt' );
$this->assertConversion ( '72pt', '1in' );
$this->assertConversion ( '1pc', '12pt' );
$this->assertConversion ( '12pt', '1pc' );
$this->assertConversion ( '1pt', '0.01389in' );
$this->assertConversion ( '1.000pt', '0.01389in' );
$this->assertConversion ( '100000pt', '1389in' );
$this->assertConversion ( '1in', '96px' );
$this->assertConversion ( '96px', '1in' );
}
public function testMetric() {
$this->assertConversion ( '1cm', '10mm' );
$this->assertConversion ( '10mm', '1cm' );
$this->assertConversion ( '1mm', '0.1cm' );
$this->assertConversion ( '100mm', '10cm' );
}
public function testEnglishMetric() {
$this->assertConversion ( '2.835pt', '1mm' );
$this->assertConversion ( '1mm', '2.835pt' );
$this->assertConversion ( '0.3937in', '1cm' );
}
public function testRoundingMinPrecision() {
// One sig-fig, modified to be four, conversion rounds up
$this->assertConversion ( '100pt', '1.389in' );
$this->assertConversion ( '1000pt', '13.89in' );
$this->assertConversion ( '10000pt', '138.9in' );
$this->assertConversion ( '100000pt', '1389in' );
$this->assertConversion ( '1000000pt', '13890in' );
}
public function testRoundingUserPrecision() {
// Five sig-figs, conversion rounds down
$this->assertConversion ( '11112000pt', '154330in' );
$this->assertConversion ( '1111200pt', '15433in' );
$this->assertConversion ( '111120pt', '1543.3in' );
$this->assertConversion ( '11112pt', '154.33in' );
$this->assertConversion ( '1111.2pt', '15.433in' );
$this->assertConversion ( '111.12pt', '1.5433in' );
$this->assertConversion ( '11.112pt', '0.15433in' );
}
public function testRoundingBigNumber() {
$this->assertConversion ( '444400000000000000000000in', '42660000000000000000000000px' );
}
protected function assertSigFig($n, $sigfigs) {
$converter = new HTMLPurifier_UnitConverter ();
$result = $converter->getSigFigs ( $n );
$this->assertIdentical ( $result, $sigfigs );
}
public function test_getSigFigs() {
$this->assertSigFig ( '0', 0 );
$this->assertSigFig ( '1', 1 );
$this->assertSigFig ( '-1', 1 );
$this->assertSigFig ( '+1', 1 );
$this->assertSigFig ( '01', 1 );
$this->assertSigFig ( '001', 1 );
$this->assertSigFig ( '12', 2 );
$this->assertSigFig ( '012', 2 );
$this->assertSigFig ( '10', 1 );
$this->assertSigFig ( '10.', 2 );
$this->assertSigFig ( '100.', 3 );
$this->assertSigFig ( '103', 3 );
$this->assertSigFig ( '130', 2 );
$this->assertSigFig ( '.1', 1 );
$this->assertSigFig ( '0.1', 1 );
$this->assertSigFig ( '00.1', 1 );
$this->assertSigFig ( '0.01', 1 );
$this->assertSigFig ( '0.010', 2 );
$this->assertSigFig ( '0.012', 2 );
}
}
// vim: et sw=4 sts=4