You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by dm...@apache.org on 2003/05/17 20:32:42 UTC

cvs commit: jakarta-poi/src/testcases/org/apache/poi/hssf/record TestNameRecord.java

dmui        2003/05/17 11:32:42

  Modified:    src/java/org/apache/poi/hssf/record NameRecord.java
               src/testcases/org/apache/poi/hssf HSSFTests.java
  Added:       src/testcases/org/apache/poi/hssf/record TestNameRecord.java
  Log:
  Fixed NameRecord deserialization when additional information (description) was specified
  
  PR: 19862
       lloydj@us.ibm.com
  
  Revision  Changes    Path
  1.12      +12 -11    jakarta-poi/src/java/org/apache/poi/hssf/record/NameRecord.java
  
  Index: NameRecord.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/NameRecord.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- NameRecord.java	30 Apr 2003 04:38:47 -0000	1.11
  +++ NameRecord.java	17 May 2003 18:32:41 -0000	1.12
  @@ -55,16 +55,17 @@
   
   package org.apache.poi.hssf.record;
   
  -import org.apache.poi.util.HexDump;
  -import org.apache.poi.util.LittleEndian;
  -import org.apache.poi.util.StringUtil;
  +import java.util.List;
   import java.util.Stack;
  -import org.apache.poi.hssf.record.formula.Ptg;
  +
   import org.apache.poi.hssf.record.formula.Area3DPtg;
  +import org.apache.poi.hssf.record.formula.Ptg;
   import org.apache.poi.hssf.record.formula.Ref3DPtg;
  -import java.util.List;
   import org.apache.poi.hssf.util.RangeAddress;
   import org.apache.poi.hssf.util.SheetReferences;
  +import org.apache.poi.util.HexDump;
  +import org.apache.poi.util.LittleEndian;
  +import org.apache.poi.util.StringUtil;
   
   /**
    * Title:        Name Record (aka Named Range) <P>
  @@ -548,13 +549,13 @@
               int start_of_custom_menu_text = start_of_name_definition + field_4_length_name_definition;
               StringUtil.putCompressedUnicode( getCustomMenuText(), data, start_of_custom_menu_text + offset );
   
  -            int start_of_description_text = start_of_custom_menu_text + field_8_length_description_text;
  +            int start_of_description_text = start_of_custom_menu_text + field_7_length_custom_menu;
               StringUtil.putCompressedUnicode( getDescriptionText(), data, start_of_description_text + offset );
   
  -            int start_of_help_topic_text = start_of_description_text + field_9_length_help_topic_text;
  +            int start_of_help_topic_text = start_of_description_text + field_8_length_description_text;
               StringUtil.putCompressedUnicode( getHelpTopicText(), data, start_of_help_topic_text + offset );
   
  -            int start_of_status_bar_text = start_of_help_topic_text + field_10_length_status_bar_text;
  +            int start_of_status_bar_text = start_of_help_topic_text + field_9_length_help_topic_text;
               StringUtil.putCompressedUnicode( getStatusBarText(), data, start_of_status_bar_text + offset );
   
               return getRecordSize();
  @@ -767,15 +768,15 @@
               field_14_custom_menu_text       = StringUtil.getFromCompressedUnicode(data, start_of_custom_menu_text + offset,
               LittleEndian.ubyteToInt(field_7_length_custom_menu));
       
  -            int start_of_description_text   = start_of_custom_menu_text + field_8_length_description_text;
  +            int start_of_description_text   = start_of_custom_menu_text + field_7_length_custom_menu;;
               field_15_description_text       = StringUtil.getFromCompressedUnicode(data, start_of_description_text + offset,
               LittleEndian.ubyteToInt(field_8_length_description_text));
       
  -            int start_of_help_topic_text    = start_of_description_text + field_9_length_help_topic_text;
  +            int start_of_help_topic_text    = start_of_description_text + field_8_length_description_text;
               field_16_help_topic_text        = StringUtil.getFromCompressedUnicode(data, start_of_help_topic_text + offset,
               LittleEndian.ubyteToInt(field_9_length_help_topic_text));
       
  -            int start_of_status_bar_text       = start_of_help_topic_text + field_10_length_status_bar_text;
  +            int start_of_status_bar_text       = start_of_help_topic_text + field_9_length_help_topic_text;
               field_17_status_bar_text        = StringUtil.getFromCompressedUnicode(data, start_of_status_bar_text +  offset,
               LittleEndian.ubyteToInt(field_10_length_status_bar_text));
           /*} */
  
  
  
  1.7       +2 -0      jakarta-poi/src/testcases/org/apache/poi/hssf/HSSFTests.java
  
  Index: HSSFTests.java
  ===================================================================
  RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/HSSFTests.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- HSSFTests.java	8 May 2003 14:28:25 -0000	1.6
  +++ HSSFTests.java	17 May 2003 18:32:42 -0000	1.7
  @@ -25,6 +25,7 @@
   import org.apache.poi.hssf.record.TestLegendRecord;
   import org.apache.poi.hssf.record.TestLineFormatRecord;
   import org.apache.poi.hssf.record.TestLinkedDataRecord;
  +import org.apache.poi.hssf.record.TestNameRecord;
   import org.apache.poi.hssf.record.TestNumberFormatIndexRecord;
   import org.apache.poi.hssf.record.TestObjectLinkRecord;
   import org.apache.poi.hssf.record.TestPaletteRecord;
  @@ -154,6 +155,7 @@
           
           suite.addTest(new TestSuite(TestFuncPtg.class));
   		  suite.addTest(new TestSuite(TestValueRecordsAggregate.class));
  +		  suite.addTest(new TestSuite(TestNameRecord.class));
           
           //$JUnit-END$
           return suite;
  
  
  
  1.1                  jakarta-poi/src/testcases/org/apache/poi/hssf/record/TestNameRecord.java
  
  Index: TestNameRecord.java
  ===================================================================
  
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache POI" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache POI", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   */
  
  
  package org.apache.poi.hssf.record;
  
  
  import junit.framework.TestCase;
  
  
  /**
   * Tests the NameRecord serializes/deserializes correctly
   * @author Danny Mui (dmui at apache dot org)
   */
  public class TestNameRecord extends TestCase{
  
  	/**
  	 * Makes sure that additional name information is parsed properly such as menu/description
  	 *
  	 */
     public void testFillExtras() {
     	
     	byte[] examples = { 
  			(byte)0x88, (byte)0x03, (byte)0x67, (byte)0x06, 
  			(byte)0x07, (byte)0x00, (byte)0x00, (byte)0x00, 
  			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x23, 
  			(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x4D,
  			(byte)0x61, (byte)0x63, (byte)0x72, (byte)0x6F, 
  			(byte)0x31, (byte)0x3A, (byte)0x01, (byte)0x00, 
  			(byte)0x00, (byte)0x00, (byte)0x11, (byte)0x00, 
  			(byte)0x00, (byte)0x4D, (byte)0x61, (byte)0x63,
  			(byte)0x72, (byte)0x6F, (byte)0x20, (byte)0x72, 
  			(byte)0x65, (byte)0x63, (byte)0x6F, (byte)0x72, 
  			(byte)0x64, (byte)0x65, (byte)0x64, (byte)0x20, 
  			(byte)0x32, (byte)0x37, (byte)0x2D, (byte)0x53,
  			(byte)0x65, (byte)0x70, (byte)0x2D, (byte)0x39, 
  			(byte)0x33, (byte)0x20, (byte)0x62, (byte)0x79, 
  			(byte)0x20, (byte)0x41, (byte)0x4C, (byte)0x4C, 
  			(byte)0x57, (byte)0x4F, (byte)0x52
     	};
     	
  		NameRecord name = new NameRecord();
  		name.fillFields(examples, (short)examples.length);
  		String description = name.getDescriptionText();
  		assertNotNull(description);
  		assertTrue("text contains ALLWOR", description.indexOf("ALLWOR") > 0);
     }
  }