<?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 that there is only one page break when break-before is specified both on a
      table and its first row.
    </p>
  </info>
  <fo>
    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
      <fo:layout-master-set>
        <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm"
          margin-top="1cm" margin-bottom="0" margin-left="1cm" margin-right="1cm">
          <fo:region-body/>
        </fo:simple-page-master>
      </fo:layout-master-set>
      <fo:page-sequence master-reference="page">
        <fo:flow flow-name="xsl-region-body">
          <fo:block>Before the table</fo:block>
          <fo:table width="100%" table-layout="fixed" border-collapse="collapse" border="4pt solid black"
            break-before="page">
            <fo:table-column number-columns-repeated="2" column-width="proportional-column-width(1)"/>
            <fo:table-header>
              <fo:table-row>
                <fo:table-cell border="2pt solid blue">
                  <fo:block>Header 1</fo:block>
                </fo:table-cell>
                <fo:table-cell border="2pt solid blue">
                  <fo:block>Header 2</fo:block>
                </fo:table-cell>
              </fo:table-row>
            </fo:table-header>
            <fo:table-body>
              <fo:table-row break-before="page">
                <fo:table-cell border="2pt solid black">
                  <fo:block>Cell 1.1</fo:block>
                </fo:table-cell>
                <fo:table-cell border="2pt solid black">
                  <fo:block>Cell 1.2</fo:block>
                </fo:table-cell>
              </fo:table-row>
            </fo:table-body>
          </fo:table>
          <fo:block>After the table</fo:block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </fo>
  <checks>
    <!-- Two pages -->
    <eval expected="2" xpath="count(//pageViewport)"/>
    <!-- Only one line on the first page -->
    <eval expected="1" xpath="count(//pageViewport[@nr=1]//flow/block)"/>
    <eval expected="Before the table" xpath="//pageViewport[@nr=1]//flow/block[1]/lineArea/text[1]"/>
    <!--  Table plus line "After the table" on the second page -->
    <eval expected="2" xpath="count(//pageViewport[@nr=2]//flow/block)"/>
    <eval expected="After the table" xpath="//pageViewport[@nr=2]//flow/block[2]/lineArea/text[1]"/>
  </checks>
</testcase>
