<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<!-- $Id$ -->
<testcase>
  <info>
    <p>
      This test checks footnotes including separator.
    </p>
  </info>
  <fo>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:svg="http://www.w3.org/2000/svg">
      <fo:layout-master-set>
        <fo:simple-page-master master-name="normal" page-width="5in" page-height="3in">
          <fo:region-body/>
        </fo:simple-page-master>
      </fo:layout-master-set>
      <fo:page-sequence master-reference="normal" white-space-collapse="true">
        <fo:static-content flow-name="xsl-footnote-separator">
          <fo:block font-size="6pt" background-color="orange" border="solid 0.1pt">I'm a block serving as a footnote separator. I'm on page <fo:page-number/>.</fo:block>
        </fo:static-content>
        <fo:flow flow-name="xsl-region-body">
          <fo:block>This is a block with a footnote<fo:footnote><fo:inline font-size="50%" vertical-align="top">1</fo:inline><fo:footnote-body><fo:block><fo:inline font-size="50%" vertical-align="top">1</fo:inline>I'm a footnote!</fo:block></fo:footnote-body></fo:footnote> in it.</fo:block>
          <fo:block>This is a block with another footnote<fo:footnote><fo:inline font-size="50%" vertical-align="top">2</fo:inline><fo:footnote-body><fo:block><fo:inline font-size="50%" vertical-align="top">2</fo:inline>I'm another footnote!</fo:block></fo:footnote-body></fo:footnote>.</fo:block>
          <fo:block>filling 1...</fo:block>
          <fo:block background-color="yellow">filling 2...</fo:block>
          <fo:block>filling 3...</fo:block>
          <fo:block background-color="yellow">filling 4...</fo:block>
          <fo:block>filling 5...</fo:block>
          <fo:block background-color="yellow">filling 6...</fo:block>
          <fo:block>filling 7...</fo:block>
          <fo:block background-color="yellow">filling 8...</fo:block>
          <fo:block>filling 9...</fo:block>
          <fo:block background-color="yellow">filling 10...</fo:block>
          <fo:block>filling 11...</fo:block>
          <fo:block background-color="yellow">filling 12...</fo:block>
          <fo:block>filling 13...</fo:block>
          <fo:block background-color="yellow">filling 14...</fo:block>
          <fo:block>filling 15...</fo:block>
          <fo:block background-color="yellow" break-before="page">filling 16...</fo:block>
          <fo:block>filling 17...</fo:block>
          <fo:block background-color="yellow">filling 18...</fo:block>
          <fo:block>filling 19...</fo:block>
          <fo:block background-color="yellow">filling 20...</fo:block>
          <fo:block>filling 21...</fo:block>
          <fo:block background-color="yellow">filling 22...</fo:block>
          <fo:block>filling 23...</fo:block>
          <fo:block><fo:footnote><fo:inline/><fo:footnote-body><fo:block>I come from an empty block at the end of the flow!</fo:block></fo:footnote-body></fo:footnote></fo:block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </fo>
  <checks>
    <eval expected="3" xpath="count(//pageViewport)"/>
    <!-- block with footnote -->
    <eval expected="This is a block with a footnote" xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[1]/lineArea/text[1]"/>
    <eval expected="1" xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[1]/lineArea/inlineparent/text"/>
    <eval expected="6000" xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[1]/lineArea/inlineparent/text/@font-size"/>
    <eval expected=" in it." xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[1]/lineArea/text[2]"/>
    <!-- block2 with footnote -->
    <eval expected="This is a block with another footnote" xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[2]/lineArea/text[1]"/>
    <eval expected="2" xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[2]/lineArea/inlineparent/text"/>
    <eval expected="6000" xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[2]/lineArea/inlineparent/text/@font-size"/>
    <eval expected="." xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[2]/lineArea/text[2]"/>
    <!-- the footnotes on page 1 -->
    <eval expected="360000" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[1]/@ipd"/>
    <eval expected="3" xpath="count(//pageViewport[1]/page/regionViewport/regionBody/footnote/block)"/>
    <eval expected="7400" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[1]/@bpd"/>
    <eval expected="5550" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[1]/block[1]/lineArea/@bpd"/>
    <eval expected="I'm a block serving as a footnote separator. I'm on page 1." xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[1]/block[1]/lineArea"/>
    <eval expected="14400" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[2]/@bpd"/>
    <eval expected="11100" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[2]/lineArea/@bpd"/>
    <eval expected="1I'm a footnote!" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[2]/lineArea"/>
    <eval expected="14400" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[3]/@bpd"/>
    <eval expected="11100" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[3]/lineArea/@bpd"/>
    <eval expected="2I'm another footnote!" xpath="//pageViewport[1]/page/regionViewport/regionBody/footnote/block[3]/lineArea"/>
    <!-- page break checks -->
    <eval expected="filling 10..." xpath="//pageViewport[1]/page/regionViewport/regionBody/mainReference/span/flow/block[last()]/lineArea"/>
    <eval expected="filling 11..." xpath="//pageViewport[2]/page/regionViewport/regionBody/mainReference/span/flow/block[1]/lineArea"/>
    <!-- no on page 2 -->
    <eval expected="0" xpath="count(//pageViewport[2]/page/regionViewport/regionBody/footnote/block)"/>
    <!-- page break checks -->
    <eval expected="filling 15..." xpath="//pageViewport[2]/page/regionViewport/regionBody/mainReference/span/flow/block[last()]/lineArea"/>
    <eval expected="filling 16..." xpath="//pageViewport[3]/page/regionViewport/regionBody/mainReference/span/flow/block[1]/lineArea"/>
    <!-- last block on page 3 -->
    <eval expected="360000" xpath="//pageViewport[3]/page/regionViewport/regionBody/mainReference/span/flow/block[last()]/@ipd"/>
    <eval expected="0" xpath="//pageViewport[3]/page/regionViewport/regionBody/mainReference/span/flow/block[last()]/@bpd"/>
    <!-- the footnotes on page 3 -->
    <eval expected="2" xpath="count(//pageViewport[3]/page/regionViewport/regionBody/footnote/block)"/>
    <eval expected="360000" xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[1]/@ipd"/>
    <eval expected="7400" xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[1]/@bpd"/>
    <eval expected="5550" xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[1]/block[1]/lineArea/@bpd"/>
    <eval expected="I'm a block serving as a footnote separator. I'm on page 3." xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[1]/block[1]/lineArea"/>
    <eval expected="14400" xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[2]/@bpd"/>
    <eval expected="11100" xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[2]/lineArea/@bpd"/>
    <eval expected="I come from an empty block at the end of the flow!" xpath="//pageViewport[3]/page/regionViewport/regionBody/footnote/block[2]/lineArea"/>
  </checks>
</testcase>
