public int SerializeField(int offset, byte[] data) { int size = Size; LittleEndian.PutShort(data, offset, (short)(size - 2)); int pos = offset + 2; pos += Ptg.SerializePtgs(formulaTokens, data, pos); return size; }
public void TestReadWrite_tRefN_bug45091() { RecordInputStream in1 = TestcaseRecordInputStream.CreateWithFakeSid(tRefN_data); Ptg[] ptgs = Ptg.ReadTokens(tRefN_data.Length, in1); byte[] outData = new byte[5]; Ptg.SerializePtgs(ptgs, outData, 0); if (outData[0] == 0x24) { throw new AssertFailedException("Identified bug 45091"); } Assert.IsTrue(NPOI.Util.Arrays.Equals(tRefN_data, outData)); }
public void TestReadWrite_tRefN_bug45091() { ILittleEndianInput in1 = TestcaseRecordInputStream.CreateLittleEndian(tRefN_data); Ptg[] ptgs = Ptg.ReadTokens(tRefN_data.Length, in1); byte[] outData = new byte[5]; Ptg.SerializePtgs(ptgs, outData, 0); if (outData[0] == 0x24) { throw new AssertionException("Identified bug 45091"); } Assert.IsTrue(Arrays.Equals(tRefN_data, outData)); }
/** * called by the class that Is responsible for writing this sucker. * Subclasses should implement this so that their data Is passed back in a * byte array. * * @param offset to begin writing at * @param data byte array containing instance data * @return number of bytes written */ public override int Serialize(int pOffset, byte[] data) { int formula1Len = GetFormulaSize(field_17_formula1); int formula2Len = GetFormulaSize(field_18_formula2); int offset = pOffset; int recordsize = RecordSize; LittleEndian.PutShort(data, 0 + offset, sid); LittleEndian.PutShort(data, 2 + offset, (short)(recordsize - 4)); LittleEndian.PutByte(data, 4 + offset, field_1_condition_type); LittleEndian.PutByte(data, 5 + offset, field_2_comparison_operator); LittleEndian.PutUShort(data, 6 + offset, formula1Len); LittleEndian.PutUShort(data, 8 + offset, formula2Len); LittleEndian.PutInt(data, 10 + offset, field_5_options); LittleEndian.PutShort(data, 14 + offset, field_6_not_used); offset += 16; if (ContainsFontFormattingBlock) { byte[] fontFormattingRawRecord = fontFormatting.GetRawRecord(); Array.Copy(fontFormattingRawRecord, 0, data, offset, fontFormattingRawRecord.Length); offset += fontFormattingRawRecord.Length; } if (ContainsBorderFormattingBlock) { offset += borderFormatting.Serialize(offset, data); } if (ContainsPatternFormattingBlock) { offset += patternFormatting.Serialize(offset, data); } if (field_17_formula1 != null) { offset += Ptg.SerializePtgs(field_17_formula1, data, offset); } if (field_18_formula2 != null) { offset += Ptg.SerializePtgs(field_18_formula2, data, offset); } if (offset - pOffset != recordsize) { throw new InvalidOperationException("Write mismatch (" + (offset - pOffset) + "!=" + recordsize + ")"); } return(recordsize); }
/** * Creates a {@link Formula} object from a supplied {@link Ptg} array. * Handles <code>null</code>s OK. * @param ptgs may be <code>null</code> * @return Never <code>null</code> (Possibly empty if the supplied <c>ptgs</c> is <code>null</code>) */ public static Formula Create(Ptg[] ptgs) { if (ptgs == null || ptgs.Length < 1) { return(EMPTY); } int totalSize = Ptg.GetEncodedSize(ptgs); byte[] encodedData = new byte[totalSize]; Ptg.SerializePtgs(ptgs, encodedData, 0); int encodedTokenLen = Ptg.GetEncodedSizeWithoutArrayData(ptgs); return(new Formula(encodedData, encodedTokenLen)); }
public void TestReSerializeAttrChoose() { byte[] data = HexRead.ReadFromString("19, 04, 03, 00, 08, 00, 11, 00, 1A, 00, 23, 00"); ILittleEndianInput in1 = TestcaseRecordInputStream.CreateLittleEndian(data); Ptg[] ptgs = Ptg.ReadTokens(data.Length, in1); byte[] data2 = new byte[data.Length]; try { Ptg.SerializePtgs(ptgs, data2, 0); } catch (IndexOutOfRangeException) { throw new AssertionException("incorrect re-serialization of tAttrChoose"); } Assert.IsTrue(Arrays.Equals(data, data2)); }