]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
More extensive multi-column layout testing.
authorJeremias Maerki <jeremias@apache.org>
Wed, 29 Jun 2005 13:20:16 +0000 (13:20 +0000)
committerJeremias Maerki <jeremias@apache.org>
Wed, 29 Jun 2005 13:20:16 +0000 (13:20 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@202372 13f79535-47bb-0310-9956-ffa450edef68

test/layoutengine/disabled-testcases.txt
test/layoutengine/testcases/multi-column1.xml
test/layoutengine/testcases/multi-column1a.xml [new file with mode: 0644]
test/layoutengine/testcases/multi-column2.xml
test/layoutengine/testcases/multi-column3.xml [new file with mode: 0644]

index d3f3703b17173a8a609eb5aa61e6cbfe34248b8c..a5146d8cdbc9701251a1435867ca613f98bcb733 100644 (file)
@@ -6,6 +6,8 @@ keep-with-previous3.xml
 keep-with-previous4.xml
 keep-with-previous5.xml
 list4.xml
+multi-column2.xml
+multi-column3.xml
 normal-breaking4.xml
 table-border-collapse1.xml
 table-border-collapse2.xml
index af174121022b3a0467e9d7f4658a420910f4d817..451d7141c1a37f540a5e9d04888971b50ad726c5 100644 (file)
       </fo:layout-master-set>
       <fo:page-sequence master-reference="normal" white-space-collapse="true">
         <fo:flow flow-name="xsl-region-body">
-          <fo:block>
-            <fo:block>line1</fo:block>
-            <fo:block>line2</fo:block>
-            <fo:block background-color="orange">line3</fo:block>
-            <fo:block>line4</fo:block>
-            <fo:block>line5</fo:block>
-            <fo:block>line6</fo:block>
-            <fo:block>line7</fo:block>
-            <fo:block>line8</fo:block>
-            <fo:block>line9</fo:block>
-            <fo:block>line10</fo:block>
-            <fo:block>line11</fo:block>
-            <fo:block>line12</fo:block>
-            <fo:block>line13</fo:block>
-            <fo:block>line14</fo:block>
-            <fo:block>line15</fo:block>
-            <fo:block>line16</fo:block>
-            <fo:block>line17</fo:block>
-            <fo:block>line18</fo:block>
-            <fo:block>line19</fo:block>
-            <fo:block>line20</fo:block>
-            <fo:block>line21</fo:block>
-            <fo:block>line22</fo:block>
-            <fo:block>line23</fo:block>
-            <fo:block>line24</fo:block>
-            <fo:block>line25</fo:block>
-            <fo:block>line26</fo:block>
-            <fo:block>line27</fo:block>
-            <fo:block>line28</fo:block>
-            <fo:block>line29</fo:block>
-            <fo:block>line30</fo:block>
-          </fo:block>
+          <fo:block>line1</fo:block>
+          <fo:block>line2</fo:block>
+          <fo:block background-color="orange">line3</fo:block>
+          <fo:block>line4</fo:block>
+          <fo:block>line5</fo:block>
+          <fo:block>line6</fo:block>
+          <fo:block>line7</fo:block>
+          <fo:block>line8</fo:block>
+          <fo:block>line9</fo:block>
+          <fo:block>line10</fo:block>
+          <fo:block>line11</fo:block>
+          <fo:block>line12</fo:block>
+          <fo:block>line13</fo:block>
+          <fo:block>line14</fo:block>
+          <fo:block>line15</fo:block>
+          <fo:block>line16</fo:block>
+          <fo:block>line17</fo:block>
+          <fo:block>line18</fo:block>
+          <fo:block>line19</fo:block>
+          <fo:block>line20</fo:block>
+          <fo:block>line21</fo:block>
+          <fo:block>line22</fo:block>
+          <fo:block>line23</fo:block>
+          <fo:block>line24</fo:block>
+          <fo:block>line25</fo:block>
+          <fo:block>line26</fo:block>
+          <fo:block>line27</fo:block>
+          <fo:block>line28</fo:block>
+          <fo:block>line29</fo:block>
+          <fo:block>line30</fo:block>
         </fo:flow>
       </fo:page-sequence>
     </fo:root>
   </fo>
   <checks>
     <eval expected="1" xpath="count(//pageViewport)"/>
+    
+    <eval expected="1" xpath="count(//regionBody/mainReference/span)"/>
+    <!-- room for 20 lines -->
+    <eval expected="20" xpath="//regionBody/mainReference/span/@bpd div 14400"/>
+    
+    <!-- 2 columns -->
+    <eval expected="2" xpath="count(//regionBody/mainReference/span/flow)"/>
+    <!-- 20 lines in first column -->
+    <eval expected="20" xpath="count(//regionBody/mainReference/span/flow[1]/block)"/>
+    <eval expected="20" xpath="//regionBody/mainReference/span/flow[1]/@bpd div 14400"/>
+    <!-- 10 lines in second column -->
+    <eval expected="10" xpath="count(//regionBody/mainReference/span/flow[2]/block)"/>
+    <eval expected="10" xpath="//regionBody/mainReference/span/flow[2]/@bpd div 14400"/>
   </checks>
 </testcase>
diff --git a/test/layoutengine/testcases/multi-column1a.xml b/test/layoutengine/testcases/multi-column1a.xml
new file mode 100644 (file)
index 0000000..3c7b481
--- /dev/null
@@ -0,0 +1,98 @@
+<?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 multi-column documents. Normal multi-column document breaking over more than one page.\r
+    </p>\r
+  </info>\r
+  <fo>\r
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">\r
+      <fo:layout-master-set>\r
+        <fo:simple-page-master master-name="normal" page-width="360pt" page-height="2in">\r
+          <fo:region-body column-count="2" column-gap="20pt"/>\r
+        </fo:simple-page-master>\r
+      </fo:layout-master-set>\r
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">\r
+        <fo:flow flow-name="xsl-region-body">\r
+          <fo:block>line1</fo:block>\r
+          <fo:block>line2</fo:block>\r
+          <fo:block background-color="orange">line3</fo:block>\r
+          <fo:block>line4</fo:block>\r
+          <fo:block>line5</fo:block>\r
+          <fo:block>line6</fo:block>\r
+          <fo:block>line7</fo:block>\r
+          <fo:block>line8</fo:block>\r
+          <fo:block>line9</fo:block>\r
+          <fo:block>line10</fo:block>\r
+          <fo:block>line11</fo:block>\r
+          <fo:block>line12</fo:block>\r
+          <fo:block>line13</fo:block>\r
+          <fo:block>line14</fo:block>\r
+          <fo:block>line15</fo:block>\r
+          <fo:block>line16</fo:block>\r
+          <fo:block>line17</fo:block>\r
+          <fo:block>line18</fo:block>\r
+          <fo:block>line19</fo:block>\r
+          <fo:block>line20</fo:block>\r
+          <fo:block>line21</fo:block>\r
+          <fo:block>line22</fo:block>\r
+          <fo:block>line23</fo:block>\r
+          <fo:block>line24</fo:block>\r
+          <fo:block>line25</fo:block>\r
+          <fo:block>line26</fo:block>\r
+          <fo:block>line27</fo:block>\r
+          <fo:block>line28</fo:block>\r
+          <fo:block>line29</fo:block>\r
+          <fo:block>line30</fo:block>\r
+        </fo:flow>\r
+      </fo:page-sequence>\r
+    </fo:root>\r
+  </fo>\r
+  <checks>\r
+    <eval expected="2" xpath="count(//pageViewport)"/>\r
+    \r
+    <!-- *** page 1 *** -->\r
+    <eval expected="1" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span)"/>\r
+    <!-- room for 10 lines -->\r
+    <eval expected="10" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/@bpd div 14400"/>\r
+    \r
+    <!-- 2 columns -->\r
+    <eval expected="2" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow)"/>\r
+    <!-- 10 lines in first column -->\r
+    <eval expected="10" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[1]/block)"/>\r
+    <eval expected="10" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[1]/@bpd div 14400"/>\r
+    <!-- 10 lines in second column -->\r
+    <eval expected="10" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[2]/block)"/>\r
+    <eval expected="10" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span/flow[2]/@bpd div 14400"/>\r
+\r
+    <!-- *** page 2 *** -->\r
+    <eval expected="1" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span)"/>\r
+    <!-- room for 10 lines -->\r
+    <eval expected="10" xpath="//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/@bpd div 14400"/>\r
+    \r
+    <!-- 2 columns -->\r
+    <eval expected="2" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow)"/>\r
+    <!-- 10 lines in first column -->\r
+    <eval expected="10" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[1]/block)"/>\r
+    <eval expected="10" xpath="//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[1]/@bpd div 14400"/>\r
+    <!-- 0 lines in second column -->\r
+    <eval expected="0" xpath="count(//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[2]/block)"/>\r
+    <eval expected="0" xpath="//pageViewport[@nr=2]/page/regionViewport/regionBody/mainReference/span/flow[2]/@bpd div 14400"/>\r
+  </checks>\r
+</testcase>\r
index a05d515e91466509c2e9c7963b464ae823a5f5eb..77f522a933f07f2034d164b3b95e9041807a88e0 100644 (file)
   </fo>
   <checks>
     <eval expected="1" xpath="count(//pageViewport)"/>
