/** * Constructor. * * @param params parsed command line parameters * @throws ParseException */ public TtmlConverter(TtmlConverterCmdLineParams params) throws ParseException { outputFile = new File(params.getOutputFile()); if (!Files.isWritable(Paths.get((outputFile.getParent() == null) ? "." : outputFile.getParent()))) { throw new ParseException(String.format( "Output file %s cannot be written. Please check access rights.", params.getOutputFile())); } ttmlTts = params.getTtmlOptions().stream().map((o) -> { TtEltype tt; try { tt = XmlParser.parse(new File(o.getFileName()), new String[]{TTML_SCHEMA}, TTML_PACKAGES, TtEltype.class); } catch (XmlParsingException | FileNotFoundException e) { throw new ParseException(e); } TtmlUtils.reduceAccordingSegment(tt, o.getOffsetMS(), o.getStartMS(), o.getEndMS(), params.getFrameRate()); TtmlUtils.moveStyleRefToP(tt); return tt; }).collect(Collectors.toList()); }
@Test public void ttmlOptionParsedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "test", "0", "200", "45", "-o", "testFile", "-f", "24000/1001"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals(1, params.getTtmlOptions().size()); TtmlOption option = params.getTtmlOptions().get(0); assertEquals("ttml option file part", args[1], option.getFileName()); assertEquals("ttml option offset part", Long.parseLong(args[2]), option.getOffsetMS()); assertEquals("ttml option start part", Long.parseLong(args[3]), option.getStartMS()); assertEquals("ttml option end part", Long.parseLong(args[4]), option.getEndMS()); }
@Test public void manyTtmlOptionsParsedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "test1", "0", "200", "45", "-t", "test2", "10", "40", "67", "-o", "test"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals(2, params.getTtmlOptions().size()); TtmlOption option1 = params.getTtmlOptions().get(0); assertEquals("ttml option file part", args[1], option1.getFileName()); assertEquals("ttml option offset part", Long.parseLong(args[2]), option1.getOffsetMS()); assertEquals("ttml option start part", Long.parseLong(args[3]), option1.getStartMS()); assertEquals("ttml option end part", Long.parseLong(args[4]), option1.getEndMS()); TtmlOption option2 = params.getTtmlOptions().get(1); assertEquals("ttml option file part", args[6], option2.getFileName()); assertEquals("ttml option offset part", Long.parseLong(args[7]), option2.getOffsetMS()); assertEquals("ttml option start part", Long.parseLong(args[8]), option2.getStartMS()); assertEquals("ttml option end part", Long.parseLong(args[9]), option2.getEndMS()); }
@Test public void ttmlOptionWithoutOffsetArgsPrasedCorrectly() { /* PREPARATION */ String[] args = new String[]{"-t", "file", "-o", "test"}; /* EXECUTION */ TtmlConverterCmdLineParams params = new TtmlConverterCmdLineParser().parse(args); /* VALIDATION */ assertEquals(1, params.getTtmlOptions().size()); TtmlOption option = params.getTtmlOptions().get(0); assertEquals("ttml option file part", args[1], option.getFileName()); assertEquals("ttml option offset part", 0, option.getOffsetMS()); assertEquals("ttml option start part", 0, option.getStartMS()); assertEquals("ttml option end part", Long.MAX_VALUE, option.getEndMS()); }