You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AFPRendererConfiguratorTestCase.java 8.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.fop.render.afp;
  18. import java.net.URI;
  19. import java.util.HashMap;
  20. import java.util.Map;
  21. import org.junit.Test;
  22. import org.mockito.ArgumentCaptor;
  23. import static org.junit.Assert.assertEquals;
  24. import static org.mockito.Mockito.verify;
  25. import org.apache.fop.afp.AFPResourceLevel;
  26. import org.apache.fop.afp.AFPResourceLevel.ResourceType;
  27. import org.apache.fop.afp.AFPResourceLevelDefaults;
  28. import org.apache.fop.apps.AFPRendererConfBuilder;
  29. import org.apache.fop.apps.AbstractRendererConfiguratorTest;
  30. import org.apache.fop.apps.MimeConstants;
  31. import org.apache.fop.render.afp.AFPRendererConfig.AFPRendererConfigParser;
  32. import org.apache.fop.render.afp.AFPRendererConfig.ImagesModeOptions;
  33. public class AFPRendererConfiguratorTestCase extends
  34. AbstractRendererConfiguratorTest<AFPRendererConfigurator, AFPRendererConfBuilder> {
  35. public AFPRendererConfiguratorTestCase() {
  36. super(MimeConstants.MIME_AFP, AFPRendererConfBuilder.class, AFPDocumentHandler.class);
  37. }
  38. @Override
  39. public void setUpDocumentHandler() {
  40. }
  41. @Override
  42. protected AFPRendererConfigurator createConfigurator() {
  43. return new AFPRendererConfigurator(userAgent, new AFPRendererConfigParser());
  44. }
  45. private AFPDocumentHandler getDocHandler() {
  46. return (AFPDocumentHandler) docHandler;
  47. }
  48. @Test
  49. public void testColorImages() throws Exception {
  50. parseConfig(createBuilder().startImages(ImagesModeOptions.MODE_COLOR)
  51. .endImages());
  52. verify(getDocHandler()).setColorImages(true);
  53. parseConfig(createBuilder().startImages(ImagesModeOptions.MODE_GRAYSCALE)
  54. .endImages());
  55. verify(getDocHandler()).setColorImages(false);
  56. }
  57. @Test
  58. public void testCMYKImagesSupport() throws Exception {
  59. parseConfig(createBuilder().startImages(ImagesModeOptions.MODE_COLOR)
  60. .setModeAttribute("cmyk", "true")
  61. .endImages());
  62. verify(getDocHandler()).setCMYKImagesSupported(true);
  63. parseConfig(createBuilder().startImages(ImagesModeOptions.MODE_COLOR)
  64. .setModeAttribute("cmyk", "false")
  65. .endImages());
  66. verify(getDocHandler()).setCMYKImagesSupported(false);
  67. }
  68. @Test
  69. public void testBitsPerPixel() throws Exception {
  70. for (int bpp = 0; bpp < 40; bpp += 8) {
  71. parseConfig(createBuilder().startImages()
  72. .setModeAttribute("bits-per-pixel", String.valueOf(bpp))
  73. .endImages());
  74. verify(getDocHandler()).setBitsPerPixel(bpp);
  75. }
  76. }
  77. @Test
  78. public void testDitheringQuality() throws Exception {
  79. float ditheringQuality = 100f;
  80. parseConfig(createBuilder().startImages()
  81. .setDitheringQuality(ditheringQuality)
  82. .endImages());
  83. verify(getDocHandler()).setDitheringQuality(ditheringQuality);
  84. ditheringQuality = 1000f;
  85. parseConfig(createBuilder().startImages()
  86. .setDitheringQuality(ditheringQuality)
  87. .endImages());
  88. verify(getDocHandler()).setDitheringQuality(ditheringQuality);
  89. }
  90. @Test
  91. public void testNativeImagesSupported() throws Exception {
  92. parseConfig(createBuilder().startImages()
  93. .setNativeImageSupport(true)
  94. .endImages());
  95. verify(getDocHandler()).setNativeImagesSupported(true);
  96. parseConfig(createBuilder().startImages()
  97. .setNativeImageSupport(false)
  98. .endImages());
  99. verify(getDocHandler()).setNativeImagesSupported(false);
  100. }
  101. @Test
  102. public void testShadingMode() throws Exception {
  103. for (AFPShadingMode mode : AFPShadingMode.values()) {
  104. parseConfig(createBuilder().setShading(mode));
  105. verify(getDocHandler()).setShadingMode(mode);
  106. }
  107. }
  108. @Test
  109. public void testRendererResolution() throws Exception {
  110. for (int resolution = 0; resolution < 1000; resolution += 100) {
  111. parseConfig(createBuilder().setRenderingResolution(resolution));
  112. verify(getDocHandler()).setResolution(resolution);
  113. }
  114. }
  115. @Test
  116. public void testLineWidthCorrection() throws Exception {
  117. for (float resolution = 0; resolution < 50; resolution += 5) {
  118. parseConfig(createBuilder().setLineWidthCorrection(resolution));
  119. verify(getDocHandler()).setLineWidthCorrection(resolution);
  120. }
  121. }
  122. @Test
  123. public void testResourceGroupURI() throws Exception {
  124. URI uri = URI.create("test://URI/just/used/for/testing");
  125. parseConfig(createBuilder().setResourceGroupUri(uri.toASCIIString()));
  126. verify(getDocHandler()).setDefaultResourceGroupUri(uri);
  127. }
  128. @Test
  129. public void testResourceLevelDefaults() throws Exception {
  130. testResourceLevelDefault(ResourceType.DOCUMENT);
  131. }
  132. private void testResourceLevelDefault(ResourceType resType) throws Exception {
  133. Map<String, String> resourceLevels = new HashMap<String, String>();
  134. resourceLevels.put("goca", resType.getName());
  135. parseConfig(createBuilder().setDefaultResourceLevels(resourceLevels));
  136. ArgumentCaptor<AFPResourceLevelDefaults> argument = ArgumentCaptor.forClass(AFPResourceLevelDefaults.class);
  137. verify(getDocHandler()).setResourceLevelDefaults(argument.capture());
  138. AFPResourceLevel expectedLevel = new AFPResourceLevel(resType);
  139. assertEquals(expectedLevel, argument.getValue().getDefaultResourceLevel((byte) 3));
  140. }
  141. @Test
  142. public void testExternalResourceDefault() throws Exception {
  143. testResourceLevelDefault(ResourceType.EXTERNAL);
  144. }
  145. @Test
  146. public void testInlineResourceDefault() throws Exception {
  147. testResourceLevelDefault(ResourceType.INLINE);
  148. }
  149. @Test
  150. public void testPageResourceDefault() throws Exception {
  151. testResourceLevelDefault(ResourceType.PAGE);
  152. }
  153. @Test
  154. public void testPageGroupResourceDefault() throws Exception {
  155. testResourceLevelDefault(ResourceType.PAGE_GROUP);
  156. }
  157. @Test
  158. public void testPrintFileResourceDefault() throws Exception {
  159. testResourceLevelDefault(ResourceType.PRINT_FILE);
  160. }
  161. @Test
  162. public void testBitmapEncodeQuality() throws Exception {
  163. parseConfig(createBuilder().startImages()
  164. .setBitmapEncodingQuality(0.5f)
  165. .endImages());
  166. verify(getDocHandler()).setBitmapEncodingQuality(0.5f);
  167. }
  168. @Test
  169. public void testCanEmbedJpeg() throws Exception {
  170. parseConfig(createBuilder().startImages()
  171. .setAllowJpegEmbedding(true)
  172. .endImages());
  173. verify(getDocHandler()).canEmbedJpeg(true);
  174. parseConfig(createBuilder().startImages()
  175. .setAllowJpegEmbedding(false)
  176. .endImages());
  177. verify(getDocHandler()).canEmbedJpeg(false);
  178. }
  179. @Test
  180. public void testWrapGocaPSeg() throws Exception {
  181. parseConfig(createBuilder().startGOCA()
  182. .setWrapPseg(true)
  183. .endGOCA());
  184. verify(getDocHandler()).setWrapGocaPSeg(true);
  185. }
  186. }