Author: adelmelle
Date: Tue Sep 23 11:48:34 2008
New Revision: 698280

URL: http://svn.apache.org/viewvc?rev=698280&view=rev
Log:
Bugzilla 40798: A conditional-page-master-reference with page-position="last" 
is also eligible for an only page (first as well as last)
Additionally: added support for page-position="only"

Added:
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_last_bug40798.xml
   (with props)
    
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_only.xml
   (with props)
Modified:
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequence.java
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequenceMaster.java
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
    
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageProvider.java
    xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java
    xmlgraphics/fop/trunk/status.xml

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
 (original)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/ConditionalPageMasterReference.java
 Tue Sep 23 11:48:34 2008
@@ -94,61 +94,33 @@
      * @param isFirstPage True if page is first page
      * @param isLastPage True if page is last page
      * @param isBlankPage True if page is blank
-     * @param isOnlyPage True if page is the only page
      * @return True if the conditions for this reference are met
      */
     protected boolean isValid(boolean isOddPage,
                               boolean isFirstPage,
                               boolean isLastPage,
-                              boolean isOnlyPage,
                               boolean isBlankPage) {
-        // page-position
-        if (isOnlyPage) {
-            if (pagePosition != EN_ONLY) {
-                return false;
-            }
-        } else if (isFirstPage) {
-            if (pagePosition == EN_REST) {
-                return false;
-            } else if (pagePosition == EN_LAST) {
-                return false;
-            }
-        } else if (isLastPage) {
-            if (pagePosition == EN_REST) {
-                return false;
-            } else if (pagePosition == EN_FIRST) {
-                return false;
-            }
-        } else {
-            if (pagePosition == EN_FIRST) {
-                return false;
-            } else if (pagePosition == EN_LAST) {
-                return false;
-            }
-        }
-
-        // odd-or-even
-        if (isOddPage) {
-            if (oddOrEven == EN_EVEN) {
-              return false;
-            }
-        } else {
-            if (oddOrEven == EN_ODD) {
-              return false;
-            }
-        }
-
-        // blank-or-not-blank
-        if (isBlankPage) {
-            if (blankOrNotBlank == EN_NOT_BLANK) {
-                return false;
-            }
-        } else {
-            if (blankOrNotBlank == EN_BLANK) {
-                return false;
-            }
-        }
-        return true;
+
+        return (
+            // page-position
+            (pagePosition == EN_ANY
+                || (pagePosition == EN_FIRST && isFirstPage)
+                || (pagePosition == EN_LAST && isLastPage)
+                || (pagePosition == EN_ONLY && (isFirstPage && isLastPage))
+                || (pagePosition == EN_REST && !(isFirstPage || isLastPage))
+                )
+            // odd-or-even
+            && (oddOrEven == EN_ANY
+                || (oddOrEven == EN_ODD && isOddPage)
+                || (oddOrEven == EN_EVEN && !isOddPage)
+                )
+            // blank-or-not-blank
+            && (blankOrNotBlank == EN_ANY
+                || (blankOrNotBlank == EN_BLANK && isBlankPage)
+                || (blankOrNotBlank == EN_NOT_BLANK && !isBlankPage)
+                ));
+
+
     }
 
     /**

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequence.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequence.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequence.java 
(original)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequence.java 
Tue Sep 23 11:48:34 2008
@@ -127,19 +127,19 @@
     protected void validateChildNode(Locator loc, String nsURI, String 
localName)
                 throws ValidationException {
         if (FO_URI.equals(nsURI)) {
-            if (localName.equals("title")) {
+            if ("title".equals(localName)) {
                 if (titleFO != null) {
                     tooManyNodesError(loc, "fo:title");
-                } else if (flowMap.size() > 0) {
+                } else if (!flowMap.isEmpty()) {
                     nodesOutOfOrderError(loc, "fo:title", "fo:static-content");
                 } else if (mainFlow != null) {
                     nodesOutOfOrderError(loc, "fo:title", "fo:flow");
                 }
-            } else if (localName.equals("static-content")) {
+            } else if ("static-content".equals(localName)) {
                 if (mainFlow != null) {
                     nodesOutOfOrderError(loc, "fo:static-content", "fo:flow");
                 }
-            } else if (localName.equals("flow")) {
+            } else if ("flow".equals(localName)) {
                 if (mainFlow != null) {
                     tooManyNodesError(loc, "fo:flow");
                 }
@@ -157,15 +157,20 @@
     public void addChildNode(FONode child) throws FOPException {
         int childId = child.getNameId();
 
-        if (childId == FO_TITLE) {
-            this.titleFO = (Title) child;
-        } else if (childId == FO_FLOW) {
-            this.mainFlow = (Flow) child;
+        switch (childId) {
+        case FO_TITLE:
+            this.titleFO = (Title)child;
+            break;
+        case FO_FLOW:
+            this.mainFlow = (Flow)child;
             addFlow(mainFlow);
-        } else if (childId == FO_STATIC_CONTENT) {
-            addFlow((StaticContent) child);
-            String flowName = ((StaticContent) child).getFlowName();
-            flowMap.put(flowName, child);
+            break;
+        case FO_STATIC_CONTENT:
+            addFlow((StaticContent)child);
+            flowMap.put(((StaticContent)child).getFlowName(), child);
+            break;
+        default:
+            assert false;
         }
     }
 
@@ -245,17 +250,14 @@
      *      page sequence
      * @param isLastPage indicator whether this page is the last page of the
      *      page sequence
-     * @param isOnlyPage indicator whether this page is the only page of the
-     *      page sequence
      * @param isBlank indicator whether the page will be blank
      * @return the SimplePageMaster to use for this page
      * @throws PageProductionException if there's a problem determining the 
page master
      */
     public SimplePageMaster getNextSimplePageMaster(int page,
-            boolean isFirstPage,
-            boolean isLastPage,
-            boolean isOnlyPage,
-            boolean isBlank) throws PageProductionException {
+                                                    boolean isFirstPage,
+                                                    boolean isLastPage,
+                                                    boolean isBlank) throws 
PageProductionException {
 
         if (pageSequenceMaster == null) {
             return simplePageMaster;
@@ -266,11 +268,10 @@
                     + " isOdd=" + isOddPage
                     + " isFirst=" + isFirstPage
                     + " isLast=" + isLastPage
-                    + " isOnly=" + isOnlyPage
                     + " isBlank=" + isBlank + ")");
         }
         return pageSequenceMaster.getNextSimplePageMaster(isOddPage,
-            isFirstPage, isLastPage, isOnlyPage, isBlank);
+            isFirstPage, isLastPage, isBlank);
     }
 
     /**
@@ -278,29 +279,17 @@
      * @return true if there is a previous item, false if the current one was 
the first one.
      */
     public boolean goToPreviousSimplePageMaster() {
-        if (pageSequenceMaster == null) {
-            return true;
-        } else {
-            return pageSequenceMaster.goToPreviousSimplePageMaster();
-        }
+        return pageSequenceMaster == null || 
pageSequenceMaster.goToPreviousSimplePageMaster();
     }
 
     /** @return true if the page-sequence has a page-master with 
page-position="last" */
     public boolean hasPagePositionLast() {
-        if (pageSequenceMaster == null) {
-            return false;
-        } else {
-            return pageSequenceMaster.hasPagePositionLast();
-        }
+        return pageSequenceMaster != null && 
pageSequenceMaster.hasPagePositionLast();
     }
 
     /** @return true if the page-sequence has a page-master with 
page-position="only" */
     public boolean hasPagePositionOnly() {
-        if (pageSequenceMaster == null) {
-            return false;
-        } else {
-            return pageSequenceMaster.hasPagePositionOnly();
-        }
+        return pageSequenceMaster != null && 
pageSequenceMaster.hasPagePositionOnly();
     }
 
     /**

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequenceMaster.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequenceMaster.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequenceMaster.java
 (original)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/PageSequenceMaster.java
 Tue Sep 23 11:48:34 2008
@@ -177,7 +177,6 @@
      * @param isOddPage True if the next page number is odd
      * @param isFirstPage True if the next page is the first
      * @param isLastPage True if the next page is the last
-     * @param isOnlyPage True if the next page is the only page
      * @param isBlankPage True if the next page is blank
      * @return the requested page master
      * @throws PageProductionException if there's a problem determining the 
next page master
@@ -185,7 +184,6 @@
     public SimplePageMaster getNextSimplePageMaster(boolean isOddPage,
                                                     boolean isFirstPage,
                                                     boolean isLastPage,
-                                                    boolean isOnlyPage,
                                                     boolean isBlankPage)
                                                       throws 
PageProductionException {
         if (currentSubSequence == null) {
@@ -198,7 +196,7 @@
             }
         }
         String pageMasterName = currentSubSequence
-            .getNextPageMasterName(isOddPage, isFirstPage, isLastPage, 
isOnlyPage, isBlankPage);
+            .getNextPageMasterName(isOddPage, isFirstPage, isLastPage, 
isBlankPage);
         boolean canRecover = true;
         while (pageMasterName == null) {
             SubSequenceSpecifier nextSubSequence = getNextSubSequence();
@@ -213,7 +211,7 @@
                 currentSubSequence = nextSubSequence;
             }
             pageMasterName = currentSubSequence
-                .getNextPageMasterName(isOddPage, isFirstPage, isLastPage, 
isOnlyPage, isBlankPage);
+                .getNextPageMasterName(isOddPage, isFirstPage, isLastPage, 
isBlankPage);
         }
         SimplePageMaster pageMaster = this.layoutMasterSet
             .getSimplePageMaster(pageMasterName);

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
 (original)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/RepeatablePageMasterAlternatives.java
 Tue Sep 23 11:48:34 2008
@@ -117,7 +117,6 @@
     public String getNextPageMasterName(boolean isOddPage,
                                         boolean isFirstPage,
                                         boolean isLastPage,
-                                        boolean isOnlyPage,
                                         boolean isBlankPage) {
         if (getMaximumRepeats() != INFINITE) {
             if (numberConsumed < getMaximumRepeats()) {
@@ -132,7 +131,7 @@
         for (int i = 0; i < conditionalPageMasterRefs.size(); i++) {
             ConditionalPageMasterReference cpmr
                 = 
(ConditionalPageMasterReference)conditionalPageMasterRefs.get(i);
-            if (cpmr.isValid(isOddPage, isFirstPage, isLastPage, isOnlyPage, 
isBlankPage)) {
+            if (cpmr.isValid(isOddPage, isFirstPage, isLastPage, isBlankPage)) 
{
                 return cpmr.getMasterReference();
             }
         }

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SubSequenceSpecifier.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
 (original)
+++ 
xmlgraphics/fop/trunk/src/java/org/apache/fop/fo/pagination/SubSequenceSpecifier.java
 Tue Sep 23 11:48:34 2008
@@ -31,7 +31,6 @@
      * @param isOddPage True if the next page number is odd
      * @param isFirstPage True if the next page is the first
      * @param isLastPage True if the next page is the last
-     * @param isOnlyPage True if the next page is the only page
      * @param isBlankPage True if the next page is blank
      * @return the page master name
      * @throws PageProductionException if there's a problem determining the 
next page master
@@ -39,7 +38,6 @@
     String getNextPageMasterName(boolean isOddPage,
                                  boolean isFirstPage,
                                  boolean isLastPage,
-                                 boolean isOnlyPage,
                                  boolean isBlankPage)
                                     throws PageProductionException;
 

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageProvider.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageProvider.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageProvider.java 
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/layoutmgr/PageProvider.java 
Tue Sep 23 11:48:34 2008
@@ -234,13 +234,13 @@
             indexOfCachedLastPage = (isLastPage ? intIndex : -1);
         }
         if (replace) {
-            disardCacheStartingWith(intIndex);
+            discardCacheStartingWith(intIndex);
             page = cacheNextPage(index, isBlank, isLastPage);
         }
         return page;
     }
 
-    private void disardCacheStartingWith(int index) {
+    private void discardCacheStartingWith(int index) {
         while (index < cachedPages.size()) {
             this.cachedPages.remove(cachedPages.size() - 1);
             if (!pageSeq.goToPreviousSimplePageMaster()) {
@@ -251,8 +251,9 @@
 
     private Page cacheNextPage(int index, boolean isBlank, boolean isLastPage) 
{
         String pageNumberString = pageSeq.makeFormattedPageNumber(index);
+        boolean isFirstPage = (startPageOfPageSequence == index);
         SimplePageMaster spm = pageSeq.getNextSimplePageMaster(
-                index, (startPageOfPageSequence == index), isLastPage, false, 
isBlank);
+                index, isFirstPage, isLastPage, isBlank);
 
         Region body = spm.getRegion(FO_REGION_BODY);
         if (!pageSeq.getMainFlow().getFlowName().equals(body.getRegionName())) 
{

Modified: 
xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java 
(original)
+++ xmlgraphics/fop/trunk/src/java/org/apache/fop/render/rtf/RTFHandler.java 
Tue Sep 23 11:48:34 2008
@@ -222,7 +222,7 @@
                     PageSequenceMaster master
                         = 
pageSeq.getRoot().getLayoutMasterSet().getPageSequenceMaster(reference);
                     this.pagemaster = master.getNextSimplePageMaster(
-                            false, false, false, false, false);
+                            false, false, false, false);
                 }
             }
 

Modified: xmlgraphics/fop/trunk/status.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/status.xml?rev=698280&r1=698279&r2=698280&view=diff
==============================================================================
--- xmlgraphics/fop/trunk/status.xml (original)
+++ xmlgraphics/fop/trunk/status.xml Tue Sep 23 11:48:34 2008
@@ -53,6 +53,11 @@
 
   <changes>
     <release version="FOP Trunk" date="TBD">
+      <action context="Layout" dev="AD" type="fix" fixes-bug="40798">
+        Bugzilla 40798: A conditional-page-master-reference with 
page-position="last" qualifies
+        for a first page, if it is also the last. Additionally: also added 
support for
+        page-position="only".
+      </action>
       <action context="Code" dev="AD" type="fix" fixes-bug="45842" 
due-to="Carsten Siedentop">
         Make fop.bat and fop.cmd use the %FOP_OPTS% environment variable.
       </action>

Added: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_last_bug40798.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_last_bug40798.xml?rev=698280&view=auto
==============================================================================
--- 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_last_bug40798.xml
 (added)
+++ 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_last_bug40798.xml
 Tue Sep 23 11:48:34 2008
@@ -0,0 +1,118 @@
+<?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 for the use of a 'last' 
conditional-page-master-reference 
+      for a first/only page (see: 
https://issues.apache.org/bugzilla/show_bug.cgi?id=40798)
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";
+           font-family="Times" font-size="20pt">
+    
+       <fo:layout-master-set>
+         <fo:simple-page-master master-name="only-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="only-region" extent="10mm"/>
+         </fo:simple-page-master>
+         <fo:simple-page-master master-name="first-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="first-region" extent="10mm"/>
+         </fo:simple-page-master>
+         <fo:simple-page-master master-name="last-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="last-region" extent="10mm"/>
+         </fo:simple-page-master>
+         <fo:simple-page-master master-name="rest-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="rest-region" extent="10mm"/>
+         </fo:simple-page-master>
+    
+       <fo:page-sequence-master master-name="whatever">
+         <fo:repeatable-page-master-alternatives maximum-repeats="1">
+           <fo:conditional-page-master-reference 
master-reference="only-page-layout"
+                                              page-position="last"/>
+           <fo:conditional-page-master-reference 
master-reference="first-page-layout"
+                                              page-position="first"/>
+         </fo:repeatable-page-master-alternatives>
+         <fo:repeatable-page-master-alternatives maximum-repeats="no-limit">
+           <fo:conditional-page-master-reference 
master-reference="last-page-layout"
+                                              page-position="last"/>
+           <fo:conditional-page-master-reference 
master-reference="rest-page-layout"
+                                              page-position="rest"/>
+         </fo:repeatable-page-master-alternatives>
+       </fo:page-sequence-master>
+    
+       </fo:layout-master-set>
+    
+       <fo:page-sequence master-reference="whatever">
+         <fo:static-content flow-name="first-region">
+           <fo:block id="header.first.1" text-align="center">first</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="only-region">
+           <fo:block id="header.only.1" text-align="center">only</fo:block>
+         </fo:static-content>
+         <fo:flow flow-name="frame-body">
+           <fo:block>This is the only page</fo:block>
+         </fo:flow>
+       </fo:page-sequence>
+       <fo:page-sequence master-reference="whatever">
+         <fo:static-content flow-name="only-region">
+           <fo:block id="header.only.2" text-align="center">only</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="first-region">
+           <fo:block id="header.first.2" text-align="center">first</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="last-region">
+           <fo:block id="header.last.2" text-align="center">last</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="rest-region">
+           <fo:block id="header.rest.2" text-align="center">rest</fo:block>
+         </fo:static-content>
+         <fo:flow flow-name="frame-body">
+           <fo:block>This is the first page</fo:block>
+           <fo:block break-before="page">This is a middle page</fo:block>
+           <fo:block break-before="page">This is a middle page</fo:block>
+           <fo:block break-before="page">This is the last page</fo:block>
+         </fo:flow>
+       </fo:page-sequence>
+      
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="header.only.1" 
xpath="(/areaTree/pageSequence[1]//regionBefore)[1]/block[1]/@prod-id" />
+    <eval expected="header.first.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[1]/block[1]/@prod-id" />
+    <eval expected="header.rest.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[2]/block[1]/@prod-id" />
+    <eval expected="header.rest.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[3]/block[1]/@prod-id" />
+    <eval expected="header.last.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[4]/block[1]/@prod-id" />
+  </checks>
+</testcase>

Propchange: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_last_bug40798.xml
------------------------------------------------------------------------------
    svn:keywords = Id

Added: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_only.xml
URL: 
http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_only.xml?rev=698280&view=auto
==============================================================================
--- 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_only.xml
 (added)
+++ 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_only.xml
 Tue Sep 23 11:48:34 2008
@@ -0,0 +1,115 @@
+<?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 for the use of an 'only' 
conditional-page-master-reference (XSL 1.1)
+    </p>
+  </info>
+  <fo>
+    <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format";
+           font-family="Times" font-size="20pt">
+    
+       <fo:layout-master-set>
+         <fo:simple-page-master master-name="only-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="only-region" extent="10mm"/>
+         </fo:simple-page-master>
+         <fo:simple-page-master master-name="first-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="first-region" extent="10mm"/>
+         </fo:simple-page-master>
+         <fo:simple-page-master master-name="last-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="last-region" extent="10mm"/>
+         </fo:simple-page-master>
+         <fo:simple-page-master master-name="rest-page-layout"
+                             page-height="297mm" page-width="210mm"
+                             margin-top="15mm" margin-bottom="15mm"
+                             margin-left="15mm" margin-right="15mm">
+           <fo:region-body region-name="frame-body" margin-top="10mm"/>
+           <fo:region-before region-name="rest-region" extent="10mm"/>
+         </fo:simple-page-master>
+    
+       <fo:page-sequence-master master-name="whatever">
+         <fo:repeatable-page-master-alternatives maximum-repeats="no-limit">
+           <fo:conditional-page-master-reference 
master-reference="only-page-layout"
+                                              page-position="only"/>
+           <fo:conditional-page-master-reference 
master-reference="first-page-layout"
+                                              page-position="first"/>
+           <fo:conditional-page-master-reference 
master-reference="last-page-layout"
+                                              page-position="last"/>
+           <fo:conditional-page-master-reference 
master-reference="rest-page-layout"
+                                              page-position="rest"/>
+         </fo:repeatable-page-master-alternatives>
+       </fo:page-sequence-master>
+    
+       </fo:layout-master-set>
+    
+       <fo:page-sequence master-reference="whatever">
+         <fo:static-content flow-name="first-region">
+           <fo:block id="header.first.1" text-align="center">first</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="only-region">
+           <fo:block id="header.only.1" text-align="center">only</fo:block>
+         </fo:static-content>
+         <fo:flow flow-name="frame-body">
+           <fo:block>This is the only page</fo:block>
+         </fo:flow>
+       </fo:page-sequence>
+       <fo:page-sequence master-reference="whatever">
+         <fo:static-content flow-name="only-region">
+           <fo:block id="header.only.2" text-align="center">only</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="first-region">
+           <fo:block id="header.first.2" text-align="center">first</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="last-region">
+           <fo:block id="header.last.2" text-align="center">last</fo:block>
+         </fo:static-content>
+         <fo:static-content flow-name="rest-region">
+           <fo:block id="header.rest.2" text-align="center">rest</fo:block>
+         </fo:static-content>
+         <fo:flow flow-name="frame-body">
+           <fo:block>This is the first page</fo:block>
+           <fo:block break-before="page">This is a middle page</fo:block>
+           <fo:block break-before="page">This is a middle page</fo:block>
+           <fo:block break-before="page">This is the last page</fo:block>
+         </fo:flow>
+       </fo:page-sequence>
+      
+    </fo:root>
+  </fo>
+  <checks>
+    <eval expected="header.only.1" 
xpath="(/areaTree/pageSequence[1]//regionBefore)[1]/block[1]/@prod-id" />
+    <eval expected="header.first.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[1]/block[1]/@prod-id" />
+    <eval expected="header.rest.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[2]/block[1]/@prod-id" />
+    <eval expected="header.rest.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[3]/block[1]/@prod-id" />
+    <eval expected="header.last.2" 
xpath="(/areaTree/pageSequence[2]//regionBefore)[4]/block[1]/@prod-id" />
+  </checks>
+</testcase>

Propchange: 
xmlgraphics/fop/trunk/test/layoutengine/standard-testcases/page-position_only.xml
------------------------------------------------------------------------------
    svn:keywords = Id



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to