public void testCreateCFRuleRecord() { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); CFRuleRecord record = CFRuleRecord.create(sheet, "7"); testCFRuleRecord(record); // Serialize byte[] serializedRecord = record.serialize(); // Strip header byte[] recordData = new byte[serializedRecord.length - 4]; System.arraycopy(serializedRecord, 4, recordData, 0, recordData.length); // Deserialize record = new CFRuleRecord(TestcaseRecordInputStream.create(CFRuleRecord.sid, recordData)); // Serialize again byte[] output = record.serialize(); // Compare assertEquals("Output size", recordData.length + 4, output.length); // includes sid+recordlength for (int i = 0; i < recordData.length; i++) { assertEquals("CFRuleRecord doesn't match", recordData[i], output[i + 4]); } }
/** tRefN and tAreaN tokens must be preserved when re-serializing conditional format formulas */ public void testReserializeRefNTokens() { RecordInputStream is = TestcaseRecordInputStream.create(CFRuleRecord.sid, DATA_REFN); CFRuleRecord rr = new CFRuleRecord(is); Ptg[] ptgs = rr.getParsedExpression1(); assertEquals(3, ptgs.length); if (ptgs[0] instanceof RefPtg) { throw new AssertionFailedError("Identified bug 45234"); } assertEquals(RefNPtg.class, ptgs[0].getClass()); RefNPtg refNPtg = (RefNPtg) ptgs[0]; assertTrue(refNPtg.isColRelative()); assertTrue(refNPtg.isRowRelative()); byte[] data = rr.serialize(); TestcaseRecordInputStream.confirmRecordEncoding(CFRuleRecord.sid, DATA_REFN, data); }
public void testWrite() { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); CFRuleRecord rr = CFRuleRecord.create(sheet, ComparisonOperator.BETWEEN, "5", "10"); PatternFormatting patternFormatting = new PatternFormatting(); patternFormatting.setFillPattern(PatternFormatting.BRICKS); rr.setPatternFormatting(patternFormatting); byte[] data = rr.serialize(); assertEquals(26, data.length); assertEquals(3, LittleEndian.getShort(data, 6)); assertEquals(3, LittleEndian.getShort(data, 8)); int flags = LittleEndian.getInt(data, 10); assertEquals("unused flags should be 111", 0x00380000, flags & 0x00380000); assertEquals( "undocumented flags should be 0000", 0, flags & 0x03C00000); // Otherwise Excel gets unhappy // check all remaining flag bits (some are not well understood yet) assertEquals(0x203FFFFF, flags); }
private void testCFRuleRecord(CFRuleRecord record) { FontFormatting fontFormatting = new FontFormatting(); testFontFormattingAccessors(fontFormatting); assertFalse(record.containsFontFormattingBlock()); record.setFontFormatting(fontFormatting); assertTrue(record.containsFontFormattingBlock()); BorderFormatting borderFormatting = new BorderFormatting(); testBorderFormattingAccessors(borderFormatting); assertFalse(record.containsBorderFormattingBlock()); record.setBorderFormatting(borderFormatting); assertTrue(record.containsBorderFormattingBlock()); assertFalse(record.isLeftBorderModified()); record.setLeftBorderModified(true); assertTrue(record.isLeftBorderModified()); assertFalse(record.isRightBorderModified()); record.setRightBorderModified(true); assertTrue(record.isRightBorderModified()); assertFalse(record.isTopBorderModified()); record.setTopBorderModified(true); assertTrue(record.isTopBorderModified()); assertFalse(record.isBottomBorderModified()); record.setBottomBorderModified(true); assertTrue(record.isBottomBorderModified()); assertFalse(record.isTopLeftBottomRightBorderModified()); record.setTopLeftBottomRightBorderModified(true); assertTrue(record.isTopLeftBottomRightBorderModified()); assertFalse(record.isBottomLeftTopRightBorderModified()); record.setBottomLeftTopRightBorderModified(true); assertTrue(record.isBottomLeftTopRightBorderModified()); PatternFormatting patternFormatting = new PatternFormatting(); testPatternFormattingAccessors(patternFormatting); assertFalse(record.containsPatternFormattingBlock()); record.setPatternFormatting(patternFormatting); assertTrue(record.containsPatternFormattingBlock()); assertFalse(record.isPatternBackgroundColorModified()); record.setPatternBackgroundColorModified(true); assertTrue(record.isPatternBackgroundColorModified()); assertFalse(record.isPatternColorModified()); record.setPatternColorModified(true); assertTrue(record.isPatternColorModified()); assertFalse(record.isPatternStyleModified()); record.setPatternStyleModified(true); assertTrue(record.isPatternStyleModified()); }
public void testConstructors() { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); CFRuleRecord rule1 = CFRuleRecord.create(sheet, "7"); assertEquals(CFRuleRecord.CONDITION_TYPE_FORMULA, rule1.getConditionType()); assertEquals(ComparisonOperator.NO_COMPARISON, rule1.getComparisonOperation()); assertNotNull(rule1.getParsedExpression1()); assertSame(Ptg.EMPTY_PTG_ARRAY, rule1.getParsedExpression2()); CFRuleRecord rule2 = CFRuleRecord.create(sheet, ComparisonOperator.BETWEEN, "2", "5"); assertEquals(CFRuleRecord.CONDITION_TYPE_CELL_VALUE_IS, rule2.getConditionType()); assertEquals(ComparisonOperator.BETWEEN, rule2.getComparisonOperation()); assertNotNull(rule2.getParsedExpression1()); assertNotNull(rule2.getParsedExpression2()); CFRuleRecord rule3 = CFRuleRecord.create(sheet, ComparisonOperator.EQUAL, null, null); assertEquals(CFRuleRecord.CONDITION_TYPE_CELL_VALUE_IS, rule3.getConditionType()); assertEquals(ComparisonOperator.EQUAL, rule3.getComparisonOperation()); assertSame(Ptg.EMPTY_PTG_ARRAY, rule3.getParsedExpression2()); assertSame(Ptg.EMPTY_PTG_ARRAY, rule3.getParsedExpression2()); }