183 lines
5.5 KiB
Java
183 lines
5.5 KiB
Java
/* ====================================================================
|
|
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.hssf.record;
|
|
|
|
import org.apache.poi.hssf.HSSFTestDataSamples;
|
|
import org.apache.poi.hssf.model.InternalSheet;
|
|
import org.apache.poi.hssf.model.InternalWorkbook;
|
|
import org.apache.poi.hssf.record.common.FeatFormulaErr2;
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
import org.apache.poi.hssf.usermodel.HSSFTestHelper;
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
|
import junit.framework.TestCase;
|
|
/**
|
|
* Tests for <tt>FeatRecord</tt>
|
|
*
|
|
* @author Josh Micich
|
|
*/
|
|
public final class TestFeatRecord extends TestCase {
|
|
public void testWithoutFeatRecord() throws Exception {
|
|
HSSFWorkbook hssf =
|
|
HSSFTestDataSamples.openSampleWorkbook("46136-WithWarnings.xls");
|
|
InternalWorkbook wb = HSSFTestHelper.getWorkbookForTest(hssf);
|
|
|
|
assertEquals(1, hssf.getNumberOfSheets());
|
|
|
|
int countFR = 0;
|
|
int countFRH = 0;
|
|
|
|
// Check on the workbook, but shouldn't be there!
|
|
for(Record r : wb.getRecords()) {
|
|
if(r instanceof FeatRecord) {
|
|
countFR++;
|
|
} else if (r.getSid() == FeatRecord.sid) {
|
|
countFR++;
|
|
}
|
|
if(r instanceof FeatHdrRecord) {
|
|
countFRH++;
|
|
} else if (r.getSid() == FeatHdrRecord.sid) {
|
|
countFRH++;
|
|
}
|
|
}
|
|
|
|
assertEquals(0, countFR);
|
|
assertEquals(0, countFRH);
|
|
|
|
// Now check on the sheet
|
|
HSSFSheet s = hssf.getSheetAt(0);
|
|
InternalSheet sheet = HSSFTestHelper.getSheetForTest(s);
|
|
|
|
for(RecordBase rb : sheet.getRecords()) {
|
|
if(rb instanceof Record) {
|
|
Record r = (Record)rb;
|
|
if(r instanceof FeatRecord) {
|
|
countFR++;
|
|
} else if (r.getSid() == FeatRecord.sid) {
|
|
countFR++;
|
|
}
|
|
if(r instanceof FeatHdrRecord) {
|
|
countFRH++;
|
|
} else if (r.getSid() == FeatHdrRecord.sid) {
|
|
countFRH++;
|
|
}
|
|
}
|
|
}
|
|
|
|
assertEquals(0, countFR);
|
|
assertEquals(0, countFRH);
|
|
}
|
|
|
|
public void testReadFeatRecord() throws Exception {
|
|
HSSFWorkbook hssf =
|
|
HSSFTestDataSamples.openSampleWorkbook("46136-NoWarnings.xls");
|
|
InternalWorkbook wb = HSSFTestHelper.getWorkbookForTest(hssf);
|
|
|
|
FeatRecord fr = null;
|
|
FeatHdrRecord fhr = null;
|
|
|
|
assertEquals(1, hssf.getNumberOfSheets());
|
|
|
|
// First check it isn't on the Workbook
|
|
int countFR = 0;
|
|
int countFRH = 0;
|
|
for(Record r : wb.getRecords()) {
|
|
if(r instanceof FeatRecord) {
|
|
fr = (FeatRecord)r;
|
|
countFR++;
|
|
} else if (r.getSid() == FeatRecord.sid) {
|
|
fail("FeatRecord SID found but not created correctly!");
|
|
}
|
|
if(r instanceof FeatHdrRecord) {
|
|
countFRH++;
|
|
} else if (r.getSid() == FeatHdrRecord.sid) {
|
|
fail("FeatHdrRecord SID found but not created correctly!");
|
|
}
|
|
}
|
|
|
|
assertEquals(0, countFR);
|
|
assertEquals(0, countFRH);
|
|
|
|
// Now find it on our sheet
|
|
HSSFSheet s = hssf.getSheetAt(0);
|
|
InternalSheet sheet = HSSFTestHelper.getSheetForTest(s);
|
|
|
|
for(RecordBase rb : sheet.getRecords()) {
|
|
if(rb instanceof Record) {
|
|
Record r = (Record)rb;
|
|
if(r instanceof FeatRecord) {
|
|
fr = (FeatRecord)r;
|
|
countFR++;
|
|
} else if (r.getSid() == FeatRecord.sid) {
|
|
countFR++;
|
|
}
|
|
if(r instanceof FeatHdrRecord) {
|
|
fhr = (FeatHdrRecord)r;
|
|
countFRH++;
|
|
} else if (r.getSid() == FeatHdrRecord.sid) {
|
|
countFRH++;
|
|
}
|
|
}
|
|
}
|
|
|
|
assertEquals(1, countFR);
|
|
assertEquals(1, countFRH);
|
|
assertNotNull(fr);
|
|
assertNotNull(fhr);
|
|
|
|
// Now check the contents are as expected
|
|
assertEquals(
|
|
FeatHdrRecord.SHAREDFEATURES_ISFFEC2,
|
|
fr.getIsf_sharedFeatureType()
|
|
);
|
|
|
|
// Applies to one cell only
|
|
assertEquals(1, fr.getCellRefs().length);
|
|
assertEquals(0, fr.getCellRefs()[0].getFirstRow());
|
|
assertEquals(0, fr.getCellRefs()[0].getLastRow());
|
|
assertEquals(0, fr.getCellRefs()[0].getFirstColumn());
|
|
assertEquals(0, fr.getCellRefs()[0].getLastColumn());
|
|
|
|
// More checking of shared features stuff
|
|
assertEquals(4, fr.getCbFeatData());
|
|
assertEquals(4, fr.getSharedFeature().getDataSize());
|
|
assertEquals(FeatFormulaErr2.class, fr.getSharedFeature().getClass());
|
|
|
|
FeatFormulaErr2 fferr2 = (FeatFormulaErr2)fr.getSharedFeature();
|
|
assertEquals(0x04, fferr2._getRawErrorCheckValue());
|
|
|
|
assertFalse(fferr2.getCheckCalculationErrors());
|
|
assertFalse(fferr2.getCheckDateTimeFormats());
|
|
assertFalse(fferr2.getCheckEmptyCellRef());
|
|
assertFalse(fferr2.getCheckInconsistentFormulas());
|
|
assertFalse(fferr2.getCheckInconsistentRanges());
|
|
assertTrue(fferr2.getCheckNumbersAsText());
|
|
assertFalse(fferr2.getCheckUnprotectedFormulas());
|
|
assertFalse(fferr2.getPerformDataValidation());
|
|
}
|
|
|
|
/**
|
|
* cloning sheets with feat records
|
|
*/
|
|
public void testCloneSheetWithFeatRecord() throws Exception {
|
|
HSSFWorkbook wb =
|
|
HSSFTestDataSamples.openSampleWorkbook("46136-WithWarnings.xls");
|
|
wb.cloneSheet(0);
|
|
}
|
|
}
|