95 lines
3.1 KiB
Java
95 lines
3.1 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.util.CellRangeAddress8Bit;
|
|
|
|
import junit.framework.TestCase;
|
|
|
|
/**
|
|
* Tests the serialization and deserialization of the TableRecord
|
|
* class works correctly. Test data taken directly from a real
|
|
* Excel file.
|
|
*/
|
|
public final class TestTableRecord extends TestCase {
|
|
byte[] header = new byte[] {
|
|
0x36, 02, 0x10, 00, // sid=x236, 16 bytes long
|
|
};
|
|
byte[] data = new byte[] {
|
|
03, 00, // from row 3
|
|
8, 00, // to row 8
|
|
04, // from col 4
|
|
06, // to col 6
|
|
00, 00, // no flags set
|
|
04, 00, // row inp row 4
|
|
01, 00, // col inp row 1
|
|
0x76, 0x40, // row inp col 0x4076 (!)
|
|
00, 00 // col inp col 0
|
|
};
|
|
|
|
public void testLoad() {
|
|
|
|
TableRecord record = new TableRecord(TestcaseRecordInputStream.create(0x236, data));
|
|
|
|
CellRangeAddress8Bit range = record.getRange();
|
|
assertEquals(3, range.getFirstRow());
|
|
assertEquals(8, range.getLastRow());
|
|
assertEquals(4, range.getFirstColumn());
|
|
assertEquals(6, range.getLastColumn());
|
|
assertEquals(0, record.getFlags());
|
|
assertEquals(4, record.getRowInputRow());
|
|
assertEquals(1, record.getColInputRow());
|
|
assertEquals(0x4076, record.getRowInputCol());
|
|
assertEquals(0, record.getColInputCol());
|
|
|
|
assertEquals( 16 + 4, record.getRecordSize() );
|
|
}
|
|
|
|
public void testStore()
|
|
{
|
|
// Offset 0x3bd9 (15321)
|
|
// recordid = 0x236, size = 16
|
|
// [TABLE]
|
|
// .row from = 3
|
|
// .row to = 8
|
|
// .column from = 4
|
|
// .column to = 6
|
|
// .flags = 0
|
|
// .always calc =false
|
|
// .reserved = 0
|
|
// .row input row = 4
|
|
// .col input row = 1
|
|
// .row input col = 4076
|
|
// .col input col = 0
|
|
// [/TABLE]
|
|
|
|
CellRangeAddress8Bit crab = new CellRangeAddress8Bit(3, 8, 4, 6);
|
|
TableRecord record = new TableRecord(crab);
|
|
record.setFlags((byte)0);
|
|
record.setRowInputRow(4);
|
|
record.setColInputRow(1);
|
|
record.setRowInputCol(0x4076);
|
|
record.setColInputCol(0);
|
|
|
|
byte [] recordBytes = record.serialize();
|
|
assertEquals(recordBytes.length - 4, data.length);
|
|
for (int i = 0; i < data.length; i++)
|
|
assertEquals("At offset " + i, data[i], recordBytes[i+4]);
|
|
}
|
|
}
|