+    
+    <!-- *** page 1 *** -->
+    <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span)"/>
+
+    <!-- column balancing should produce 5 lines (ceil(13 / 3)) -->
+    <eval expected="5" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/@bpd div 14400"/>
+    <!-- 3 columns in span 1 -->
+    <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow)"/>
+    <!-- 5 lines in first column -->
+    <eval expected="5" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[1]/block)"/>
+    <eval expected="5" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[1]/@bpd div 14400"/>
+    <!-- 5 lines in second column -->
+    <eval expected="5" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[2]/block)"/>
+    <eval expected="5" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[2]/@bpd div 14400"/>
+    <!-- 3 lines in third column -->
+    <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[3]/block)"/>
+    <eval expected="3" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[1]/flow[3]/@bpd div 14400"/>
+
+    <!-- second span should produce 4 lines -->
+    <eval expected="4" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/@bpd div 14400"/>
+    <!-- 1 column in span 2 -->
+    <eval expected="1" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/flow)"/>
+    <eval expected="4" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/flow[1]/block)"/>
+    <eval expected="4" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[2]/flow[1]/@bpd div 14400"/>
+
+    <!-- no column balancing in the last span -->
+    <eval expected="3" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/@bpd div 14400"/>
+    <!-- 3 columns in span 3 -->
+    <eval expected="3" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow)"/>
+    <!-- 11 lines in first column -->
+    <eval expected="11" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[1]/block)"/>
+    <eval expected="11" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[1]/@bpd div 14400"/>
+    <!-- 2 lines in second column (no column balancing here)-->
+    <eval expected="2" xpath="count(//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[2]/block)"/>
+    <eval expected="2" xpath="//pageViewport[@nr=1]/page/regionViewport/regionBody/mainReference/span[3]/flow[2]/@bpd div 14400"/>
+
   </checks>
 </testcase>
