--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+ Copyright 2005 The Apache Software Foundation\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
+<!-- $Id$ -->\r
+<testcase>\r
+ <info>\r
+ <p>\r
+ This test checks text-align and text-align-last.\r
+ </p>\r
+ </info>\r
+ <fo>\r
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">\r
+ <fo:layout-master-set>\r
+ <fo:simple-page-master master-name="simple" page-height="10in" page-width="5in">\r
+ <fo:region-body/>\r
+ </fo:simple-page-master>\r
+ </fo:layout-master-set>\r
+ <fo:page-sequence master-reference="simple">\r
+ <fo:flow flow-name="xsl-region-body">\r
+ <fo:block>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ <fo:block text-align="start" background-color="yellow">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ <fo:block text-align="justify">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ <fo:block text-align="center" background-color="yellow">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ <fo:block text-align="end">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ <fo:block text-align="justify" text-align-last="center" background-color="yellow">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ <fo:block text-align="justify" text-align-last="end">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi suscipit, risus ac congue suscipit, tortor nibh cursus mauris, quis feugiat nunc ante sit amet ante.</fo:block>\r
+ </fo:flow>\r
+ </fo:page-sequence>\r
+ </fo:root>\r
+ </fo>\r
+ <checks>\r
+ <!-- default settings for text-align -->\r
+ <true xpath="not(boolean(//flow/block[1]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[1]/lineArea[2]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[1]/lineArea[3]/@start-indent))"/>\r
+ <true xpath="//flow/block[1]/lineArea[1]/text/@ipd != //flow/block[1]/lineArea[2]/text/@ipd"/>\r
+ <true xpath="//flow/block[1]/lineArea[2]/text/@ipd != //flow/block[1]/lineArea[3]/text/@ipd"/>\r
+\r
+ <!-- text-align="start" -->\r
+ <true xpath="not(boolean(//flow/block[2]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[2]/lineArea[2]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[2]/lineArea[3]/@start-indent))"/>\r
+ <true xpath="//flow/block[2]/lineArea[1]/text/@ipd != //flow/block[2]/lineArea[2]/text/@ipd"/>\r
+ <true xpath="//flow/block[2]/lineArea[2]/text/@ipd != //flow/block[2]/lineArea[3]/text/@ipd"/>\r
+ \r
+ <!-- block 1 and 2 must have the same result -->\r
+ <true xpath="//flow/block[1]/lineArea[1]/text/@ipd = //flow/block[2]/lineArea[1]/text/@ipd"/>\r
+ <true xpath="//flow/block[1]/lineArea[2]/text/@ipd = //flow/block[2]/lineArea[2]/text/@ipd"/>\r
+ <true xpath="//flow/block[1]/lineArea[3]/text/@ipd = //flow/block[2]/lineArea[3]/text/@ipd"/>\r
+\r
+ <!-- text-align="justify" -->\r
+ <true xpath="not(boolean(//flow/block[3]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[3]/lineArea[2]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[3]/lineArea[3]/@start-indent))"/>\r
+ <!-- Some tolerance seems to be necessary here. Why is that exactly? -->\r
+ <true xpath="(360000 - //flow/block[3]/lineArea[1]/text/@ipd) < 3000"/>\r
+ <true xpath="(360000 - //flow/block[3]/lineArea[1]/text/@ipd) > -3000"/>\r
+ <true xpath="(360000 - //flow/block[3]/lineArea[2]/text/@ipd) < 3000"/>\r
+ <true xpath="(360000 - //flow/block[3]/lineArea[2]/text/@ipd) > -3000"/>\r
+ <true xpath="//flow/block[3]/lineArea[3]/text/@ipd < 350000"/>\r
+\r
+ <!-- text-align="center" -->\r
+ <true xpath="//flow/block[4]/lineArea[1]/@start-indent > 10000"/>\r
+ <true xpath="//flow/block[4]/lineArea[2]/@start-indent > 10000"/>\r
+ <true xpath="//flow/block[4]/lineArea[3]/@start-indent > 10000"/>\r
+ <!-- Some tolerance seems to be necessary here. Why is that exactly? -->\r
+ <true xpath="(360000 - //flow/block[4]/lineArea[1]/text/@ipd - (2 * //flow/block[4]/lineArea[1]/@start-indent)) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[4]/lineArea[1]/text/@ipd - (2 * //flow/block[4]/lineArea[1]/@start-indent)) > -4000"/>\r
+ <true xpath="(360000 - //flow/block[4]/lineArea[2]/text/@ipd - (2 * //flow/block[4]/lineArea[2]/@start-indent)) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[4]/lineArea[2]/text/@ipd - (2 * //flow/block[4]/lineArea[2]/@start-indent)) > -4000"/>\r
+ <true xpath="(360000 - //flow/block[4]/lineArea[3]/text/@ipd - (2 * //flow/block[4]/lineArea[3]/@start-indent)) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[4]/lineArea[3]/text/@ipd - (2 * //flow/block[4]/lineArea[3]/@start-indent)) > -4000"/>\r
+\r
+ <!-- text-align="end" -->\r
+ <true xpath="//flow/block[5]/lineArea[1]/@start-indent > 10000"/>\r
+ <true xpath="//flow/block[5]/lineArea[2]/@start-indent > 10000"/>\r
+ <true xpath="//flow/block[5]/lineArea[3]/@start-indent > 10000"/>\r
+ <!-- Some tolerance seems to be necessary here. Why is that exactly? -->\r
+ <true xpath="(360000 - //flow/block[5]/lineArea[1]/text/@ipd - //flow/block[5]/lineArea[1]/@start-indent) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[5]/lineArea[1]/text/@ipd - //flow/block[5]/lineArea[1]/@start-indent) > -4000"/>\r
+ <true xpath="(360000 - //flow/block[5]/lineArea[2]/text/@ipd - //flow/block[5]/lineArea[2]/@start-indent) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[5]/lineArea[2]/text/@ipd - //flow/block[5]/lineArea[2]/@start-indent) > -4000"/>\r
+ <true xpath="(360000 - //flow/block[5]/lineArea[3]/text/@ipd - //flow/block[5]/lineArea[3]/@start-indent) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[5]/lineArea[3]/text/@ipd - //flow/block[5]/lineArea[3]/@start-indent) > -4000"/>\r
+\r
+ <!-- text-align="justify" text-align-last="center" -->\r
+ <true xpath="not(boolean(//flow/block[6]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[6]/lineArea[2]/@start-indent))"/>\r
+ <true xpath="//flow/block[6]/lineArea[3]/@start-indent > 10000"/>\r
+ <true xpath="(360000 - //flow/block[6]/lineArea[1]/text/@ipd) < 3000"/>\r
+ <true xpath="(360000 - //flow/block[6]/lineArea[1]/text/@ipd) > -3000"/>\r
+ <true xpath="(360000 - //flow/block[6]/lineArea[2]/text/@ipd) < 3000"/>\r
+ <true xpath="(360000 - //flow/block[6]/lineArea[2]/text/@ipd) > -3000"/>\r
+ <true xpath="(360000 - //flow/block[6]/lineArea[3]/text/@ipd - (2 * //flow/block[6]/lineArea[3]/@start-indent)) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[6]/lineArea[3]/text/@ipd - (2 * //flow/block[6]/lineArea[3]/@start-indent)) > -4000"/>\r
+\r
+ <!-- text-align="justify" text-align-last="end" -->\r
+ <true xpath="not(boolean(//flow/block[7]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[7]/lineArea[2]/@start-indent))"/>\r
+ <true xpath="//flow/block[7]/lineArea[3]/@start-indent > 10000"/>\r
+ <true xpath="(360000 - //flow/block[7]/lineArea[1]/text/@ipd) < 3000"/>\r
+ <true xpath="(360000 - //flow/block[7]/lineArea[1]/text/@ipd) > -3000"/>\r
+ <true xpath="(360000 - //flow/block[7]/lineArea[2]/text/@ipd) < 3000"/>\r
+ <true xpath="(360000 - //flow/block[7]/lineArea[2]/text/@ipd) > -3000"/>\r
+ <true xpath="(360000 - //flow/block[7]/lineArea[3]/text/@ipd - //flow/block[7]/lineArea[3]/@start-indent) < 4000"/>\r
+ <true xpath="(360000 - //flow/block[7]/lineArea[3]/text/@ipd - //flow/block[7]/lineArea[3]/@start-indent) > -4000"/>\r
+\r
+ <!-- TODO Check element list -->\r
+ </checks>\r
+</testcase>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+ Copyright 2005 The Apache Software Foundation\r
+\r
+ Licensed under the Apache License, Version 2.0 (the "License");\r
+ you may not use this file except in compliance with the License.\r
+ You may obtain a copy of the License at\r
+\r
+ http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ Unless required by applicable law or agreed to in writing, software\r
+ distributed under the License is distributed on an "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ See the License for the specific language governing permissions and\r
+ limitations under the License.\r
+-->\r
+<!-- $Id$ -->\r
+<testcase>\r
+ <info>\r
+ <p>\r
+ This test checks text-align and text-align-last in special conditions.\r
+ </p>\r
+ </info>\r
+ <fo>\r
+ <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">\r
+ <fo:layout-master-set>\r
+ <fo:simple-page-master master-name="simple" page-height="10in" page-width="5in">\r
+ <fo:region-body/>\r
+ </fo:simple-page-master>\r
+ </fo:layout-master-set>\r
+ <fo:page-sequence master-reference="simple" id="bla1">\r
+ <fo:flow flow-name="xsl-region-body">\r
+ <fo:block text-align-last="justify">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</fo:block>\r
+ <!-- The next block is pretty much like the previous but there is a linefeed that is converted to a space which is then\r
+ removed by LineLM.removeElementsForTrailingSpaces(). There used to be a ClassCastException here. -->\r
+ <fo:block text-align-last="justify" background-color="yellow">Lorem ipsum dolor sit amet, consectetuer adipiscing elit.\r
+ </fo:block>\r
+ </fo:flow>\r
+ </fo:page-sequence>\r
+ </fo:root>\r
+ </fo>\r
+ <checks>\r
+ <!-- first and second block must be identical -->\r
+ <true xpath="not(boolean(//flow/block[1]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="not(boolean(//flow/block[2]/lineArea[1]/@start-indent))"/>\r
+ <true xpath="//flow/block[1]/lineArea[1]/text/@ipd = //flow/block[2]/lineArea[1]/text/@ipd"/>\r
+ </checks>\r
+</testcase>\r