You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by jm...@apache.org on 2017/11/11 14:18:24 UTC

svn commit: r1814950 - in /poi: site/src/documentation/content/xdocs/ trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/ trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/ trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/ trunk/src/...

Author: jmarkmurphy
Date: Sat Nov 11 14:18:24 2017
New Revision: 1814950

URL: http://svn.apache.org/viewvc?rev=1814950&view=rev
Log:
Surface XSSF Header/Footer Attributes (60887)

Added:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java   (with props)
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java   (with props)
Removed:
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooter.java
Modified:
    poi/site/src/documentation/content/xdocs/status.xml
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenFooter.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenHeader.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddFooter.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

Modified: poi/site/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/site/src/documentation/content/xdocs/status.xml?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/site/src/documentation/content/xdocs/status.xml (original)
+++ poi/site/src/documentation/content/xdocs/status.xml Sat Nov 11 14:18:24 2017
@@ -66,6 +66,7 @@
         <summary-item>Removal of deprecated classes and methods that were marked for removal in v3.18</summary-item>
       </summary>
       <actions>
+        <action dev="PD" type="add" fixes-bug="60887" module="XSSF">Surface XSSF Header/Footer Attributes</action>
         <action dev="PD" type="add" fixes-bug="61730" module="SS Common">CellRangeAddresses support iterating over their CellAddresses</action>
         <action dev="PD" type="fix" fixes-bug="61727" module="SS Common">CellRangeUtil merge cell ranges broken for certain orders of arguments</action>
         <action dev="PD" type="add" fixes-bug="61671" module="XSLF">XSLFSlide does not contain isHidden and setHidden like HSLFSlide does</action>

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenFooter.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenFooter.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenFooter.java Sat Nov 11 14:18:24 2017
@@ -36,7 +36,7 @@ public class XSSFEvenFooter extends XSSF
      * @see XSSFSheet#getEvenFooter()
      * @param headerFooter
      */
