package org.sejda.conversion;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.fail;
import org.junit.Test;
import org.sejda.conversion.BasePageRangeAdapter.PageRangeAdapter;
import org.sejda.conversion.BasePageRangeAdapter.PageRangeWithAllAdapter;
import org.sejda.conversion.exception.ConversionException;
import org.sejda.model.pdf.page.PageRange;
/**
* Created on 3/11/12 4:08 PM
*
* @author: Edi Weissmann
*/
public class PageRangeAdapterTest {
@Test
public void testPositive() {
assertThat(new PageRangeAdapter("1-3").getPageRange(), is(new PageRange(1, 3)));
assertThat(new PageRangeAdapter("3").getPageRange(), is(new PageRange(3, 3)));
assertThat(new PageRangeAdapter("7-").getPageRange(), is(new PageRange(7)));
assertThat(new PageRangeAdapter("7 -8 ").getPageRange(), is(new PageRange(7, 8)));
assertThat(new PageRangeWithAllAdapter("all").getPageRange(), is(new PageRange(1)));
assertThat(new PageRangeWithAllAdapter("1-3").getPageRange(), is(new PageRange(1, 3)));
}
@Test
public void testNegative() {
failsWith("1,3", "Unparsable page range '1,3'");
failsWith("all", "Unparsable page range 'all'");
failsWith("4-3", "Invalid page range '4-3', ends before starting");
failsWith("1-3-4", "Unparsable page range '1-3-4'");
}
private void failsWith(String input, String expectedMsg) {
try {
new PageRangeAdapter(input).getPageRange();
fail("Expected conversion exception: " + expectedMsg);
} catch (ConversionException e) {
assertThat(e.getMessage(), containsString(expectedMsg));
}
}
}