@Test public void testEquals() { PdfMixInput firstInput = mock(PdfMixInput.class); PdfMixInput secondInput = mock(PdfMixInput.class); AlternateMixMultipleInputParameters eq1 = new AlternateMixMultipleInputParameters(); eq1.addInput(firstInput); eq1.addInput(secondInput); AlternateMixMultipleInputParameters eq2 = new AlternateMixMultipleInputParameters(); eq2.addInput(firstInput); eq2.addInput(secondInput); AlternateMixMultipleInputParameters eq3 = new AlternateMixMultipleInputParameters(); eq3.addInput(firstInput); eq3.addInput(secondInput); AlternateMixMultipleInputParameters diff = new AlternateMixMultipleInputParameters(); diff.addInput(firstInput); TestUtils.testEqualsAndHashCodes(eq1, eq2, eq3, diff); }
/** * Transforms {@link AlternateMixTaskCliArguments} to {@link AlternateMixMultipleInputParameters} * * @param taskCliArguments * @return populated parameters */ @Override public AlternateMixMultipleInputParameters toTaskParameters(AlternateMixTaskCliArguments taskCliArguments) { List<PdfFileSource> sources = taskCliArguments.getFiles().stream().flatMap(a -> a.getPdfFileSources().stream()) .collect(Collectors.toList()); if (sources.size() != 2) { throw new ArgumentValidationException( "Please specify two files as input parameters, found " + taskCliArguments.getFiles().size()); } AlternateMixMultipleInputParameters parameters = new AlternateMixMultipleInputParameters(); parameters.addInput( new PdfMixInput(sources.get(0), taskCliArguments.isReverseFirst(), taskCliArguments.getFirstStep())); parameters.addInput( new PdfMixInput(sources.get(1), taskCliArguments.isReverseSecond(), taskCliArguments.getSecondStep())); populateOutputTaskParameters(parameters, taskCliArguments); populateAbstractParameters(parameters, taskCliArguments); return parameters; } }
@Test public void testInvalidParametersNullSource() throws IOException { AlternateMixMultipleInputParameters victim = new AlternateMixMultipleInputParameters(); victim.addInput(new PdfMixInput(PdfFileSource.newInstanceNoPassword(tmpFolder.newFile("test.pdf")), false, 1)); victim.addInput(new PdfMixInput(null, false, 1)); victim.setOutput(new FileTaskOutput(tmpFolder.newFile("out.pdf"))); TestUtils.assertInvalidParameters(victim); } }
@Test public void withStandardInput() throws IOException { AlternateMixMultipleInputParameters parameters = new AlternateMixMultipleInputParameters(); parameters.addInput(new PdfMixInput(shortInput())); parameters.addInput(new PdfMixInput(shortInput(), true, 3)); setUpParameters(parameters); testContext.pdfOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.assertCreator().assertPages(8).assertVersion(PdfVersion.VERSION_1_5); }
@Test public void withEncryptedInput() throws IOException { AlternateMixMultipleInputParameters parameters = new AlternateMixMultipleInputParameters(); parameters.addInput(new PdfMixInput(encryptedInput())); parameters.addInput(new PdfMixInput(stronglyEncryptedInput(), true, 3)); setUpParameters(parameters); testContext.pdfOutputTo(parameters); execute(parameters); testContext.assertTaskCompleted(); testContext.assertCreator().assertPages(8).assertVersion(PdfVersion.VERSION_1_5); }
@Test public void invalidMinInputSize() throws IOException { AlternateMixMultipleInputParameters victim = new AlternateMixMultipleInputParameters(); victim.addInput(new PdfMixInput(PdfFileSource.newInstanceNoPassword(tmpFolder.newFile("test.pdf")), false, 1)); victim.setOutput(new FileTaskOutput(tmpFolder.newFile("out.pdf"))); TestUtils.assertInvalidParameters(victim); }
@Test public void threeDocsMerge() throws IOException { AlternateMixMultipleInputParameters params = new AlternateMixMultipleInputParameters(); params.addInput(new PdfMixInput(shortInput(), true, 1)); params.addInput(new PdfMixInput(stronglyEncryptedInput(), true, 3)); params.addInput(new PdfMixInput(largeOutlineInput())); setUpParameters(params); testContext.pdfOutputTo(params); execute(params); testContext.assertTaskCompleted(); testContext.assertCreator().assertPages(13).assertVersion(PdfVersion.VERSION_1_5).forPdfOutput(d -> { assertHeaderContains(d.getPage(0), "Pagina 4 di 4"); assertHeaderContains(d.getPage(5), "Pagina 3 di 4"); assertHeaderContains(d.getPage(8), "Pagina 2 di 4"); assertHeaderContains(d.getPage(10), "Pagina 1 di 4"); }); }
@Test public void threeDocsMergeWithPageSelection() throws IOException { AlternateMixMultipleInputParameters params = new AlternateMixMultipleInputParameters(); PdfMixInput first = new PdfMixInput(shortInput(), true, 1); first.addPageRange(new PageRange(1, 2)); params.addInput(first); PdfMixInput second = new PdfMixInput(stronglyEncryptedInput(), false, 2); params.addInput(second); PdfMixInput third = new PdfMixInput(largeInput(), false, 6); third.addPageRange(new PageRange(5, 10)); third.addPageRange(new PageRange(22, 23)); params.addInput(third); setUpParameters(params); testContext.pdfOutputTo(params); execute(params); testContext.assertTaskCompleted(); testContext.assertCreator().assertPages(14).assertVersion(PdfVersion.VERSION_1_5).forPdfOutput(d -> { assertHeaderContains(d.getPage(0), "Pagina 2 di 4"); assertHeaderContains(d.getPage(9), "Pagina 1 di 4"); }); }