/*
* 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.renderer.iovisor.sf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import org.opendaylight.groupbasedpolicy.api.sf.IpProtoClassifierDefinition;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.ParameterType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.parameter.type.Int;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.classifier.definition.SupportedParameterValues;
public class IpProtoClassifierTest {
@Test
public void testGetId() {
assertEquals(IpProtoClassifierDefinition.ID, Classifier.IP_PROTO_CL.getId());
}
@Test
public void testGetClassifierDefinition() {
assertEquals(IpProtoClassifierDefinition.DEFINITION, Classifier.IP_PROTO_CL.getClassifierDefinition());
}
@Test
public void testGetSupportedParameterValues() {
List<SupportedParameterValues> valuesList = Classifier.IP_PROTO_CL.getSupportedParameterValues();
assertEquals(1, valuesList.size());
SupportedParameterValues values = valuesList.get(0);
assertNotNull(values);
assertEquals(IpProtoClassifierDefinition.PROTO_PARAM, values.getParameterName().getValue());
ParameterType pt = values.getParameterType();
assertTrue(pt instanceof Int);
}
@Test
public void testCheckPresenceOfRequiredParams() {
Map<String, ParameterValue> params = prepareParams(IpProtoClassifierDefinition.UDP_VALUE);
try {
Classifier.IP_PROTO_CL.checkPresenceOfRequiredParams(params);
} catch (IllegalArgumentException e) {
fail("Required parameter missing");
}
}
@Test(expected = IllegalArgumentException.class)
public void testCheckPresenceOfRequiredParams_noParam() {
Map<String, ParameterValue> params = new HashMap<>();
Classifier.IP_PROTO_CL.checkPresenceOfRequiredParams(params);
}
@Test(expected = IllegalArgumentException.class)
public void testCheckPresenceOfRequiredParams_nullValue() {
Map<String, ParameterValue> params = prepareParams_nullValue();
Classifier.IP_PROTO_CL.checkPresenceOfRequiredParams(params);
}
@Test
public void testGetIpProtoValue() {
Long expected = IpProtoClassifierDefinition.UDP_VALUE;
assertEquals(expected, IpProtoClassifier.getIpProtoValue(prepareParams(expected)));
}
@Test
public void testGetIpProtoValue_badParams() {
Map<String, ParameterValue> params = prepareParams_nullValue();
assertNull(IpProtoClassifier.getIpProtoValue(params));
assertNull(IpProtoClassifier.getIpProtoValue(new HashMap<String, ParameterValue>()));
assertNull(IpProtoClassifier.getIpProtoValue(null));
}
@Test
public void testGetParent() {
assertEquals(Classifier.IP_PROTO_CL.getParent(), Classifier.ETHER_TYPE_CL);
}
private Map<String, ParameterValue> prepareParams(Long intValue) {
Map<String, ParameterValue> params = new HashMap<>();
ParameterValue pv = new ParameterValueBuilder().setIntValue(intValue).build();
params.put(IpProtoClassifierDefinition.PROTO_PARAM, pv);
return params;
}
private Map<String, ParameterValue> prepareParams_nullValue() {
Map<String, ParameterValue> params = new HashMap<>();
ParameterValue pv = new ParameterValueBuilder().build();
params.put(IpProtoClassifierDefinition.PROTO_PARAM, pv);
return params;
}
}