/*
* Created on 31/gen/2013
* Copyright 2011 by Andrea Vacondio (andrea.vacondio@gmail.com).
*
* This file is part of the Sejda source code
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.sejda.cli;
import static org.hamcrest.core.IsCollectionContaining.hasItems;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import java.awt.Color;
import org.junit.Test;
import org.sejda.cli.command.StandardTestableTask;
import org.sejda.model.HorizontalAlign;
import org.sejda.model.VerticalAlign;
import org.sejda.model.parameter.SetHeaderFooterParameters;
import org.sejda.model.pdf.StandardType1Font;
import org.sejda.model.pdf.page.PageRange;
import org.sejda.model.pdf.page.PredefinedSetOfPages;
/**
* @author Andrea Vacondio
*
*/
public class SetHeaderFooterTaskTest extends AbstractTaskTest {
public SetHeaderFooterTaskTest() {
super(StandardTestableTask.SET_HEADER_FOOTER);
}
@Test
public void testRightHorAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-x", "right").invokeSejdaConsole();
assertEquals(HorizontalAlign.RIGHT, parameters.getHorizontalAlign());
}
@Test
public void testLeftHorAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-x", "left").invokeSejdaConsole();
assertEquals(HorizontalAlign.LEFT, parameters.getHorizontalAlign());
}
@Test
public void testCenterHorAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-x", "center").invokeSejdaConsole();
assertEquals(HorizontalAlign.CENTER, parameters.getHorizontalAlign());
}
@Test
public void testDefaultHorAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().invokeSejdaConsole();
assertEquals(HorizontalAlign.CENTER, parameters.getHorizontalAlign());
}
@Test
public void testTopVertAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-y", "top").invokeSejdaConsole();
assertEquals(VerticalAlign.TOP, parameters.getVerticalAlign());
}
@Test
public void testBottomVertAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-y", "bottom").invokeSejdaConsole();
assertEquals(VerticalAlign.BOTTOM, parameters.getVerticalAlign());
}
@Test
public void testDefaultVertAlign() {
SetHeaderFooterParameters parameters = defaultCommandLine().invokeSejdaConsole();
assertEquals(VerticalAlign.BOTTOM, parameters.getVerticalAlign());
}
@Test
public void testKnownFont() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-t", "Helvetica-Bold").invokeSejdaConsole();
assertEquals(StandardType1Font.HELVETICA_BOLD, parameters.getFont());
}
@Test
public void testUnknownFont() {
defaultCommandLine().with("-t", "Chuck-Norris").assertConsoleOutputContains("Invalid value");
}
@Test
public void testMandatory() {
defaultCommandLine().without("-l").assertConsoleOutputContains("Option is mandatory: --label -l");
}
@Test
public void labelPattern() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-l", "\"Page [PAGE_ROMAN]\"")
.invokeSejdaConsole();
assertEquals("Page [PAGE_ROMAN]", parameters.getPattern());
}
@Test
public void fontSize() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-d", "1.0").invokeSejdaConsole();
assertEquals(1d, parameters.getFontSize(), 0.0);
}
@Test
public void wrongFontSize() {
defaultCommandLine().with("-d", "Chuck").assertConsoleOutputContains("Invalid value");
}
@Test
public void batesStartFrom() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("--batesStartFrom", "123456")
.invokeSejdaConsole();
assertEquals("123456", parameters.getBatesSequence().next());
}
@Test
public void batesIncrement() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("--batesIncrement", "5").invokeSejdaConsole();
parameters.getBatesSequence().next();
assertEquals("000006", parameters.getBatesSequence().next());
assertEquals("000011", parameters.getBatesSequence().next());
}
@Test
public void fontColor() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("--fontColor", "#FFFFFF").invokeSejdaConsole();
assertEquals(new Color(255, 255, 255), parameters.getColor());
}
@Test
public void pageCountStartFrom() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("--pageCountStartFrom", "5")
.invokeSejdaConsole();
assertEquals(5, parameters.getPageCountStartFrom().intValue());
}
@Test
public void fileCountStartFrom() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("--fileCountStartFrom", "10")
.invokeSejdaConsole();
assertEquals(10, parameters.getFileCountStartFrom().intValue());
}
@Test
public void testOutputPrefix_Specified() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-p", "fooPrefix").invokeSejdaConsole();
assertEquals("fooPrefix", parameters.getOutputPrefix());
}
@Test
public void testOutputPrefix_Default() {
SetHeaderFooterParameters parameters = defaultCommandLine().invokeSejdaConsole();
assertEquals("", parameters.getOutputPrefix());
}
@Test
public void defaults() {
SetHeaderFooterParameters parameters = defaultCommandLine().invokeSejdaConsole();
assertEquals(1, parameters.getFileCountStartFrom().intValue());
assertEquals(PredefinedSetOfPages.ALL_PAGES, parameters.getPredefinedSetOfPages());
}
@Test
public void predefinedSetOfPages_All() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-s", "all")
.invokeSejdaConsole();
assertEquals(PredefinedSetOfPages.ALL_PAGES, parameters.getPredefinedSetOfPages());
}
@Test
public void predefinedSetOfPages_Even() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-s", "even")
.invokeSejdaConsole();
assertEquals(PredefinedSetOfPages.EVEN_PAGES, parameters.getPredefinedSetOfPages());
}
@Test
public void predefinedSetOfPages_Odd() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-s", "odd")
.invokeSejdaConsole();
assertEquals(PredefinedSetOfPages.ODD_PAGES, parameters.getPredefinedSetOfPages());
}
@Test
public void pageRanges() {
SetHeaderFooterParameters parameters = defaultCommandLine().with("-s", "1,2,8-10,19-")
.invokeSejdaConsole();
assertThat(parameters.getPageRanges(), hasItems(new PageRange(1, 1), new PageRange(8, 10), new PageRange(19)));
}
}