diff options
author | Luis Bernardo <lbernardo@apache.org> | 2013-02-21 01:10:36 +0000 |
---|---|---|
committer | Luis Bernardo <lbernardo@apache.org> | 2013-02-21 01:10:36 +0000 |
commit | 9dadbc4897447e7f41d8dea17fc579f293b675b1 (patch) | |
tree | a5b7c282ef51f0276b08a4fb71a5191fb9e49d9f /test | |
parent | d0d7e25d98cd1509e8433782af336e93bb02f1b8 (diff) | |
download | xmlgraphics-fop-9dadbc4897447e7f41d8dea17fc579f293b675b1.tar.gz xmlgraphics-fop-9dadbc4897447e7f41d8dea17fc579f293b675b1.zip |
FOP-2181: Add a test case for the recent fix made in FOP-2174 and XGC-76 regarding source resolution scaling with SVG and images; patch submitted by Robert Meyer
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1448484 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test')
-rw-r--r-- | test/java/org/apache/fop/layoutmgr/inline/ImageLayoutTestCase.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/test/java/org/apache/fop/layoutmgr/inline/ImageLayoutTestCase.java b/test/java/org/apache/fop/layoutmgr/inline/ImageLayoutTestCase.java new file mode 100644 index 000000000..b652aaf61 --- /dev/null +++ b/test/java/org/apache/fop/layoutmgr/inline/ImageLayoutTestCase.java @@ -0,0 +1,81 @@ +package org.apache.fop.layoutmgr.inline; + +import java.awt.Dimension; + +import org.junit.Before; +import org.junit.Test; + +import org.apache.fop.apps.FOUserAgent; +import org.apache.fop.datatypes.Length; +import org.apache.fop.fo.flow.AbstractGraphics; +import org.apache.fop.fo.properties.EnumLength; +import org.apache.fop.fo.properties.EnumProperty; +import org.apache.fop.fo.properties.LengthRangeProperty; +import org.apache.fop.fo.properties.Property; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class ImageLayoutTestCase { + + private AbstractGraphics gfxProps; + + /** + * Initializes the resources needed to run the scaling unit test + */ + @Before + public void setUp() { + gfxProps = mock(AbstractGraphics.class); + + Property enumProp = EnumProperty.getInstance(9, "AUTO"); + Length len = new EnumLength(enumProp); + len.getEnum(); + + LengthRangeProperty lenRangeProp = mock(LengthRangeProperty.class); + when(lenRangeProp.getMinimum(null)).thenReturn(enumProp); + when(lenRangeProp.getMaximum(null)).thenReturn(enumProp); + when(lenRangeProp.getOptimum(null)).thenReturn(enumProp); + + when(gfxProps.getBlockProgressionDimension()).thenReturn(lenRangeProp); + when(gfxProps.getInlineProgressionDimension()).thenReturn(lenRangeProp); + + //All values should be set to AUTO to test when no content-width or height has been specified + when(gfxProps.getBlockProgressionDimension().getOptimum(null)).thenReturn(enumProp); + when(gfxProps.getBlockProgressionDimension().getOptimum(null).getLength()).thenReturn(len); + when(gfxProps.getBlockProgressionDimension().getMinimum(null)).thenReturn(enumProp); + when(gfxProps.getBlockProgressionDimension().getMinimum(null).getLength()).thenReturn(len); + when(gfxProps.getBlockProgressionDimension().getMaximum(null)).thenReturn(enumProp); + when(gfxProps.getBlockProgressionDimension().getMaximum(null).getLength()).thenReturn(len); + when(gfxProps.getInlineProgressionDimension().getOptimum(null)).thenReturn(enumProp); + when(gfxProps.getInlineProgressionDimension().getOptimum(null).getLength()).thenReturn(len); + when(gfxProps.getInlineProgressionDimension().getMinimum(null)).thenReturn(enumProp); + when(gfxProps.getInlineProgressionDimension().getMinimum(null).getLength()).thenReturn(len); + when(gfxProps.getInlineProgressionDimension().getMaximum(null)).thenReturn(enumProp); + when(gfxProps.getInlineProgressionDimension().getMaximum(null).getLength()).thenReturn(len); + + when(gfxProps.getContentWidth()).thenReturn(len); + when(gfxProps.getContentHeight()).thenReturn(len); + } + + /** + * Tests different levels of scaling to see if they match an expected result + */ + @Test + public void testImageScaling() { + testScaling(114.0f, new Dimension(990000, 765000), 625263.0f, 483157.0f); + testScaling(96.0f, new Dimension(990000, 765000), 742500.0f, 573750.0f); + testScaling(72.0f, new Dimension(990000, 765000), 990000.0f, 765000.0f); + } + + private void testScaling(float sourceResolution, Dimension intrinsicSize, + float targetWidth, float targetHeight) { + FOUserAgent userAgent = mock(FOUserAgent.class); + when(userAgent.getSourceResolution()).thenReturn(sourceResolution); + when(gfxProps.getUserAgent()).thenReturn(userAgent); + + ImageLayout imgLayout = new ImageLayout(gfxProps, null, intrinsicSize); + assertEquals(imgLayout.getViewportSize().getWidth(), targetWidth, 0.0f); + assertEquals(imgLayout.getViewportSize().getHeight(), targetHeight, 0.0f); + } +} |