/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package org.apache.fop.render.afp;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import org.apache.fop.afp.AFPConstants;
import org.apache.fop.apps.AFPRendererConfBuilder;
import org.apache.fop.apps.AbstractRendererConfigParserTester;
import org.apache.fop.render.afp.AFPRendererConfig.AFPRendererConfigParser;
import org.apache.fop.render.afp.AFPRendererConfig.ImagesModeOptions;
import static org.apache.fop.render.afp.AFPRendererConfig.ImagesModeOptions.MODE_COLOR;
import static org.apache.fop.render.afp.AFPRendererConfig.ImagesModeOptions.MODE_GRAYSCALE;
public class AFPRendererConfigParserTestCase
extends AbstractRendererConfigParserTester<AFPRendererConfBuilder, AFPRendererConfig> {
public AFPRendererConfigParserTestCase() {
super(new AFPRendererConfigParser(), AFPRendererConfBuilder.class);
}
@Test
public void testShadingMode() throws Exception {
parseConfig();
assertEquals(AFPShadingMode.COLOR, conf.getShadingMode());
parseConfig(createRenderer().setShading(AFPShadingMode.DITHERED));
assertEquals(AFPShadingMode.DITHERED, conf.getShadingMode());
}
@Test
public void testResolution() throws Exception {
parseConfig(createRenderer());
assertEquals(Integer.valueOf(240), conf.getResolution());
parseConfig(createRenderer().setRenderingResolution(300));
assertEquals(Integer.valueOf(300), conf.getResolution());
}
@Test
public void testLineWidthCorrection() throws Exception {
parseConfig(createRenderer());
assertEquals(AFPConstants.LINE_WIDTH_CORRECTION,
conf.getLineWidthCorrection().floatValue(), 0.0001f);
parseConfig(createRenderer().setLineWidthCorrection(1f));
assertEquals(Float.valueOf(1f), conf.getLineWidthCorrection());
}
@Test
public void testResourceGroupUri() throws Exception {
parseConfig(createRenderer());
assertEquals(null, conf.getDefaultResourceGroupUri());
// TODO yuck!
File file = File.createTempFile("AFPRendererConfigParserTestCase", "");
try {
file.delete();
parseConfig(createRenderer().setResourceGroupUri(file.toURI().toASCIIString()));
assertEquals(file.toURI(), conf.getDefaultResourceGroupUri());
} finally {
file.delete();
}
}
@Test
public void testResourceLevelDefaults() throws Exception {
parseConfig(createRenderer());
assertNull(conf.getResourceLevelDefaults());
Map<String, String> levels = new HashMap<String, String>();
levels.put("goca", "page");
parseConfig(createRenderer().setDefaultResourceLevels(levels));
assertNotNull(conf.getResourceLevelDefaults());
}
@Test
public void testImages() throws Exception {
parseConfig(createRenderer());
assertEquals(false, conf.isColorImages());
assertEquals(Integer.valueOf(8), conf.getBitsPerPixel());
ImagesModeOptions mode = MODE_GRAYSCALE;
parseConfig(createRenderer().startImages(mode)
.setModeAttribute(mode.getModeAttribute(), String.valueOf(1))
.endImages());
assertEquals(false, conf.isColorImages());
assertEquals(Integer.valueOf(1), conf.getBitsPerPixel());
mode = MODE_COLOR;
parseConfig(createRenderer()
.startImages(mode)
.setModeAttribute(mode.getModeAttribute(),
String.valueOf(false))
.endImages());
assertEquals(true, conf.isColorImages());
assertEquals(false, conf.isCmykImagesSupported());
parseConfig(createRenderer().startImages(mode)
.setModeAttribute(mode.getModeAttribute(), String.valueOf(true))
.endImages());
assertEquals(true, conf.isColorImages());
assertEquals(true, conf.isCmykImagesSupported());
}
@Test(expected = IllegalStateException.class)
public void testImagesException1() throws Exception {
parseConfig(createRenderer().startImages().endImages());
conf.isCmykImagesSupported();
}
@Test(expected = IllegalStateException.class)
public void testImagesException2() throws Exception {
parseConfig(createRenderer().startImages(MODE_COLOR).endImages());
conf.getBitsPerPixel();
}
@Test
public void testImagesNative() throws Exception {
parseConfig(createRenderer());
assertEquals(false, conf.isNativeImagesSupported());
parseConfig(createRenderer().startImages().setNativeImageSupport(true).endImages());
assertEquals(true, conf.isNativeImagesSupported());
}
@Test
public void testDitheringQuality() throws Exception {
parseConfig(createRenderer());
assertEquals(0.5f, conf.getDitheringQuality(), 0.001f);
parseConfig(createRenderer().startImages().setDitheringQuality("min").endImages());
assertEquals(0.0f, conf.getDitheringQuality(), 0.001f);
parseConfig(createRenderer().startImages().setDitheringQuality("max").endImages());
assertEquals(1.0f, conf.getDitheringQuality(), 0.001f);
parseConfig(createRenderer().startImages().setDitheringQuality(0.25f).endImages());
assertEquals(0.25f, conf.getDitheringQuality(), 0.001f);
}
@Test
public void testAllowJpegEmbedding() throws Exception {
parseConfig();
assertEquals(false, conf.allowJpegEmbedding());
parseConfig(createRenderer().startImages().setAllowJpegEmbedding(true).endImages());
assertEquals(true, conf.allowJpegEmbedding());
}
@Test
public void testBitmapEncodingQuality() throws Exception {
parseConfig();
assertEquals(1.0f, conf.getBitmapEncodingQuality(), 0.001f);
parseConfig(createRenderer().startImages().setBitmapEncodingQuality(0.5f).endImages());
assertEquals(0.5f, conf.getBitmapEncodingQuality(), 0.001f);
}
@Test
public void testFS45() throws Exception {
parseConfig();
assertEquals(false, conf.isFs45());
parseConfig(createRenderer().startImages().setFs45(true).endImages());
assertEquals(true, conf.isFs45());
}
@Test
public void tesPseg() throws Exception {
parseConfig();
assertEquals(false, conf.isWrapPseg());
parseConfig(createRenderer().startImages().setWrapPseg(true).endImages());
assertEquals(true, conf.isWrapPseg());
}
@Test(expected = IllegalArgumentException.class)
public void testForNameException() throws Exception {
ImagesModeOptions.forName("_");
}
}