| <?php |
| /** |
| * ezcDocumentOdtFormattingPropertiesTest. |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| * @package Document |
| * @version //autogen// |
| * @subpackage Tests |
| * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0 |
| */ |
| |
| /** |
| * Test suite for class. |
| * |
| * @package Document |
| * @subpackage Tests |
| */ |
| class ezcDocumentOdtPcssConvertersTest extends ezcTestCase |
| { |
| protected $domElement; |
| |
| public static function suite() |
| { |
| return new PHPUnit_Framework_TestSuite( __CLASS__ ); |
| } |
| |
| protected function setUp() |
| { |
| $domDocument = new DOMDocument(); |
| $this->domElement = $domDocument->appendChild( |
| $domDocument->createElement( 'parent' ) |
| ); |
| } |
| |
| protected function assertAttributesCorrect( array $expectedAttributes ) |
| { |
| $this->assertEquals( |
| count( $expectedAttributes ), |
| $this->domElement->attributes->length, |
| 'Inconsistent number of text property element attributes.' |
| ); |
| |
| foreach ( $expectedAttributes as $attrDef ) |
| { |
| $this->assertTrue( |
| $this->domElement->hasAttributeNS( |
| $attrDef[0], |
| $attrDef[1] |
| ), |
| "Missing attribute '{$attrDef[0]}:{$attrDef[1]}'." |
| ); |
| $this->assertEquals( |
| $attrDef[2], |
| ( $actAttrVal = $this->domElement->getAttributeNS( |
| $attrDef[0], |
| $attrDef[1] |
| ) ), |
| "Attribute '{$attrDef[0]}:{$attrDef[1]}' has incorrect value '$actAttrVal', expected '{$attrDef[2]}'." |
| ); |
| } |
| } |
| |
| /** |
| * @dataProvider getTextDecorationTestSets |
| */ |
| public function testConvertTextDecoration( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssTextDecorationConverter(); |
| $converter->convert( $this->domElement, 'text-decoration', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| /** |
| * Test sets for the 'text-decoration' style attribute. |
| */ |
| public static function getTextDecorationTestSets() |
| { |
| return array( |
| 'line-through' => array( |
| // style |
| new ezcDocumentPcssStyleListValue( array( 'line-through' ) ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-line-through-type', 'single' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-line-through-style', 'solid' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-line-through-width', 'auto' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-line-through-color', 'font-color' ), |
| ) |
| ), |
| 'underline' => array( |
| // style |
| new ezcDocumentPcssStyleListValue( array( 'underline' ) ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-type', 'single' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-style', 'solid' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-width', 'auto' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-color', 'font-color' ), |
| ) |
| ), |
| 'overline' => array( |
| // style |
| new ezcDocumentPcssStyleListValue( array( 'overline' ) ), |
| // expected attributes |
| array( |
| ) |
| ), |
| 'blink' => array( |
| // style |
| new ezcDocumentPcssStyleListValue( array( 'blink' ) ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-blinking', 'true' ), |
| ) |
| ), |
| 'multiple' => array( |
| // style |
| new ezcDocumentPcssStyleListValue( array( 'blink', 'underline' ) ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-blinking', 'true' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-type', 'single' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-style', 'solid' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-width', 'auto' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'text-underline-color', 'font-color' ), |
| ) |
| ), |
| ); |
| } |
| |
| /** |
| * @dataProvider getColorTestSets |
| */ |
| public function testConvertColor( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssColorConverter(); |
| $converter->convert( $this->domElement, 'color', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| /** |
| * Test sets for color style attributes. |
| */ |
| public static function getColorTestSets() |
| { |
| return array( |
| 'non-transparent' => array( |
| // style |
| new ezcDocumentPcssStyleColorValue( |
| array( |
| 'red' => 1.0, |
| 'green' => 1.0, |
| 'blue' => 1.0, |
| 'alpha' => 0.4, |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'color', '#ffffff' ), |
| ) |
| ), |
| 'transparent' => array( |
| // style |
| new ezcDocumentPcssStyleColorValue( |
| array( |
| 'red' => 1.0, |
| 'green' => 1.0, |
| 'blue' => 1.0, |
| 'alpha' => 0.5, |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'color', 'transparent' ), |
| ) |
| ), |
| 'value' => array( |
| // style |
| new ezcDocumentPcssStyleColorValue( |
| array( |
| 'red' => 0.75294117647059, |
| 'green' => 1.0, |
| 'blue' => 0, |
| 'alpha' => 0.0, |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'color', '#c0ff00' ), |
| ) |
| ), |
| ); |
| } |
| |
| /** |
| * @dataProvider getBackgroundColorTestSets |
| */ |
| public function testConvertBackgroundColor( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssColorConverter(); |
| $converter->convert( $this->domElement, 'background-color', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| /** |
| * Test sets for background-color style attributes. |
| */ |
| public static function getBackgroundColorTestSets() |
| { |
| // Re-use color test sets, but with background-color attribute name |
| $colorTestSets = self::getColorTestSets(); |
| foreach ( $colorTestSets as $setId => $set ) |
| { |
| foreach( $set[1] as $attrId => $attrDef ) |
| { |
| $attrDef[1] = 'background-color'; |
| $colorTestSets[$setId][1][$attrId] = $attrDef; |
| } |
| } |
| return $colorTestSets; |
| } |
| |
| /** |
| * @dataProvider getFontSizeTestSets |
| */ |
| public function testConvertFontSize( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssFontSizeConverter(); |
| $converter->convert( $this->domElement, 'font-size', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| /** |
| * Test sets for font style attributes. |
| */ |
| public static function getFontSizeTestSets() |
| { |
| return array( |
| 'font-size' => array( |
| // styles |
| new ezcDocumentPcssStyleMeasureValue( 23 ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'font-size', '23mm' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'font-size-asian', '23mm' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'font-size-complex', '23mm' ), |
| ) |
| ), |
| ); |
| } |
| |
| /** |
| * @dataProvider getTextFontNameTestSets |
| */ |
| public function testConvertMiscFontProperty( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssFontNameConverter(); |
| $converter->convert( $this->domElement, 'font-name', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| public static function getTextFontNameTestSets() |
| { |
| return array( |
| 'font-name' => array( |
| // styles |
| new ezcDocumentPcssStyleStringValue( 'DejaVu Sans' ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'font-name', 'DejaVu Sans' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'font-name-asian', 'DejaVu Sans' ), |
| array( ezcDocumentOdt::NS_ODT_STYLE, 'font-name-complex', 'DejaVu Sans' ), |
| ) |
| ), |
| ); |
| } |
| |
| /** |
| * @dataProvider getTextAlignTestSets |
| */ |
| public function testConvertMiscProperty( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtDefaultPcssConverter(); |
| $converter->convert( $this->domElement, 'text-align', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| public static function getTextAlignTestSets() |
| { |
| return array( |
| array( |
| // style |
| new ezcDocumentPcssStyleStringValue( 'center' ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'text-align', 'center' ), |
| ) |
| ), |
| ); |
| } |
| |
| /** |
| * @dataProvider getMarginTestSets |
| */ |
| public function testConvertMarginProperty( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssMarginConverter(); |
| $converter->convert( $this->domElement, 'margin', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| /** |
| * Test sets for the 'margin' style attribute. |
| */ |
| public static function getMarginTestSets() |
| { |
| return array( |
| 'margin full' => array( |
| // style |
| new ezcDocumentPcssStyleMeasureBoxValue( |
| array( |
| 'top' => 1, |
| 'left' => 2, |
| 'bottom' => 3, |
| 'right' => 4 |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-top', '1mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-left', '2mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-bottom', '3mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-right', '4mm' ), |
| ) |
| ), |
| 'margin missings' => array( |
| // style |
| new ezcDocumentPcssStyleMeasureBoxValue( |
| array( |
| 'top' => 1, |
| 'right' => 4 |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-top', '1mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-right', '4mm' ), |
| ) |
| ), |
| 'margin empty' => array( |
| // style |
| new ezcDocumentPcssStyleMeasureBoxValue( |
| array( |
| 'top' => 1, |
| 'left' => 0, |
| 'bottom' => 3, |
| 'right' => null |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-top', '1mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-left', '0mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-bottom', '3mm' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'margin-right', '0mm' ), |
| ) |
| ), |
| ); |
| } |
| |
| /** |
| * @dataProvider getBorderTestSets |
| */ |
| public function testConvertBorderProperty( $styleValue, $expectedAttributes ) |
| { |
| $converter = new ezcDocumentOdtPcssBorderConverter(); |
| $converter->convert( $this->domElement, 'border', $styleValue ); |
| |
| $this->assertAttributesCorrect( |
| $expectedAttributes |
| ); |
| } |
| |
| /** |
| * Test sets for the 'margin' style attribute. |
| */ |
| public static function getBorderTestSets() |
| { |
| return array( |
| 'border full' => array( |
| // style |
| new ezcDocumentPcssStyleBorderBoxValue( |
| array( |
| 'top' => array( |
| 'width' => 1, |
| 'style' => 'solid', |
| 'color' => array( |
| 'red' => 1, |
| 'green' => 0, |
| 'blue' => 0, |
| 'alpha' => 0 |
| ) |
| ), |
| 'left' => array( |
| 'width' => 10, |
| 'style' => 'solid', |
| 'color' => array( |
| 'red' => 0, |
| 'green' => 1, |
| 'blue' => 0, |
| 'alpha' => 0 |
| ) |
| ), |
| 'bottom' => array( |
| 'width' => 1, |
| 'style' => 'solid', |
| 'color' => array( |
| 'red' => 0, |
| 'green' => 0, |
| 'blue' => 1, |
| 'alpha' => .8 |
| ) |
| ), |
| 'right' => array( |
| 'width' => 1, |
| 'style' => 'dotted', |
| 'color' => array( |
| 'red' => .3, |
| 'green' => .2, |
| 'blue' => .4, |
| 'alpha' => .2 |
| ) |
| ), |
| ) |
| ), |
| // expected attributes |
| array( |
| // NS, attribute name, value |
| array( ezcDocumentOdt::NS_ODT_FO, 'border-top', '1mm solid #ff0000' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'border-left', '10mm solid #00ff00' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'border-bottom', '1mm solid transparent' ), |
| array( ezcDocumentOdt::NS_ODT_FO, 'border-right', '1mm dotted #4d3366' ), |
| ) |
| ), |
| ); |
| } |
| |
| } |
| |
| ?> |