diff --git a/test/layoutengine/testcases/multi-column3.xml b/test/layoutengine/testcases/multi-column3.xml
new file mode 100644 (file)
index 0000000..255ef25
--- /dev/null
@@ -0,0 +1,67 @@
+<?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 multi-column documents. This test: footnotes in multi-column documents (no spans).\r
+    </p>\r
+  </info>\r
+  <fo>\r
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">\r
+      <fo:layout-master-set>\r
+        <fo:simple-page-master master-name="normal" page-width="360pt" page-height="2in">\r
+          <fo:region-body column-count="2" column-gap="20pt"/>\r
+        </fo:simple-page-master>\r
+      </fo:layout-master-set>\r
+      <fo:page-sequence master-reference="normal" white-space-collapse="true">\r
+        <fo:static-content flow-name="xsl-footnote-separator">\r
+          <fo:block border-top="solid 5pt red"/>\r
+        </fo:static-content>\r
+        <fo:flow flow-name="xsl-region-body">\r
+          <fo:block>line1</fo:block>\r
+          <fo:block>line2</fo:block>\r
+          <fo:block>line3</fo:block>\r
+          <fo:block>line4</fo:block>\r
+          <fo:block>line5<fo:footnote><fo:inline>x</fo:inline><fo:footnote-body><fo:block background-color="orange">A footnote</fo:block></fo:footnote-body></fo:footnote></fo:block>\r
+          <fo:block>line6</fo:block>\r
+          <fo:block>line7</fo:block>\r
+          <fo:block>line8</fo:block>\r
+          <fo:block>line9</fo:block>\r
+          <fo:block>line10</fo:block>\r
+          <fo:block>line11<fo:footnote><fo:inline>x</fo:inline><fo:footnote-body><fo:block background-color="orange">Another footnote on the second column</fo:block></fo:footnote-body></fo:footnote></fo:block>\r
+        </fo:flow>\r
+      </fo:page-sequence>\r
+    </fo:root>\r
+  </fo>\r
+  <checks>\r
+    <eval expected="1" xpath="count(//pageViewport)"/>\r
+    \r
+    <eval expected="1" xpath="count(//regionBody/mainReference/span)"/>\r
+    <!-- room for 7 lines -->\r
+    <eval expected="7" xpath="//regionBody/mainReference/span/@bpd div 14400"/>\r
+    \r
+    <!-- 2 columns -->\r
+    <eval expected="2" xpath="count(//regionBody/mainReference/span/flow)"/>\r
+    <!-- 7 lines in first column -->\r
+    <eval expected="7" xpath="count(//regionBody/mainReference/span/flow[1]/block)"/>\r
+    <eval expected="7" xpath="//regionBody/mainReference/span/flow[1]/@bpd div 14400"/>\r
+    <!-- 4 lines in second column -->\r
+    <eval expected="4" xpath="count(//regionBody/mainReference/span/flow[2]/block)"/>\r
+    <eval expected="4" xpath="//regionBody/mainReference/span/flow[2]/@bpd div 14400"/>\r
+  </checks>\r
+</testcase>\r