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());
  }
  /** 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);
  }