-    public XSSFEvenFooter(CTHeaderFooter headerFooter) {
+    protected XSSFEvenFooter(CTHeaderFooter headerFooter) {
         super(headerFooter);
         headerFooter.setDifferentOddEven(true);
     }
@@ -57,6 +57,9 @@ public class XSSFEvenFooter extends XSSF
     public void setText(String text) {
     	if(text == null) {
     		getHeaderFooter().unsetEvenFooter();
+    		if (!getHeaderFooter().isSetEvenHeader()) {
+    		    getHeaderFooter().unsetDifferentOddEven();
+    		}
     	} else {
     		getHeaderFooter().setEvenFooter(text);
     	}

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenHeader.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenHeader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFEvenHeader.java Sat Nov 11 14:18:24 2017
@@ -23,45 +23,52 @@ import org.openxmlformats.schemas.spread
 
 /**
  * <p>
- * Even page header value. Corresponds to even printed pages.
- * Even page(s) in the sheet may not be printed, for example, if the print area is specified to be 
- * a range such that it falls outside an even page's scope.
- * If no even header is specified, then odd header value is assumed for even page headers.
- *</p>
+ * Even page header value. Corresponds to even printed pages. Even page(s) in
+ * the sheet may not be printed, for example, if the print area is specified to
+ * be a range such that it falls outside an even page's scope. If no even header
+ * is specified, then odd header value is assumed for even page headers.
+ * </p>
  *
  */
-public class XSSFEvenHeader extends XSSFHeaderFooter implements Header{
+public class XSSFEvenHeader extends XSSFHeaderFooter implements Header {
 
     /**
      * Create an instance of XSSFEvenHeader from the supplied XML bean
+     * 
      * @see XSSFSheet#getEvenHeader()
      * @param headerFooter
      */
-    public XSSFEvenHeader(CTHeaderFooter headerFooter) {
-	super(headerFooter);
-	headerFooter.setDifferentOddEven(true);
+    protected XSSFEvenHeader(CTHeaderFooter headerFooter) {
+        super(headerFooter);
+        headerFooter.setDifferentOddEven(true);
     }
 
     /**
      * Get the content text representing this header
+     * 
      * @return text
      */
     public String getText() {
-	return getHeaderFooter().getEvenHeader();
+        return getHeaderFooter().getEvenHeader();
     }
 
     /**
      * Set a text for the header. If null unset the value
-     * @see XSSFHeaderFooter to see how to create a string with Header/Footer Formatting Syntax
-     * @param text - a string representing the header. 
+     * 
+     * @see XSSFHeaderFooter to see how to create a string with Header/Footer
+     *      Formatting Syntax
+     * @param text
+     *            - a string representing the header.
      */
     public void setText(String text) {
-	if(text == null) {
-	    getHeaderFooter().unsetEvenHeader();
-	} else {
-	    getHeaderFooter().setEvenHeader(text);
-	}
+        if (text == null) {
+            getHeaderFooter().unsetEvenHeader();
+            if (!getHeaderFooter().isSetEvenFooter()) {
+                getHeaderFooter().unsetDifferentOddEven();
+            }
+        } else {
+            getHeaderFooter().setEvenHeader(text);
+        }
     }
 
-    
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstFooter.java Sat Nov 11 14:18:24 2017
@@ -56,6 +56,9 @@ public class XSSFFirstFooter extends XSS
     public void setText(String text) {
     	if(text == null) {
     		getHeaderFooter().unsetFirstFooter();
+    		if (!getHeaderFooter().isSetFirstHeader()) {
+    		    getHeaderFooter().unsetDifferentFirst();
+    		}
     	} else {
     		getHeaderFooter().setFirstFooter(text);
     	}

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFirstHeader.java Sat Nov 11 14:18:24 2017
@@ -56,6 +56,9 @@ public class XSSFFirstHeader extends XSS
     public void setText(String text) {
     	if(text == null) {
     		getHeaderFooter().unsetFirstHeader();
+    		if (!getHeaderFooter().isSetFirstFooter()) {
+    		    getHeaderFooter().unsetDifferentFirst();
+    		}
     	} else {
     		getHeaderFooter().setFirstHeader(text);
     	}

Added: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java (added)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,138 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import org.apache.poi.util.Internal;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
+
+/**
+ */
+public class XSSFHeaderFooterProperties {
+	private CTHeaderFooter headerFooter;
+
+	/**
+	 * Create an instance of XSSFAbstractHeaderFooter from the supplied XML bean
+	 *
+	 * @param headerFooter
+	 */
+	public XSSFHeaderFooterProperties(CTHeaderFooter headerFooter) {
+        this.headerFooter = headerFooter;
+	}
+
+	/**
+	 * Returns the underlying CTHeaderFooter xml bean
+	 *
+	 * @return the underlying CTHeaderFooter xml bean
+	 */
+    @Internal
+	public CTHeaderFooter getHeaderFooter() {
+		return this.headerFooter;
+	}
+
+    /**
+	 * returns alignWithMargins attribute
+	 */
+	public boolean getAlignWithMargins() {
+	  return getHeaderFooter().isSetAlignWithMargins() ? getHeaderFooter().getAlignWithMargins() : false;
+	}
+	
+	/**
+	 * returns differentFirst attribute
+	 */
+	public boolean getDifferentFirst() {
+	    return getHeaderFooter().isSetDifferentFirst() ? getHeaderFooter().getDifferentFirst() : false;
+	}
+	
+	/**
+	 * returns differentOddEven attribute
+	 */
+	public boolean getDifferentOddEven() {
+	    return getHeaderFooter().isSetDifferentOddEven() ? getHeaderFooter().getDifferentOddEven() : false;
+	}
+	
+	/**
+	 * returns scaleWithDoc attribute
+	 */
+	public boolean getScaleWithDoc() {
+	    return getHeaderFooter().isSetScaleWithDoc() ? getHeaderFooter().getScaleWithDoc() : false;
+	}
+	
+	/**
+	 * set alignWithMargins attribute
+	 */
+	public void setAlignWithMargins(boolean flag) {
+	    getHeaderFooter().setAlignWithMargins(flag);
+	}
+	   
+    /**
+     * set differentFirst attribute
+     */
+	public void setDifferentFirst(boolean flag) {
+        getHeaderFooter().setDifferentFirst(flag);
+    }
+    
+    /**
+     * set differentOddEven attribute
+     */
+	public void setDifferentOddEven(boolean flag) {
+        getHeaderFooter().setDifferentOddEven(flag);
+    }
+    
+    /**
+     * set scaleWithDoc attribute
+     */
+	public void setScaleWithDoc(boolean flag) {
+        getHeaderFooter().setScaleWithDoc(flag);
+    }
+    
+    /**
+     * remove alignWithMargins attribute
+     */
+	public void removeAlignWithMargins() {
+        if (getHeaderFooter().isSetAlignWithMargins()) {
+            getHeaderFooter().unsetAlignWithMargins();
+        }
+    }
+       
+    /**
+     * remove differentFirst attribute
+     */
+	public void removeDifferentFirst() {
+        if (getHeaderFooter().isSetDifferentFirst()) {
+            getHeaderFooter().unsetDifferentFirst();
+        }
+    }
+    
+    /**
+     * remove differentOddEven attribute
+     */
+	public void removeDifferentOddEven() {
+        if (getHeaderFooter().isSetDifferentOddEven()) {
+            getHeaderFooter().unsetDifferentOddEven();
+        }
+    }
+    
+    /**
+     * remove scaleWithDoc attribute
+     */
+	public void removeScaleWithDoc() {
+        if (getHeaderFooter().isSetScaleWithDoc()) {
+            getHeaderFooter().unsetScaleWithDoc();
+        }
+    }
+}

Propchange: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFHeaderFooterProperties.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddFooter.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddFooter.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFOddFooter.java Sat Nov 11 14:18:24 2017
@@ -34,7 +34,7 @@ public class XSSFOddFooter extends XSSFH
      * @see XSSFSheet#getOddFooter()
      * @param headerFooter
      */
-    public XSSFOddFooter(CTHeaderFooter headerFooter) {
+    protected XSSFOddFooter(CTHeaderFooter headerFooter) {
         super(headerFooter);
     }
     

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Sat Nov 11 14:18:24 2017
@@ -4514,5 +4514,7 @@ public class XSSFSheet extends POIXMLDoc
         }
     }
 
-
+    public XSSFHeaderFooterProperties getHeaderFooterProperties() {
+        return new XSSFHeaderFooterProperties(getSheetTypeHeaderFooter());
+    }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFHeaderFooter.java Sat Nov 11 14:18:24 2017
@@ -125,14 +125,14 @@ public abstract class XSSFHeaderFooter i
 	private CTHeaderFooter headerFooter;
 
 	private boolean stripFields;
-
+	
 	/**
-	 * Create an instance of XSSFHeaderFooter from the supplied XML bean
+	 * Create an instance of XSSFAbstractHeaderFooter from the supplied XML bean
 	 *
 	 * @param headerFooter
 	 */
 	public XSSFHeaderFooter(CTHeaderFooter headerFooter) {
-		this.headerFooter = headerFooter;
+        this.headerFooter = headerFooter;
 		this.helper = new HeaderFooterHelper();
 	}
 

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java Sat Nov 11 14:18:24 2017
@@ -42,7 +42,7 @@ import org.junit.runners.Suite;
     TestXSSFDrawing.class,
     TestXSSFFont.class,
     TestXSSFFormulaEvaluation.class,
-    TestXSSFHeaderFooter.class,
+    //TestXSSFHeaderFooter.class, //converted to junit4
     TestXSSFHyperlink.class,
     TestXSSFName.class,
     TestXSSFPicture.class,

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,50 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFEvenFooter {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testSetGetText() {
+        XSSFEvenFooter footer = (XSSFEvenFooter) sheet.getEvenFooter();
+        assertNotNull(footer);
+        assertNull(footer.getText());
+        footer.setText("this is a test");
+        assertEquals("this is a test", footer.getText());
+    }
+}
\ No newline at end of file

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenFooter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,50 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFEvenHeader {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testSetGetText() {
+        XSSFEvenHeader header = (XSSFEvenHeader) sheet.getEvenHeader();
+        assertNotNull(header);
+        assertNull(header.getText());
+        header.setText("this is a test");
+        assertEquals("this is a test", header.getText());
+    }
+}
\ No newline at end of file

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFEvenHeader.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,50 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFFirstFooter {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testSetGetText() {
+        XSSFFirstFooter footer = (XSSFFirstFooter) sheet.getFirstFooter();
+        assertNotNull(footer);
+        assertNull(footer.getText());
+        footer.setText("this is a test");
+        assertEquals("this is a test", footer.getText());
+    }
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstFooter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,50 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFFirstHeader {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testSetGetText() {
+        XSSFFirstHeader header = (XSSFFirstHeader) sheet.getFirstHeader();
+        assertNotNull(header);
+        assertNull(header.getText());
+        header.setText("this is a test");
+        assertEquals("this is a test", header.getText());
+    }
+}
\ No newline at end of file

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFFirstHeader.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,109 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFHeaderFooterProperties {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    private XSSFHeaderFooterProperties hfProp;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+        hfProp = sheet.getHeaderFooterProperties();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testGetAlignWithMargins() {
+        assertFalse(hfProp.getAlignWithMargins());
+        hfProp.setAlignWithMargins(true);
+        assertTrue(hfProp.getAlignWithMargins());
+    }
+
+    @Test
+    public void testGetDifferentFirst() {
+        assertFalse(hfProp.getDifferentFirst());
+        hfProp.setDifferentFirst(true);
+        assertTrue(hfProp.getDifferentFirst());
+        hfProp.setDifferentFirst(false);
+        assertFalse(hfProp.getDifferentFirst());
+    }
+
+    @Test
+    public void testGetDifferentOddEven() {
+        assertFalse(hfProp.getDifferentOddEven());
+        hfProp.setDifferentOddEven(true);
+        assertTrue(hfProp.getDifferentOddEven());
+        hfProp.setDifferentOddEven(false);
+        assertFalse(hfProp.getDifferentOddEven());
+    }
+
+    @Test
+    public void testGetScaleWithDoc() {
+        assertFalse(hfProp.getScaleWithDoc());
+        hfProp.setScaleWithDoc(true);
+        assertTrue(hfProp.getScaleWithDoc());
+    }
+
+    @Test
+    public void testRemoveAlignWithMargins() {
+        hfProp.setAlignWithMargins(true);
+        assertTrue(hfProp.getHeaderFooter().isSetAlignWithMargins());
+        hfProp.removeAlignWithMargins();
+        assertFalse(hfProp.getHeaderFooter().isSetAlignWithMargins());
+    }
+
+    @Test
+    public void testRemoveDifferentFirst() {
+        hfProp.setDifferentFirst(true);
+        assertTrue(hfProp.getHeaderFooter().isSetDifferentFirst());
+        hfProp.removeDifferentFirst();
+        assertFalse(hfProp.getHeaderFooter().isSetDifferentFirst());
+    }
+
+    @Test
+    public void testRemoveDifferentOddEven() {
+        hfProp.setDifferentOddEven(true);
+        assertTrue(hfProp.getHeaderFooter().isSetDifferentOddEven());
+        hfProp.removeDifferentOddEven();
+        assertFalse(hfProp.getHeaderFooter().isSetDifferentOddEven());
+    }
+
+    @Test
+    public void testRemoveScaleWithDoc() {
+        hfProp.setScaleWithDoc(true);
+        assertTrue(hfProp.getHeaderFooter().isSetScaleWithDoc());
+        hfProp.removeScaleWithDoc();
+        assertFalse(hfProp.getHeaderFooter().isSetScaleWithDoc());
+    }
+
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHeaderFooterProperties.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,50 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFOddFooter {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testSetGetText() {
+        XSSFOddFooter footer = (XSSFOddFooter) sheet.getOddFooter();
+        assertNotNull(footer);
+        assertNull(footer.getText());
+        footer.setText("this is a test");
+        assertEquals("this is a test", footer.getText());
+    }
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddFooter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,50 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestXSSFOddHeader {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testSetGetText() {
+        XSSFOddHeader header = (XSSFOddHeader) sheet.getOddHeader();
+        assertNotNull(header);
+        assertNull(header.getText());
+        header.setText("this is a test");
+        assertEquals("this is a test", header.getText());
+    }
+}
\ No newline at end of file

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFOddHeader.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1814950&r1=1814949&r2=1814950&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java Sat Nov 11 14:18:24 2017
@@ -1990,4 +1990,15 @@ public final class TestXSSFSheet extends
         
         assertEquals("There should not be any comments left!",  0, sheet.getCellComments().size());
     }
+    
+    @Test
+    public void testGetHeaderFooterProperties() throws IOException {
+         XSSFWorkbook wb = new XSSFWorkbook();
+         XSSFSheet sh = wb.createSheet();
+         
+         XSSFHeaderFooterProperties hfProp = sh.getHeaderFooterProperties();
+         assertNotNull(hfProp);
+         
+         wb.close();
+    }
 }

Added: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java?rev=1814950&view=auto
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java (added)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java Sat Nov 11 14:18:24 2017
@@ -0,0 +1,317 @@
+/* ====================================================================
+   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.
+==================================================================== */
+
+package org.apache.poi.xssf.usermodel.extensions;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.apache.poi.xssf.usermodel.XSSFOddHeader;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
+
+public class TestXSSFHeaderFooter {
+    
+    private XSSFWorkbook wb;
+    private XSSFSheet sheet;
+    private XSSFHeaderFooter hO;
+    private XSSFHeaderFooter hE;
+    private XSSFHeaderFooter hF;
+    private XSSFHeaderFooter fO;
+    private XSSFHeaderFooter fE;
+    private XSSFHeaderFooter fF;
+    
+    @Before
+    public void before() {
+        wb = new XSSFWorkbook();
+        sheet = wb.createSheet();
+        hO = (XSSFHeaderFooter) sheet.getOddHeader();
+        hE = (XSSFHeaderFooter) sheet.getEvenHeader();
+        hF = (XSSFHeaderFooter) sheet.getFirstHeader();
+        fO = (XSSFHeaderFooter) sheet.getOddFooter();
+        fE = (XSSFHeaderFooter) sheet.getEvenFooter();
+        fF = (XSSFHeaderFooter) sheet.getFirstFooter();
+    }
+    
+    @After
+    public void after() throws Exception {
+        wb.close();
+    }
+
+    @Test
+    public void testGetHeaderFooter() {
+        CTHeaderFooter ctHf; 
+        ctHf = hO.getHeaderFooter();
+        assertNotNull(ctHf);
+        ctHf = hE.getHeaderFooter();
+        assertNotNull(ctHf);
+        ctHf = hF.getHeaderFooter();
+        assertNotNull(ctHf);
+        ctHf = fO.getHeaderFooter();
+        assertNotNull(ctHf);
+        ctHf = fE.getHeaderFooter();
+        assertNotNull(ctHf);
+        ctHf = fF.getHeaderFooter();
+        assertNotNull(ctHf);
+    }
+
+    @Test
+    public void testGetValue() {
+        assertEquals("", hO.getValue());
+        assertEquals("", hE.getValue());
+        assertEquals("", hF.getValue());
+        assertEquals("", fO.getValue());
+        assertEquals("", fE.getValue());
+        assertEquals("", fF.getValue());
+        hO.setLeft("Left value");
+        hO.setCenter("Center value");
+        hO.setRight("Right value");
+        hE.setLeft("LeftEvalue");
+        hE.setCenter("CenterEvalue");
+        hE.setRight("RightEvalue");
+        hF.setLeft("LeftFvalue");
+        hF.setCenter("CenterFvalue");
+        hF.setRight("RightFvalue");
+        assertEquals("&CCenter value&LLeft value&RRight value", hO.getValue());
+        assertEquals("&CCenterEvalue&LLeftEvalue&RRightEvalue", hE.getValue());
+        assertEquals("&CCenterFvalue&LLeftFvalue&RRightFvalue", hF.getValue());
+        fO.setLeft("Left value1");
+        fO.setCenter("Center value1");
+        fO.setRight("Right value1");
+        fE.setLeft("LeftEvalue1");
+        fE.setCenter("CenterEvalue1");
+        fE.setRight("RightEvalue1");
+        fF.setLeft("LeftFvalue1");
+        fF.setCenter("CenterFvalue1");
+        fF.setRight("RightFvalue1");
+        assertEquals("&CCenter value1&LLeft value1&RRight value1", fO.getValue());
+        assertEquals("&CCenterEvalue1&LLeftEvalue1&RRightEvalue1", fE.getValue());
+        assertEquals("&CCenterFvalue1&LLeftFvalue1&RRightFvalue1", fF.getValue());
+    }
+
+    @Ignore("Test not yet created")
+    public void testAreFieldsStripped() {
+        fail("Not yet implemented");
+    }
+
+    @Ignore("Test not yet created")
+    public void testSetAreFieldsStripped() {
+        fail("Not yet implemented");
+    }
+
+    @Test
+    public void testStripFields() {
+        String simple = "I am a test header";
+        String withPage = "I am a&P test header";
+        String withLots = "I&A am&N a&P test&T header&U";
+        String withFont = "I&22 am a&\"Arial,bold\" test header";
+        String withOtherAnds = "I am a&P test header&&";
+        String withOtherAnds2 = "I am a&P test header&a&b";
+        
+        assertEquals(simple, XSSFOddHeader.stripFields(simple));
+        assertEquals(simple, XSSFOddHeader.stripFields(withPage));
+        assertEquals(simple, XSSFOddHeader.stripFields(withLots));
+        assertEquals(simple, XSSFOddHeader.stripFields(withFont));
+        assertEquals(simple + "&&", XSSFOddHeader.stripFields(withOtherAnds));
+        assertEquals(simple + "&a&b", XSSFOddHeader.stripFields(withOtherAnds2));
+        
+        // Now test the default strip flag
+        hE.setCenter("Center");
+        hE.setLeft("In the left");
+    
+        assertEquals("In the left", hE.getLeft());
+        assertEquals("Center", hE.getCenter());
+        assertEquals("", hE.getRight());
+        
+        hE.setLeft("Top &P&F&D Left");
+        assertEquals("Top &P&F&D Left", hE.getLeft());
+        assertFalse(hE.areFieldsStripped());
+        
+        hE.setAreFieldsStripped(true);
+        assertEquals("Top  Left", hE.getLeft());
+        assertTrue(hE.areFieldsStripped());
+        
+        // Now even more complex
+        hE.setCenter("HEADER TEXT &P&N&D&T&Z&F&F&A&V");
+        assertEquals("HEADER TEXT &V", hE.getCenter());
+    }
+
+    @Test
+    public void testGetCenter() {
+        assertEquals("", hO.getCenter());
+        assertEquals("", hE.getCenter());
+        assertEquals("", hF.getCenter());
+        assertEquals("", fO.getCenter());
+        assertEquals("", fE.getCenter());
+        assertEquals("", fF.getCenter());
+        hO.setCenter("Center value");
+        hE.setCenter("CenterEvalue");
+        hF.setCenter("CenterFvalue");
+        assertEquals("Center value", hO.getCenter());
+        assertEquals("CenterEvalue", hE.getCenter());
+        assertEquals("CenterFvalue", hF.getCenter());
+        fO.setCenter("Center value1");
+        fE.setCenter("CenterEvalue1");
+        fF.setCenter("CenterFvalue1");
+        assertEquals("Center value1", fO.getCenter());
+        assertEquals("CenterEvalue1", fE.getCenter());
+        assertEquals("CenterFvalue1", fF.getCenter());
+    }
+
+    @Test
+    public void testGetLeft() {
+        assertEquals("", hO.getLeft());
+        assertEquals("", hE.getLeft());
+        assertEquals("", hF.getLeft());
+        assertEquals("", fO.getLeft());
+        assertEquals("", fE.getLeft());
+        assertEquals("", fF.getLeft());
+        hO.setLeft("Left value");
+        hE.setLeft("LeftEvalue");
+        hF.setLeft("LeftFvalue");
+        assertEquals("Left value", hO.getLeft());
+        assertEquals("LeftEvalue", hE.getLeft());
+        assertEquals("LeftFvalue", hF.getLeft());
+        fO.setLeft("Left value1");
+        fE.setLeft("LeftEvalue1");
+        fF.setLeft("LeftFvalue1");
+        assertEquals("Left value1", fO.getLeft());
+        assertEquals("LeftEvalue1", fE.getLeft());
+        assertEquals("LeftFvalue1", fF.getLeft());
+    }
+
+    @Test
+    public void testGetRight() {
+        assertEquals("", hO.getValue());
+        assertEquals("", hE.getValue());
+        assertEquals("", hF.getValue());
+        assertEquals("", fO.getValue());
+        assertEquals("", fE.getValue());
+        assertEquals("", fF.getValue());
+        hO.setRight("Right value");
+        hE.setRight("RightEvalue");
+        hF.setRight("RightFvalue");
+        assertEquals("Right value", hO.getRight());
+        assertEquals("RightEvalue", hE.getRight());
+        assertEquals("RightFvalue", hF.getRight());
+        fO.setRight("Right value1");
+        fE.setRight("RightEvalue1");
+        fF.setRight("RightFvalue1");
+        assertEquals("Right value1", fO.getRight());
+        assertEquals("RightEvalue1", fE.getRight());
+        assertEquals("RightFvalue1", fF.getRight());
+    }
+
+    @Test
+    public void testSetCenter() {
+        assertEquals("", hO.getValue());
+        assertEquals("", hE.getValue());
+        assertEquals("", hF.getValue());
+        assertEquals("", fO.getValue());
+        assertEquals("", fE.getValue());
+        assertEquals("", fF.getValue());
+        hO.setCenter("Center value");
+        hE.setCenter("CenterEvalue");
+        hF.setCenter("CenterFvalue");
+        assertEquals("&CCenter value", hO.getValue());
+        assertEquals("&CCenterEvalue", hE.getValue());
+        assertEquals("&CCenterFvalue", hF.getValue());
+        fO.setCenter("Center value1");
+        fE.setCenter("CenterEvalue1");
+        fF.setCenter("CenterFvalue1");
+        assertEquals("&CCenter value1", fO.getValue());
+        assertEquals("&CCenterEvalue1", fE.getValue());
+        assertEquals("&CCenterFvalue1", fF.getValue());
+    }
+
+    @Test
+    public void testSetLeft() {
+        assertEquals("", hO.getValue());
+        assertEquals("", hE.getValue());
+        assertEquals("", hF.getValue());
+        assertEquals("", fO.getValue());
+        assertEquals("", fE.getValue());
+        assertEquals("", fF.getValue());
+        hO.setLeft("Left value");
+        hE.setLeft("LeftEvalue");
+        hF.setLeft("LeftFvalue");
+        assertEquals("&LLeft value", hO.getValue());
+        assertEquals("&LLeftEvalue", hE.getValue());
+        assertEquals("&LLeftFvalue", hF.getValue());
+        fO.setLeft("Left value1");
+        fE.setLeft("LeftEvalue1");
+        fF.setLeft("LeftFvalue1");
+        assertEquals("&LLeft value1", fO.getValue());
+        assertEquals("&LLeftEvalue1", fE.getValue());
+        assertEquals("&LLeftFvalue1", fF.getValue());
+    }
+
+    @Test
+    public void testSetRight() {
+        assertEquals("", hO.getValue());
+        assertEquals("", hE.getValue());
+        assertEquals("", hF.getValue());
+        assertEquals("", fO.getValue());
+        assertEquals("", fE.getValue());
+        assertEquals("", fF.getValue());
+        hO.setRight("Right value");
+        hE.setRight("RightEvalue");
+        hF.setRight("RightFvalue");
+        assertEquals("&RRight value", hO.getValue());
+        assertEquals("&RRightEvalue", hE.getValue());
+        assertEquals("&RRightFvalue", hF.getValue());
+        fO.setRight("Right value1");
+        fE.setRight("RightEvalue1");
+        fF.setRight("RightFvalue1");
+        assertEquals("&RRight value1", fO.getValue());
+        assertEquals("&RRightEvalue1", fE.getValue());
+        assertEquals("&RRightFvalue1", fF.getValue());
+    }
+    
+ 
+
+    @Test
+    public void testGetSetCenterLeftRight() {
+        
+        assertEquals("", fO.getCenter());
+        fO.setCenter("My first center section");
+        assertEquals("My first center section", fO.getCenter());
+        fO.setCenter("No, let's update the center section");
+        assertEquals("No, let's update the center section", fO.getCenter());
+        fO.setLeft("And add a left one");
+        fO.setRight("Finally the right section is added");
+        assertEquals("And add a left one", fO.getLeft());
+        assertEquals("Finally the right section is added", fO.getRight());
+        
+        // Test changing the three sections value
+        fO.setCenter("Second center version");
+        fO.setLeft("Second left version");
+        fO.setRight("Second right version");
+        assertEquals("Second center version", fO.getCenter());
+        assertEquals("Second left version", fO.getLeft());
+        assertEquals("Second right version", fO.getRight());
+        
+    }    
+}

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/extensions/TestXSSFHeaderFooter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org