/* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.groupbasedpolicy.sf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; import com.google.common.collect.ImmutableList; import org.junit.Before; import org.junit.Test; import org.opendaylight.groupbasedpolicy.dto.ValidationResultBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.parameter.type.IntBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.SupportedClassifierDefinition; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.SupportedClassifierDefinitionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.classifier.definition.SupportedParameterValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.classifier.definition.SupportedParameterValuesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.supported._int.value.fields.SupportedIntValueInRangeBuilder; public class ClassifierInstanceValidatorTest { private static final String RENDERER = "renderer"; private static final String PARENT_CLASSIFIER_DEFINITION_ID = "cdId-0"; private static final String CLASSIFIER_DEFINITION_ID = "cdId-1"; private static final String PARAM_NAME = "param_name"; private static final String CLASSIFIER1 = "classifier1"; private ClassifierDefinitionId cdId; private ClassifierDefinitionId parentCdId; private List<SupportedParameterValues> supportedParameterValues; @Before public void init() { cdId = new ClassifierDefinitionId(CLASSIFIER_DEFINITION_ID); parentCdId = new ClassifierDefinitionId(PARENT_CLASSIFIER_DEFINITION_ID); supportedParameterValues = ImmutableList.of( new SupportedParameterValuesBuilder().setParameterName(new ParameterName(PARAM_NAME)) .setParameterType(new IntBuilder() .setSupportedIntValueInRange(ImmutableList .of(new SupportedIntValueInRangeBuilder().setMin(0l).setMax(1000l).build())) .build()) .build()); } @Test public void testConstructor() { SupportedClassifierDefinition constraint = new SupportedClassifierDefinitionBuilder() .setClassifierDefinitionId(cdId) .setParentClassifierDefinitionId(parentCdId) .setSupportedParameterValues(supportedParameterValues) .build(); RendererName rendererName = new RendererName(RENDERER); ClassifierInstanceValidator validator = new ClassifierInstanceValidator(constraint, rendererName); assertEquals(CLASSIFIER_DEFINITION_ID, validator.getClassifierDefinitionId().getValue()); assertNotNull(validator.getParentClassifierDefinitionId()); assertEquals(PARENT_CLASSIFIER_DEFINITION_ID, validator.getParentClassifierDefinitionId().getValue()); assertEquals(RENDERER, validator.getRendererName().getValue()); assertEquals(supportedParameterValues.size(), validator.getSupportedParameters().size()); } @Test public void testConstructor_noSupportedParameters() { SupportedClassifierDefinition constraint = new SupportedClassifierDefinitionBuilder() .setClassifierDefinitionId(cdId).setParentClassifierDefinitionId(parentCdId).build(); RendererName rendererName = new RendererName(RENDERER); ClassifierInstanceValidator validator = new ClassifierInstanceValidator(constraint, rendererName); assertEquals(CLASSIFIER_DEFINITION_ID, validator.getClassifierDefinitionId().getValue()); assertNotNull(validator.getParentClassifierDefinitionId()); assertEquals(PARENT_CLASSIFIER_DEFINITION_ID, validator.getParentClassifierDefinitionId().getValue()); assertEquals(RENDERER, validator.getRendererName().getValue()); assertTrue(validator.getSupportedParameters().isEmpty()); } @Test public void testValidate() { ClassifierInstanceBuilder ciBuilder = new ClassifierInstanceBuilder(); ciBuilder.setName(new ClassifierName(CLASSIFIER1)); ciBuilder.setParameterValue(ImmutableList .of(new ParameterValueBuilder().setName(new ParameterName(PARAM_NAME)).setIntValue(100l).build())); SupportedClassifierDefinition constraint = new SupportedClassifierDefinitionBuilder() .setClassifierDefinitionId(cdId) .setParentClassifierDefinitionId(parentCdId) .setSupportedParameterValues(supportedParameterValues) .build(); RendererName rendererName = new RendererName(RENDERER); ClassifierInstanceValidator validator = new ClassifierInstanceValidator(constraint, rendererName); assertEquals(new ValidationResultBuilder().success().build(), validator.validate(ciBuilder.build())); } }