<?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 the definition of a special page-master for the last page with a
      different width that the previous "rest" page causes FOP to redo the line breaking layout.
    </p>
  </info>
  <fo>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions">
  <fo:layout-master-set>
    <fo:simple-page-master margin-top="0.25in" margin-right="0.25in" margin-left="0.25in" margin-bottom="0.25in" page-width="8.5in" master-name="RestPages" page-height="11in">
      <fo:region-body margin-top="60pt" margin-bottom="10.8pt" column-count="2" region-name="letterPageBody"/>
    </fo:simple-page-master>
    <fo:simple-page-master margin-right="0.25in" margin-left="0.25in" margin-top="0.25in" margin-bottom="0.25in" page-width="8.5in" master-name="PageLast" page-height="11in">
      <fo:region-body margin-top="39.6pt" margin-bottom="10.8pt" region-name="letterPageBody"/>
    </fo:simple-page-master>
    <fo:page-sequence-master master-name="LetterPages">
      <fo:repeatable-page-master-alternatives>
        <fo:conditional-page-master-reference page-position="rest" master-reference="PageLast" blank-or-not-blank="blank"/>
        <fo:conditional-page-master-reference page-position="last" master-reference="PageLast"/>
        <fo:conditional-page-master-reference page-position="any" master-reference="RestPages"/>
      </fo:repeatable-page-master-alternatives>
    </fo:page-sequence-master>
  </fo:layout-master-set>
  <fo:page-sequence format="1" id="th_default_sequence1" initial-page-number="1" force-page-count="end-on-even" master-reference="LetterPages">
    <fo:flow flow-name="letterPageBody" font-size="40pt">
      <fo:block>1 test test test test test test</fo:block>
      <fo:block>2 test test test test test test</fo:block>
      <fo:block>3 test test test test test test</fo:block>
      <fo:block>4 test test test test test test</fo:block>
      <fo:block>5 test test test test test test</fo:block>
      <fo:block>6 test test test test test test</fo:block>
      <fo:block>7 test test test test test test</fo:block>
      <fo:block>8 test test test test test test</fo:block>
      <fo:block>9 test test test test test test</fo:block>
      <fo:block>10 test test test test test test</fo:block>
      <fo:block>11 test test test test test test</fo:block>
      <fo:block>12 test test test test test test</fo:block>
      <fo:block>13 test test test test test test</fo:block>
      <fo:block>14 test test test test test test</fo:block>         
    </fo:flow>
  </fo:page-sequence>
</fo:root>
</fo>
  <checks>
    <eval expected="1" xpath="//pageViewport[1]//lineArea[1]//text[1]/word[1]"/>
  </checks>
</testcase>
