]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
FOP-2206: adds unit test for PSPainter.drawText()
authorLuis Bernardo <lbernardo@apache.org>
Wed, 6 Feb 2013 14:52:43 +0000 (14:52 +0000)
committerLuis Bernardo <lbernardo@apache.org>
Wed, 6 Feb 2013 14:52:43 +0000 (14:52 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@1442992 13f79535-47bb-0310-9956-ffa450edef68

test/java/org/apache/fop/render/ps/PSPainterTestCase.java

index 0a9f552ff39b884035b43b4b3da9f2a6c60773b5..79e5bd9b675a7bc5e46c4b88a092cb8259d6fe51 100644 (file)
@@ -20,27 +20,36 @@ import java.awt.Color;
 import java.awt.Rectangle;
 import java.io.IOException;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.verification.VerificationMode;
 
-import org.apache.xmlgraphics.ps.PSGenerator;
-
-import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.fo.Constants;
-import org.apache.fop.render.intermediate.IFContext;
-import org.apache.fop.render.intermediate.IFState;
-import org.apache.fop.traits.BorderProps;
-
 import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyFloat;
+import static org.mockito.Matchers.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import org.apache.xmlgraphics.ps.PSGenerator;
+
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.fo.Constants;
+import org.apache.fop.fonts.Font;
+import org.apache.fop.fonts.FontInfo;
+import org.apache.fop.fonts.FontTriplet;
+import org.apache.fop.fonts.MultiByteFont;
+import org.apache.fop.fonts.Typeface;
+import org.apache.fop.render.intermediate.IFContext;
+import org.apache.fop.render.intermediate.IFState;
+import org.apache.fop.traits.BorderProps;
+
 public class PSPainterTestCase {
 
     private PSDocumentHandler docHandler;
@@ -107,4 +116,49 @@ public class PSPainterTestCase {
         }
     }
 
+    @Test
+    public void testDrawText() {
+        int fontSize = 12000;
+        String fontName = "MockFont";
+        PSGenerator psGenerator = mock(PSGenerator.class);
+        PSRenderingUtil psRenderingUtil = mock(PSRenderingUtil.class);
+        PSDocumentHandler psDocumentHandler = mock(PSDocumentHandler.class);
+        FontInfo fontInfo = mock(FontInfo.class);
+        PSFontResource psFontResource = mock(PSFontResource.class);
+        MultiByteFont multiByteFont = mock(MultiByteFont.class);
+        Font font = mock(Font.class);
+        when(psDocumentHandler.getGenerator()).thenReturn(psGenerator);
+        when(psDocumentHandler.getPSUtil()).thenReturn(psRenderingUtil);
+        when(psDocumentHandler.getFontInfo()).thenReturn(fontInfo);
+        when(psDocumentHandler.getPSResourceForFontKey(fontName)).thenReturn(psFontResource);
+        when(fontInfo.getInternalFontKey(any(FontTriplet.class))).thenReturn(fontName);
+        when(fontInfo.getFontInstance(any(FontTriplet.class), anyInt())).thenReturn(font);
+        Map<String, Typeface> fonts = new HashMap<String, Typeface>();
+        fonts.put(fontName, multiByteFont);
+        when(fontInfo.getFonts()).thenReturn(fonts);
+
+        IFState ifState = IFState.create();
+        ifState.setFontSize(fontSize);
+
+        PSPainter psPainter = new PSPainter(psDocumentHandler, ifState);
+
+        int x = 100000;
+        int y = 100000;
+        int letterSpacing = 0;
+        int wordSpacing = 0;
+        int dp[][] = {{100, 100, 0, 0}, null, null, {200, 200, -100, -100}};
+        double X = (x + dp[0][0]) / 1000.0;
+        double Y = (y - dp[0][1]) / 1000.0;
+        when(psGenerator.formatDouble(X)).thenReturn("100.100");
+        when(psGenerator.formatDouble(Y)).thenReturn("99.900");
+        String text = "Hello Mock!";
+        try {
+            psPainter.drawText(x, y, letterSpacing, wordSpacing, dp, text);
+            verify(psGenerator).writeln("1 0 0 -1 100.100 99.900 Tm");
+            verify(psGenerator).writeln("[<0000> [-100 100] <00000000> [200 -200] <0000> [-300 300] "
+                            + "<0000000000000000000000000000>] TJ");
+        } catch (Exception e) {
+            fail("something broke...");
+        }
+    }
 }