public void TestBSEPictureRef() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = wb.CreateSheet("Pictures") as HSSFSheet; HSSFPatriarch dr = sh.CreateDrawingPatriarch() as HSSFPatriarch; HSSFClientAnchor anchor = new HSSFClientAnchor(); InternalSheet ish = HSSFTestHelper.GetSheetForTest(sh); //register a picture byte[] data1 = new byte[] { 1, 2, 3 }; int idx1 = wb.AddPicture(data1, PictureType.JPEG); Assert.AreEqual(1, idx1); HSSFPicture p1 = dr.CreatePicture(anchor, idx1) as HSSFPicture; EscherBSERecord bse = wb.Workbook.GetBSERecord(idx1); Assert.AreEqual(bse.Ref, 1); dr.CreatePicture(new HSSFClientAnchor(), idx1); Assert.AreEqual(bse.Ref, 2); HSSFShapeGroup gr = dr.CreateGroup(new HSSFClientAnchor()); gr.CreatePicture(new HSSFChildAnchor(), idx1); Assert.AreEqual(bse.Ref, 3); }
public void TestBOFandEOFRecords() { HSSFWorkbook workbook = HSSFTestDataSamples.OpenSampleWorkbook("SimpleChart.xls"); NPOI.SS.UserModel.ISheet sheet = workbook.GetSheetAt(0); IRow firstRow = sheet.GetRow(0); ICell firstCell = firstRow.GetCell(0); //System.out.println("first assertion for date"); Assert.AreEqual(new DateTime(2000, 1, 1, 10, 51, 2), DateUtil.GetJavaDate(firstCell.NumericCellValue, false)); IRow row = sheet.CreateRow(15); ICell cell = row.CreateCell(1); cell.SetCellValue(22); InternalSheet newSheet = ((HSSFSheet)workbook.GetSheetAt(0)).Sheet; IList <RecordBase> records = newSheet.Records; //System.out.println("BOF Assertion"); Assert.IsTrue(records[0] is BOFRecord); //System.out.println("EOF Assertion"); Assert.IsTrue(records[records.Count - 1] is EOFRecord); workbook.Close(); }
public void TestRowValueAggregatesOrder_bug45145() { InternalSheet sheet = InternalSheet.CreateSheet(); RowRecord rr = new RowRecord(5); sheet.AddRow(rr); CellValueRecordInterface cvr = new BlankRecord(); cvr.Column = 0; cvr.Row = (5); sheet.AddValueRecord(5, cvr); int dbCellRecordPos = GetDbCellRecordPos(sheet); if (dbCellRecordPos == 252) { // The overt symptom of the bug // DBCELL record pos is1 calculated wrong if VRA comes before RRA throw new AssertionException("Identified bug 45145"); } Assert.AreEqual(242, dbCellRecordPos); }
public void TestActiveCell() { //read in sample HSSFWorkbook book = OpenSample("Simple.xls"); //Check initial position HSSFSheet umSheet = (HSSFSheet)book.GetSheetAt(0); InternalSheet s = umSheet.Sheet; Assert.AreEqual(0, s.ActiveCellCol, "Initial active cell should be in col 0"); Assert.AreEqual(1, s.ActiveCellRow, "Initial active cell should be on row 1"); //modify position through Cell ICell cell = umSheet.CreateRow(3).CreateCell(2); cell.SetAsActiveCell(); Assert.AreEqual(2, s.ActiveCellCol, "After modify, active cell should be in col 2"); Assert.AreEqual(3, s.ActiveCellRow, "After modify, active cell should be on row 3"); //Write book to temp file; read and Verify that position is serialized book = WriteOutAndReadBack(book); umSheet = (HSSFSheet)book.GetSheetAt(0); s = umSheet.Sheet; Assert.AreEqual(2, s.ActiveCellCol, "After serialize, active cell should be in col 2"); Assert.AreEqual(3, s.ActiveCellRow, "After serialize, active cell should be on row 3"); }
public void TestGetCellWidth() { InternalSheet sheet = InternalSheet.CreateSheet(); ColumnInfoRecord nci = new ColumnInfoRecord(); // Prepare test model nci.FirstColumn = 5; nci.LastColumn = 10; nci.ColumnWidth = 100; sheet._columnInfos.InsertColumn(nci); Assert.AreEqual(100, sheet.GetColumnWidth(5)); Assert.AreEqual(100, sheet.GetColumnWidth(6)); Assert.AreEqual(100, sheet.GetColumnWidth(7)); Assert.AreEqual(100, sheet.GetColumnWidth(8)); Assert.AreEqual(100, sheet.GetColumnWidth(9)); Assert.AreEqual(100, sheet.GetColumnWidth(10)); sheet.SetColumnWidth(6, 200); Assert.AreEqual(100, sheet.GetColumnWidth(5)); Assert.AreEqual(200, sheet.GetColumnWidth(6)); Assert.AreEqual(100, sheet.GetColumnWidth(7)); Assert.AreEqual(100, sheet.GetColumnWidth(8)); Assert.AreEqual(100, sheet.GetColumnWidth(9)); Assert.AreEqual(100, sheet.GetColumnWidth(10)); }
public void TestMovingMergedRegion() { List <Record> records = new List <Record>(); CellRangeAddress[] cras = { new CellRangeAddress(0, 1, 0, 2), }; MergeCellsRecord merged = new MergeCellsRecord(cras, 0, cras.Length); records.Add(BOFRecord.CreateSheetBOF()); records.Add(new DimensionsRecord()); records.Add(new RowRecord(0)); records.Add(new RowRecord(1)); records.Add(new RowRecord(2)); records.Add(CreateWindow2Record()); records.Add(EOFRecord.instance); records.Add(merged); InternalSheet sheet = CreateSheet(records); sheet.Records.RemoveAt(0); //stub object to throw off list INDEX operations sheet.RemoveMergedRegion(0); Assert.AreEqual(0, sheet.NumMergedRegions, "Should be no more merged regions"); }
public void TestCloneMulBlank_bug46776() { Record[] recs = { InternalSheet.CreateBOF(), new DimensionsRecord(), new RowRecord(1), new MulBlankRecord(1, 3, new short[] { 0x0F, 0x0F, 0x0F, }), new RowRecord(2), CreateWindow2Record(), EOFRecord.instance, }; InternalSheet sheet = CreateSheet(recs.ToList()); InternalSheet sheet2; try { sheet2 = sheet.CloneSheet(); } catch (Exception e) { if (e.Message.Equals("The class org.apache.poi.hssf.record.MulBlankRecord needs to define a clone method")) { throw new AssertionException("Identified bug 46776"); } throw e; } TestCases.HSSF.UserModel.RecordInspector.RecordCollector rc = new TestCases.HSSF.UserModel.RecordInspector.RecordCollector(); sheet2.VisitContainedRecords(rc, 0); Record[] clonedRecs = rc.Records; Assert.AreEqual(recs.Length + 2, clonedRecs.Length); // +2 for INDEX and DBCELL }
public void TestAutoFilter() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sh = (HSSFSheet)wb.CreateSheet(); InternalWorkbook iwb = wb.Workbook; InternalSheet ish = sh.Sheet; Assert.IsNull(iwb.GetSpecificBuiltinRecord(NameRecord.BUILTIN_FILTER_DB, 1)); Assert.IsNull(ish.FindFirstRecordBySid(AutoFilterInfoRecord.sid)); CellRangeAddress range = CellRangeAddress.ValueOf("A1:B10"); sh.SetAutoFilter(range); NameRecord name = iwb.GetSpecificBuiltinRecord(NameRecord.BUILTIN_FILTER_DB, 1); Assert.IsNotNull(name); // The built-in name for auto-filter must consist of a single Area3d Ptg. Ptg[] ptg = name.NameDefinition; Assert.AreEqual(1, ptg.Length, "The built-in name for auto-filter must consist of a single Area3d Ptg"); Assert.IsTrue(ptg[0] is Area3DPtg, "The built-in name for auto-filter must consist of a single Area3d Ptg"); Area3DPtg aref = (Area3DPtg)ptg[0]; Assert.AreEqual(range.FirstColumn, aref.FirstColumn); Assert.AreEqual(range.FirstRow, aref.FirstRow); Assert.AreEqual(range.LastColumn, aref.LastColumn); Assert.AreEqual(range.LastRow, aref.LastRow); // verify AutoFilterInfoRecord AutoFilterInfoRecord afilter = (AutoFilterInfoRecord)ish.FindFirstRecordBySid(AutoFilterInfoRecord.sid); Assert.IsNotNull(afilter); Assert.AreEqual(2, afilter.NumEntries); //filter covers two columns HSSFPatriarch dr = (HSSFPatriarch)sh.DrawingPatriarch; Assert.IsNotNull(dr); HSSFSimpleShape comboBoxShape = (HSSFSimpleShape)dr.Children[0]; Assert.AreEqual(comboBoxShape.ShapeType, HSSFSimpleShape.OBJECT_TYPE_COMBO_BOX); Assert.IsNull(ish.FindFirstRecordBySid(ObjRecord.sid)); // ObjRecord will appear after serializetion wb = HSSFTestDataSamples.WriteOutAndReadBack(wb); sh = (HSSFSheet)wb.GetSheetAt(0); ish = sh.Sheet; ObjRecord objRecord = (ObjRecord)ish.FindFirstRecordBySid(ObjRecord.sid); IList subRecords = objRecord.SubRecords; Assert.AreEqual(3, subRecords.Count); Assert.IsTrue(subRecords[0] is CommonObjectDataSubRecord); Assert.IsTrue(subRecords[1] is FtCblsSubRecord); // must be present, see Bug 51481 Assert.IsTrue(subRecords[2] is LbsDataSubRecord); }
private void CheckSheetRecords(InternalSheet sheet) { IList records = sheet.Records; Assert.IsTrue(records[0] is BOFRecord); Assert.IsTrue(records[records.Count - 1] is EOFRecord); CheckRecordOrder(records, sheetRecords); // CheckRecordstogether(records, sheetRecords); }
/** * @return the value calculated for the position of the first DBCELL record for this sheet. * That value is1 found on the IndexRecord. */ private static int GetDbCellRecordPos(InternalSheet sheet) { MyIndexRecordListener myIndexListener = new MyIndexRecordListener(); sheet.VisitContainedRecords(myIndexListener, 0); IndexRecord indexRecord = myIndexListener.GetIndexRecord(); int dbCellRecordPos = indexRecord.GetDbcellAt(0); return(dbCellRecordPos); }
public void TestHorizontallyCenter() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = (HSSFSheet)wb.CreateSheet(); InternalSheet sheet = s.Sheet; HCenterRecord record = sheet.PageSettings.HCenter; Assert.AreEqual(false, record.HCenter); s.HorizontallyCenter = (true); Assert.AreEqual(true, record.HCenter); }
public void TestBackupRecord() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = (HSSFSheet)wb.CreateSheet(); InternalSheet sheet = s.Sheet; Assert.AreEqual(true, sheet.GridsetRecord.Gridset); #pragma warning disable 0618 // warning CS0618: 'NPOI.HSSF.UserModel.HSSFSheet.IsGridsPrinted' is obsolete: 'Please use IsPrintGridlines instead' s.IsGridsPrinted = true; // <- this is marked obsolete, but using "s.IsPrintGridlines = true;" makes this test fail 8-( #pragma warning restore 0618 Assert.AreEqual(false, sheet.GridsetRecord.Gridset); }
public void TestVerticallyCenter() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = (HSSFSheet)wb.CreateSheet(); InternalSheet sheet = s.Sheet; VCenterRecord record = sheet.PageSettings.VCenter; Assert.AreEqual(false, record.VCenter); s.VerticallyCenter = (true); Assert.AreEqual(true, record.VCenter); // wb.Write(new FileOutputStream("c:\\Test.xls")); }
static void AddToValidations(ICollection <DataValidation> validations, HSSFSheet sheet, string[] names) { InternalSheet internalSheet = sheet.Sheet; var dataValidityTable = (DataValidityTable)internalSheet.GetType() .GetField("_dataValidityTable", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(internalSheet); if (dataValidityTable == null) { return; } var validationList = (IList)dataValidityTable.GetType() .GetField("_validationList", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(dataValidityTable); foreach (DVRecord record in validationList) { var formula = (Formula)record.GetType() .GetField("_formula1", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(record); var validation = new DataValidation { Range = ExcelHelper.ParseRange(record.CellRangeAddress.CellRangeAddresses[0].FormatAsString(), ExcelVersion.Xls) }; Ptg ptg = formula.Tokens[0]; var namePtg = ptg as NamePtg; if (namePtg != null) { validation.Type = DataValidationType.Formula; validation.Name = names.ElementAt(namePtg.Index); } else { var stringPtg = ptg as StringPtg; if (stringPtg != null) { validation.Type = DataValidationType.List; validation.List = stringPtg.Value.Split('\0'); } else { continue; } } validations.Add(validation); } }
public void TestBackupRecord() { HSSFWorkbook wb = new HSSFWorkbook(); for (int i = 0; i < 10; i++) { HSSFSheet s = (HSSFSheet)wb.CreateSheet("Sheet " + i); InternalSheet sheet = s.Sheet; } wb.Workbook.SetSheetOrder("Sheet 6", 0); wb.Workbook.SetSheetOrder("Sheet 3", 7); wb.Workbook.SetSheetOrder("Sheet 1", 9); }
public void TestAddMergedRegion() { InternalSheet sheet = InternalSheet.CreateSheet(); int regionsToAdd = 4096; int startRecords = sheet.Records.Count; //simple Test that Adds a load of regions for (int n = 0; n < regionsToAdd; n++) { int index = sheet.AddMergedRegion(0, 0, 1, 1); Assert.AreEqual(index, n, "Merged region index expected to be " + n + " got " + index); } //test all the regions were indeed Added Assert.AreEqual(sheet.NumMergedRegions, regionsToAdd); //test that the regions were spread out over the appropriate number of records MergedCellListener mcListener = new MergedCellListener(); sheet.VisitContainedRecords(mcListener, 0); int recordsAdded = mcListener.Count; int recordsExpected = regionsToAdd / 1027; if ((regionsToAdd % 1027) != 0) { recordsExpected++; } Assert.AreEqual(recordsAdded, recordsExpected, "The " + regionsToAdd + " merged regions should have been spRead out over " + recordsExpected + " records, not " + recordsAdded); // Check we can't Add one with invalid date try { sheet.AddMergedRegion(10, 10, 9, 12); Assert.Fail("Expected an exception to occur"); } catch (ArgumentException e) { // occurs during successful Test Assert.AreEqual("The 'to' row (9) must not be less than the 'from' row (10)", e.Message); } try { sheet.AddMergedRegion(10, 10, 12, 9); Assert.Fail("Expected an exception to occur"); } catch (ArgumentException e) { // occurs during successful Test Assert.AreEqual("The 'to' col (9) must not be less than the 'from' col (10)", e.Message); } }
public void TestMaxColumnWidth() { InternalSheet sheet = InternalSheet.CreateSheet(); sheet.SetColumnWidth(0, 255 * 256); //the limit try { sheet.SetColumnWidth(0, 256 * 256); //the limit Assert.Fail("expected exception"); } catch (ArgumentException e) { Assert.AreEqual(e.Message, "The maximum column width for an individual cell is 255 characters."); } }
public void TestHeaderFooter_bug46840() { int rowIx = 5; int colIx = 6; NumberRecord nr = new NumberRecord(); nr.Row = (rowIx); nr.Column = ((short)colIx); nr.Value = (3.0); NPOI.HSSF.Record.Record[] recs = { BOFRecord.CreateSheetBOF(), new HeaderRecord("&LSales Figures"), new FooterRecord("&LJanuary"), new HeaderFooterRecord(HexRead.ReadFromString("9C 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C4 60 00 00 00 00 00 00 00 00")), new DimensionsRecord(), new WindowTwoRecord(), new UserSViewBegin(HexRead.ReadFromString("ED 77 3B 86 BC 3F 37 4C A9 58 60 23 43 68 54 4B 01 00 00 00 64 00 00 00 40 00 00 00 02 00 00 00 3D 80 04 00 00 00 00 00 00 00 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 F0 3F FF FF 01 00")), new HeaderRecord("&LSales Figures"), new FooterRecord("&LJanuary"), new HeaderFooterRecord(HexRead.ReadFromString("9C 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C4 60 00 00 00 00 00 00 00 00")), new UserSViewEnd(HexRead.ReadFromString("01, 00")), EOFRecord.instance, }; RecordStream rs = new RecordStream(Arrays.AsList(recs), 0); InternalSheet sheet; try { sheet = InternalSheet.CreateSheet(rs); } catch (Exception e) { if (e.Message.Equals("two Page Settings Blocks found in the same sheet")) { throw new AssertionException("Identified bug 46480"); } throw e; } TestCases.HSSF.UserModel.RecordInspector.RecordCollector rv = new TestCases.HSSF.UserModel.RecordInspector.RecordCollector(); sheet.VisitContainedRecords(rv, rowIx); NPOI.HSSF.Record.Record[] outRecs = rv.Records; Assert.AreEqual(13, outRecs.Length); }
public void TestWSBool() { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = (HSSFSheet)wb.CreateSheet(); InternalSheet sheet = s.Sheet; WSBoolRecord record = (WSBoolRecord)sheet.FindFirstRecordBySid(WSBoolRecord.sid); // Check defaults Assert.AreEqual(false, record.AlternateExpression); Assert.AreEqual(false, record.AlternateFormula); Assert.AreEqual(false, record.Autobreaks); Assert.AreEqual(false, record.Dialog); Assert.AreEqual(false, record.DisplayGuts); Assert.AreEqual(true, record.FitToPage); Assert.AreEqual(false, record.RowSumsBelow); Assert.AreEqual(false, record.RowSumsRight); // Alter s.AlternativeExpression = (false); s.AlternativeFormula = (false); s.Autobreaks = true; s.Dialog = true; s.DisplayGuts = true; s.FitToPage = false; s.RowSumsBelow = true; s.RowSumsRight = true; // Check Assert.AreEqual(false, record.AlternateExpression); Assert.AreEqual(false, record.AlternateFormula); Assert.AreEqual(true, record.Autobreaks); Assert.AreEqual(true, record.Dialog); Assert.AreEqual(true, record.DisplayGuts); Assert.AreEqual(false, record.FitToPage); Assert.AreEqual(true, record.RowSumsBelow); Assert.AreEqual(true, record.RowSumsRight); Assert.AreEqual(false, s.AlternativeExpression); Assert.AreEqual(false, s.AlternativeFormula); Assert.AreEqual(true, s.Autobreaks); Assert.AreEqual(true, s.Dialog); Assert.AreEqual(true, s.DisplayGuts); Assert.AreEqual(false, s.FitToPage); Assert.AreEqual(true, s.RowSumsBelow); Assert.AreEqual(true, s.RowSumsRight); }
public void TestUncalcSize_bug45066() { List <Record> records = new List <Record>(); records.Add(BOFRecord.CreateSheetBOF()); records.Add(new UncalcedRecord()); records.Add(new DimensionsRecord()); records.Add(CreateWindow2Record()); records.Add(new EOFRecord()); InternalSheet sheet = CreateSheet(records); // The original bug was due to different logic for collecting records for sizing and // serialization. The code has since been refactored into a single method for visiting // all contained records. Now this Test is much less interesting SizeCheckingRecordVisitor scrv = new SizeCheckingRecordVisitor(); sheet.VisitContainedRecords(scrv, 0); Assert.AreEqual(90, scrv.TotalSize); }
private void ConfirmAggregatedRecords(List <RecordBase> recordStream) { InternalSheet sheet = InternalSheet.CreateSheet(); sheet.Records.Clear(); ((List <RecordBase>)sheet.Records).AddRange(recordStream); IList sheetRecords = sheet.Records; DrawingManager2 drawingManager = new DrawingManager2(new EscherDggRecord()); sheet.AggregateDrawingRecords(drawingManager, false); Assert.AreEqual(4, sheetRecords.Count); Assert.AreEqual(BOFRecord.sid, ((Record)sheetRecords[0]).Sid); Assert.AreEqual(EscherAggregate.sid, ((Record)sheetRecords[1]).Sid); Assert.AreEqual(WindowTwoRecord.sid, ((Record)sheetRecords[2]).Sid); Assert.AreEqual(EOFRecord.sid, ((Record)sheetRecords[3]).Sid); }
public void TestLateMargins_bug47199() { NPOI.HSSF.Record.Record[] recs = { BOFRecord.CreateSheetBOF(), new HeaderRecord("&LSales Figures"), new FooterRecord("&LJanuary"), new DimensionsRecord(), CreateBottomMargin(0.787F), new WindowTwoRecord(), EOFRecord.instance, }; RecordStream rs = new RecordStream(Arrays.AsList(recs), 0); InternalSheet sheet; try { sheet = InternalSheet.CreateSheet(rs); } catch (Exception e) { if (e.Message.Equals("two Page Settings Blocks found in the same sheet")) { throw new AssertionException("Identified bug 47199a - failed to process late margings records"); } throw e; } TestCases.HSSF.UserModel.RecordInspector.RecordCollector rv = new TestCases.HSSF.UserModel.RecordInspector.RecordCollector(); sheet.VisitContainedRecords(rv, 0); NPOI.HSSF.Record.Record[] outRecs = rv.Records; Assert.AreEqual(recs.Length + 1, outRecs.Length); // +1 for index record Assert.AreEqual(typeof(BOFRecord), outRecs[0].GetType()); Assert.AreEqual(typeof(IndexRecord), outRecs[1].GetType()); Assert.AreEqual(typeof(HeaderRecord), outRecs[2].GetType()); Assert.AreEqual(typeof(FooterRecord), outRecs[3].GetType()); Assert.AreEqual(typeof(DimensionsRecord), outRecs[5].GetType()); Assert.AreEqual(typeof(WindowTwoRecord), outRecs[6].GetType()); Assert.AreEqual(typeof(EOFRecord), outRecs[7].GetType()); }
public void TestAddCondFormatAfterDataValidation_bug46547() { // Create a sheet with data validity (similar to bugzilla attachment id=23131). InternalSheet sheet = InternalSheet.CreateSheet(); sheet.GetOrCreateDataValidityTable(); ConditionalFormattingTable cft; // attempt to Add conditional formatting try { cft = sheet.ConditionalFormattingTable; // lazy getter } catch (InvalidCastException) { throw new AssertionException("Identified bug 46547b"); } Assert.IsNotNull(cft); }
public void TestSheetSerializeSizeMisMatch_bug45066() { HSSFWorkbook wb = new HSSFWorkbook(); InternalSheet sheet = ((HSSFSheet)wb.CreateSheet("Sheet1")).Sheet; IList sheetRecords = sheet.Records; // one way (of many) to cause the discrepancy is with a badly behaved record: sheetRecords.Add(new BadlyBehavedRecord()); // There is also much logic inside Sheet that (if buggy) might also cause the discrepancy try { wb.GetBytes(); throw new AssertionException("Identified bug 45066 a"); } catch (InvalidOperationException e) { // Expected badly behaved sheet record to cause exception Assert.IsTrue(e.Message.StartsWith("Actual serialized sheet size")); } }
public void TestShiftFormulasAddCondFormat_bug46547() { // Create a sheet with data validity (similar to bugzilla attachment id=23131). InternalSheet sheet = InternalSheet.CreateSheet(); IList sheetRecs = sheet.Records; //Assert.AreEqual(23, sheetRecs.Count); Assert.AreEqual(24, sheetRecs.Count); //for SheetExtRecord FormulaShifter shifter = FormulaShifter.CreateForRowShift(0, "", 0, 0, 1); sheet.UpdateFormulasAfterCellShift(shifter, 0); if (sheetRecs.Count == 25 && sheetRecs[22] is ConditionalFormattingTable) { throw new AssertionException("Identified bug 46547a"); } //Assert.AreEqual(23, sheetRecs.Count); Assert.AreEqual(24, sheetRecs.Count); //for SheetExtRecord }
public void TestLateHeaderFooter_bug46953() { int rowIx = 5; int colIx = 6; NumberRecord nr = new NumberRecord(); nr.Row = (rowIx); nr.Column = ((short)colIx); nr.Value = (3.0); NPOI.HSSF.Record.Record[] recs = { BOFRecord.CreateSheetBOF(), new HeaderRecord("&LSales Figures"), new FooterRecord("&LJanuary"), new DimensionsRecord(), new WindowTwoRecord(), new HeaderFooterRecord(HexRead.ReadFromString("9C 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C4 60 00 00 00 00 00 00 00 00")), EOFRecord.instance, }; RecordStream rs = new RecordStream(Arrays.AsList(recs), 0); InternalSheet sheet = InternalSheet.CreateSheet(rs); RecordInspector.RecordCollector rv = new RecordInspector.RecordCollector(); sheet.VisitContainedRecords(rv, 0); NPOI.HSSF.Record.Record[] outRecs = rv.Records; if (outRecs[4] == EOFRecord.instance) { throw new AssertionException("Identified bug 46953 - EOF incorrectly Appended to PSB"); } Assert.AreEqual(recs.Length + 1, outRecs.Length); // +1 for index record Assert.AreEqual(typeof(BOFRecord), outRecs[0].GetType()); Assert.AreEqual(typeof(IndexRecord), outRecs[1].GetType()); Assert.AreEqual(typeof(HeaderRecord), outRecs[2].GetType()); Assert.AreEqual(typeof(FooterRecord), outRecs[3].GetType()); Assert.AreEqual(typeof(HeaderFooterRecord), outRecs[4].GetType()); Assert.AreEqual(typeof(DimensionsRecord), outRecs[5].GetType()); Assert.AreEqual(typeof(WindowTwoRecord), outRecs[6].GetType()); Assert.AreEqual(typeof(EOFRecord), outRecs[7].GetType()); }
public void TestSheetDimensions() { InternalSheet sheet = InternalSheet.CreateSheet(); DimensionsRecord dimensions = (DimensionsRecord)sheet.FindFirstRecordBySid(DimensionsRecord.sid); Assert.AreEqual(0, dimensions.FirstCol); Assert.AreEqual(0, dimensions.FirstRow); Assert.AreEqual(1, dimensions.LastCol); // plus pne Assert.AreEqual(1, dimensions.LastRow); // plus pne RowRecord rr = new RowRecord(0); sheet.AddRow(rr); Assert.AreEqual(0, dimensions.FirstCol); Assert.AreEqual(0, dimensions.FirstRow); Assert.AreEqual(1, dimensions.LastCol); Assert.AreEqual(1, dimensions.LastRow); CellValueRecordInterface cvr; cvr = new BlankRecord(); cvr.Column = ((short)0); cvr.Row = (0); sheet.AddValueRecord(0, cvr); Assert.AreEqual(0, dimensions.FirstCol); Assert.AreEqual(0, dimensions.FirstRow); Assert.AreEqual(1, dimensions.LastCol); Assert.AreEqual(1, dimensions.LastRow); cvr = new BlankRecord(); cvr.Column = ((short)1); cvr.Row = (0); sheet.AddValueRecord(0, cvr); Assert.AreEqual(0, dimensions.FirstCol); Assert.AreEqual(0, dimensions.FirstRow); Assert.AreEqual(2, dimensions.LastCol); //YK: failed until Bugzilla 53414 was fixed Assert.AreEqual(1, dimensions.LastRow); }
public void TestRowAggregation() { List <Record> records = new List <Record>(); records.Add(InternalSheet.CreateBOF()); records.Add(new DimensionsRecord()); records.Add(new RowRecord(0)); records.Add(new RowRecord(1)); FormulaRecord formulaRecord = new FormulaRecord(); formulaRecord.SetCachedResultTypeString(); records.Add(formulaRecord); records.Add(new StringRecord()); records.Add(new RowRecord(2)); records.Add(CreateWindow2Record()); records.Add(EOFRecord.instance); InternalSheet sheet = CreateSheet(records); Assert.IsNotNull(sheet.GetRow(2), "Row [2] was skipped"); }
public void TestCreateSheet() { // Check we're Adding row and cell aggregates List <Record> records = new List <Record>(); records.Add(BOFRecord.CreateSheetBOF()); records.Add(new DimensionsRecord()); records.Add(CreateWindow2Record()); records.Add(new EOFRecord()); InternalSheet sheet = CreateSheet(records); Record[] outRecs = GetSheetRecords(sheet, 0); int pos = 0; Assert.IsTrue(outRecs[pos++] is BOFRecord); Assert.IsTrue(outRecs[pos++] is IndexRecord); Assert.IsTrue(outRecs[pos++] is DimensionsRecord); Assert.IsTrue(outRecs[pos++] is WindowTwoRecord); Assert.IsTrue(outRecs[pos++] is EOFRecord); }
public void TestDgContainerMustBeRootOfHSSFSheetEscherRecords() { HSSFWorkbook wb = HSSFTestDataSamples.OpenSampleWorkbook("47251.xls"); HSSFSheet sh = wb.GetSheetAt(0) as HSSFSheet; InternalSheet ish = HSSFTestHelper.GetSheetForTest(sh); List <RecordBase> records = ish.Records; // records to be aggregated List <RecordBase> dgRecords = records.GetRange(19, 23 - 19); byte[] dgBytes = toByteArray(dgRecords); IDrawing d = sh.DrawingPatriarch; EscherAggregate agg = (EscherAggregate)ish.FindFirstRecordBySid(EscherAggregate.sid); Assert.AreEqual(true, agg.EscherRecords[0] is EscherContainerRecord); Assert.AreEqual(EscherContainerRecord.DG_CONTAINER, agg.EscherRecords[0].RecordId); Assert.AreEqual((short)0x0, agg.EscherRecords[0].Options); agg = (EscherAggregate)ish.FindFirstRecordBySid(EscherAggregate.sid); byte[] dgBytesAfterSave = agg.Serialize(); Assert.AreEqual(dgBytes.Length, dgBytesAfterSave.Length, "different size of drawing data before and after save"); Assert.IsTrue(Arrays.Equals(dgBytes, dgBytesAfterSave), "drawing data before and after save is different"); }