package org.pentaho.reporting.engine.classic.core.crosstab;
import junit.framework.TestCase;
import org.junit.Assert;
import org.pentaho.reporting.engine.classic.core.ClassicEngineBoot;
import org.pentaho.reporting.engine.classic.core.MasterReport;
import org.pentaho.reporting.engine.classic.core.layout.model.LayoutNodeTypes;
import org.pentaho.reporting.engine.classic.core.layout.model.LogicalPageBox;
import org.pentaho.reporting.engine.classic.core.layout.model.RenderBox;
import org.pentaho.reporting.engine.classic.core.layout.model.RenderNode;
import org.pentaho.reporting.engine.classic.core.testsupport.DebugReportRunner;
import org.pentaho.reporting.engine.classic.core.testsupport.selector.MatchFactory;
import org.pentaho.reporting.engine.classic.core.util.geom.StrictGeomUtility;
public class Prd4497IT extends TestCase {
public Prd4497IT() {
}
protected void setUp() throws Exception {
ClassicEngineBoot.getInstance().start();
}
public void testLayout() throws Exception {
// this report should generate only two pages of content. With the bug still active, it generates 3.
MasterReport report = DebugReportRunner.parseGoldenSampleReport( "Prd-4497.prpt" );
LogicalPageBox pageBox = DebugReportRunner.layoutPageStrict( report, 2, 0 );
Assert.assertEquals( StrictGeomUtility.toInternalValue( 784 ), pageBox.getPageEnd() );
RenderNode[] elementsByNodeType = MatchFactory.findElementsByNodeType( pageBox, LayoutNodeTypes.TYPE_BOX_TABLE );
Assert.assertEquals( 1, elementsByNodeType.length );
RenderBox box = (RenderBox) elementsByNodeType[0];
// ModelPrinter.INSTANCE.print(box);
RenderNode lastChild = box.getLastChild();
Assert.assertEquals( StrictGeomUtility.toInternalValue( 804 ), lastChild.getY2() );
Assert.assertEquals( StrictGeomUtility.toInternalValue( 800 ), box.getCachedHeight() );
Assert.assertEquals( StrictGeomUtility.toInternalValue( 804 ), box.getHeight() );
}
}