<?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>When layout is re-started for the last page, the space-before on the first element to appear 
      on that page must be discarded.</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="40pt" page-width="110pt" margin="5pt">
          <fo:region-body background-color="#F0F0F0"/>
        </fo:simple-page-master>
        <fo:page-sequence-master master-name="pages">
          <fo:repeatable-page-master-alternatives>
            <fo:conditional-page-master-reference master-reference="page" page-position="last"/>
            <fo:conditional-page-master-reference master-reference="page" page-position="any"/>
          </fo:repeatable-page-master-alternatives>
        </fo:page-sequence-master>
      </fo:layout-master-set>
      <fo:page-sequence master-reference="pages" font-size="8pt" line-height="10pt">
        <fo:flow flow-name="xsl-region-body">
          <fo:block-container height="30pt">
            <fo:block>Filler 1</fo:block>
            <fo:block>Filler 2</fo:block>
            <fo:block>Filler 3</fo:block>
          </fo:block-container>
          <fo:block-container height="20pt" keep-with-next.within-page="always">
            <fo:block>Before line 1</fo:block>
          </fo:block-container>
          <fo:block>Before the page break</fo:block>
          <fo:block space-before="10pt">After the page break</fo:block>
          <fo:block>After line 1</fo:block>
          <fo:block>After line 2</fo:block>
        </fo:flow>
      </fo:page-sequence>
    </fo:root>
  </fo>
  <checks>
    <eval expected="3" xpath="count(//pageViewport)"/>
  </checks>
</testcase>
