public static void addResourceContextParameter(TemplateParameterContextProvider contextProvider, int segm, int seq, SequenceType seqType, int res, int repeat, ResourceContextParameters param, String paramValue) { contextProvider.getResourceContext().addResourceParameter( ResourceKey.create(getSegmentUuid(segm), getSequenceUuid(seq, seqType), seqType), getResourceUuid(segm, seq, seqType, res, repeat), param, paramValue); }
public static ContextInfo createResourceContextInfo(int segm, int seq, SequenceType seqType, int res, int repeat) { return new ContextInfoBuilder() .setSequenceType(seqType) .setSegmentUuid(getSegmentUuid(segm)) .setSequenceUuid(getSequenceUuid(seq, seqType)) .setResourceUuid(getResourceUuid(segm, seq, seqType, res, repeat)) .build(); }
@Test(expected = TemplateParameterNotFoundException.class) public void exceptionOnIncorrectResourceParameterSegment() { // we have only 2 segments (0 and 1) resolver.resolveTemplateParameter("%{resource.essence}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(10)) .setSequenceUuid(getSequenceUuid(0, SequenceType.VIDEO)) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(getResourceUuid(10, 0, SequenceType.VIDEO, 0, 0)) .build()); }
@Test(expected = TemplateParameterNotFoundException.class) public void exceptionOnIncorrectResourceParameterResource() { // we have only 2 resources (0 and 1) resolver.resolveTemplateParameter("%{resource.essence}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.VIDEO)) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(getResourceUuid(0, 0, SequenceType.VIDEO, 10, 0)) .build()); }
@Test(expected = UnknownTemplateParameterNameException.class) public void exceptionOnIncorrectResourceParameterName() { resolver.resolveTemplateParameter("%{resource.xxxx}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.VIDEO)) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(getResourceUuid(0, 0, SequenceType.VIDEO, 0, 0)) .build()); }
@Test(expected = TemplateParameterNotFoundException.class) public void exceptionOnIncorrectResourceParameterSequence() { // we have only 2 sequences (0 and 1) resolver.resolveTemplateParameter("%{resource.essence}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(10, SequenceType.VIDEO)) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(getResourceUuid(0, 10, SequenceType.VIDEO, 0, 0)) .build()); }
@Test(expected = TemplateParameterNotFoundException.class) public void exceptionOnIncorrectResourceParameterType() { // we didn't fill subtitle type resolver.resolveTemplateParameter("%{resource.essence}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.SUBTITLE)) .setSequenceType(SequenceType.SUBTITLE) .setResourceUuid(getResourceUuid(0, 0, SequenceType.SUBTITLE, 0, 0)) .build()); }
@Test(expected = TemplateParameterNotFoundException.class) public void exceptionOnIncorrectResourceParameterRepeat() { // we didn't fill subtitle type resolver.resolveTemplateParameter("%{resource.essence}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.SUBTITLE)) .setSequenceType(SequenceType.SUBTITLE) .setResourceUuid(getResourceUuid(0, 0, SequenceType.SUBTITLE, 0, 10)) .build()); }
@Test public void resolvesCorrectDynamicContextSubparameters() { contextProvider.getDynamicContext().addParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "valueWithSubparameters", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); String resolved1 = resolver.resolveTemplateParameter( "%{dynamic.name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); assertNotNull(resolved1); assertEquals("valueWithSubparameters", resolved1); }
@Test public void testAppendDynamicParameterWithParamsInNameAndValue() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2); contextProvider.getDynamicContext().appendParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); contextProvider.getDynamicContext().appendParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "_%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals(DEFAULT_PARAMETERS_COUNT + 1, contextProvider.getDynamicContext().getAllParametersAsString().size()); assertEquals("0-0-audio-0-tmpParamSimple_0-0-audio-0-tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("name-0-0-audio-0-tmpParamSimple")); }
@Test public void okAudioParameterNotSpecifiedInDestinationParams() throws Exception { // 1. create context with sample rate not specified DestContextTypeMap destContextMap = new DestContextMapBuilder() .setSampleRate(null) .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 2. create config disallow mismatched sample rate ConfigType config = new ConfigBuilder() .setSampleRate(false) .build(); // 3. create context with sample rate specified TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.AUDIO), SequenceType.AUDIO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.SAMPLE_RATE, "96000"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void okAudioParameterEmptyInDestinationParams() throws Exception { // 1. create context with sample rate is empty DestContextTypeMap destContextMap = new DestContextMapBuilder() .setSampleRate("") .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 2. create config disallow mismatched sample rate ConfigType config = new ConfigBuilder() .setSampleRate(false) .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 3. create context with sample rate specified TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.AUDIO), SequenceType.AUDIO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.SAMPLE_RATE, "96000"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void okVideoParameterEmptyInDestinationParams() throws Exception { // 1. create context with bit depth is empty DestContextTypeMap destContextMap = new DestContextMapBuilder() .setBitDepth("") .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 2. create config disallow mismatched bit depth ConfigType config = new ConfigBuilder() .setBitDepth(false) .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 3. create context with bit depth specified TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.VIDEO), SequenceType.VIDEO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.VIDEO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.BIT_DEPTH, "8"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void testAppendDynamicParameterWithParamsInValue() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2); contextProvider.getDynamicContext().appendParameter("appendDynamicWithParam1", "%{tmp.tmpParamSimple}_1", ContextInfo.EMPTY); contextProvider.getDynamicContext().appendParameter("appendDynamicWithParam1", "_%{tmp.tmpParamSimple}_2", ContextInfo.EMPTY); contextProvider.getDynamicContext().appendParameter( "appendDynamicWithParam2", "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); contextProvider.getDynamicContext().appendParameter( "appendDynamicWithParam2", "_%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(1)) .setSequenceUuid(getSequenceUuid(1, SequenceType.VIDEO)) .setResourceUuid(getResourceUuid(1, 1, SequenceType.VIDEO, 1, 0)) .setSequenceType(SequenceType.VIDEO).build()); assertEquals(DEFAULT_PARAMETERS_COUNT + 2, contextProvider.getDynamicContext().getAllParametersAsString().size()); assertEquals("tmpParamSimple_1_tmpParamSimple_2", contextProvider.getDynamicContext().getParameterValueAsString("appendDynamicWithParam1")); assertEquals("0-0-audio-0-tmpParamSimple_1-1-video-1-tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("appendDynamicWithParam2")); }
@Test public void testAppendDynamicParameterWithParamsInName() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2); contextProvider.getDynamicContext().appendParameter("%{tmp.tmpParamSimple}", "appendDynamicWithParam1", ContextInfo.EMPTY); contextProvider.getDynamicContext().appendParameter("%{tmp.tmpParamSimple}", "_appendDynamicWithParam1", ContextInfo.EMPTY); contextProvider.getDynamicContext().appendParameter( "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "appendDynamicWithParam2", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); contextProvider.getDynamicContext().appendParameter( "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "_appendDynamicWithParam2", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals(DEFAULT_PARAMETERS_COUNT + 2, contextProvider.getDynamicContext().getAllParametersAsString().size()); assertEquals("appendDynamicWithParam1_appendDynamicWithParam1", contextProvider.getDynamicContext().getParameterValueAsString("tmpParamSimple")); assertEquals("appendDynamicWithParam2_appendDynamicWithParam2", contextProvider.getDynamicContext().getParameterValueAsString("0-0-audio-0-tmpParamSimple")); }
@Test public void okVideoNotSpecifiedInConfigXml() throws Exception { // 1. create context with all parameters specified DestContextTypeMap destContextMap = new DestContextMapBuilder() .setBitsSample("24").setSampleRate("48000") .setBitDepth("10").setFrameRate("25").setHeight("1920").setWidth("1080").setPixelFmt("yuv422p10le") .build(); // 2. create config with video not specified ConfigType config = new ConfigBuilder() .setBitsSample(false).setSampleRate(false) .setNonNullVideo(false) .build(); // 3. create context with video specified and mismatched TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.VIDEO), SequenceType.VIDEO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.VIDEO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.FRAME_RATE, "30"); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.BIT_DEPTH, "8"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void testAddDynamicParameterWithParamsInValue() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2, 2); contextProvider.getDynamicContext().addParameter( "addDynamicWithParam1", "%{tmp.tmpParamSimple}", ContextInfo.EMPTY); contextProvider.getDynamicContext().addParameter( "addDynamicWithParam2", "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{resource.repeat}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(1, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 1, SequenceType.AUDIO, 1, 1)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals("tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("addDynamicWithParam1")); assertEquals("0-1-audio-3-1-tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("addDynamicWithParam2")); }
@Test public void okAudioNotSpecifiedInDestinationParams() throws Exception { // 1. create context with all parameters except audio specified DestContextTypeMap destContextMap = new DestContextMapBuilder() .setBitDepth("10").setFrameRate("25").setHeight("1920").setWidth("1080").setPixelFmt("yuv422p10le") .setNonNullAudio(false) .build(); // 2. create config disallow mismatched for all ConfigType config = new ConfigBuilder() .setBitsSample(false).setSampleRate(true) .setFrameRate(false).setBitDepth(false).setSize(false).setPixelFmt(false) .build(); // 3. create context with audio specified TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.AUDIO), SequenceType.AUDIO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.BITS_PER_SAMPLE, "16"); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.SAMPLE_RATE, "96000"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void testAddDynamicParameterWithParamsInNameAndValue() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2, 2); contextProvider.getDynamicContext().addParameter( "name-%{tmp.tmpParamSimple}", "%{tmp.tmpParamSimple}", ContextInfo.EMPTY); contextProvider.getDynamicContext().addParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{resource.repeat}-%{tmp.tmpParamSimple}", "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{resource.repeat}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(1, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 1, SequenceType.AUDIO, 1, 1)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals("tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("name-tmpParamSimple")); assertEquals("0-1-audio-3-1-tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("name-0-1-audio-3-1-tmpParamSimple")); }
@Test public void testAddDynamicParameterWithParamsInName() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2, 2); contextProvider.getDynamicContext().addParameter( "name-%{tmp.tmpParamSimple}", "value1", ContextInfo.EMPTY); contextProvider.getDynamicContext().addParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{resource.repeat}-%{tmp.tmpParamSimple}", "value2", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(1, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 1, SequenceType.AUDIO, 1, 1)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals("value1", contextProvider.getDynamicContext().getParameterValueAsString("name-tmpParamSimple")); assertEquals("value2", contextProvider.getDynamicContext().getParameterValueAsString("name-0-1-audio-3-1-tmpParamSimple")); }