0d60aa6b6ddd5b6ecba95f1052f91311a0ebe28c
[packetcable.git] / packetcable-policy-server / src / test / java / org / opendaylight / controller / packetcable / provider / validation / impl / validators / qos / classifier / ClassifierChoiceValidatorTest.java
1 /*
2  * Copyright (c) 2015 CableLabs and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.controller.packetcable.provider.validation.impl.validators.qos.classifier;
10
11 import org.junit.Rule;
12 import org.junit.Test;
13 import org.opendaylight.controller.packetcable.provider.test.rules.Params;
14 import org.opendaylight.controller.packetcable.provider.validation.ValidationException;
15 import org.opendaylight.controller.packetcable.provider.validation.Validator;
16 import org.opendaylight.yang.gen.v1.urn.packetcable.rev151101.classifier.attributes.classifiers.classifier.container.ClassifierChoice;
17 import org.opendaylight.yang.gen.v1.urn.packetcable.rev151101.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoice;
18 import org.opendaylight.yang.gen.v1.urn.packetcable.rev151101.classifier.attributes.classifiers.classifier.container.classifier.choice.ExtClassifierChoiceBuilder;
19 import org.opendaylight.yang.gen.v1.urn.packetcable.rev151101.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoice;
20 import org.opendaylight.yang.gen.v1.urn.packetcable.rev151101.classifier.attributes.classifiers.classifier.container.classifier.choice.Ipv6ClassifierChoiceBuilder;
21 import org.opendaylight.yang.gen.v1.urn.packetcable.rev151101.classifier.attributes.classifiers.classifier.container.classifier.choice.QosClassifierChoiceBuilder;
22 import org.opendaylight.yangtools.yang.binding.DataContainer;
23
24 /**
25  * @author rvail
26  */
27 @Params.AlwaysUseParams
28 public class ClassifierChoiceValidatorTest {
29
30     @Rule
31     public Params<Validator.Extent> extentParams = Params.of(Validator.Extent.class);
32
33     private final ClassifierChoiceValidator validator = new ClassifierChoiceValidator();
34
35     @Test(expected = ValidationException.class)
36     public void testNullClassifierChoice() throws ValidationException {
37         validator.validate(null, extentParams.getCurrentParam());
38     }
39
40     @Params.DoNotUseParams
41     @Test(expected = NullPointerException.class)
42     public void testNullExtent() throws ValidationException {
43         validator.validate(buildValidQosClassifierChoice(), null);
44     }
45
46     @Test(expected = IllegalStateException.class)
47     public void testUnknownClassifierChoiceClass() throws ValidationException {
48         ClassifierChoice unknownChoice = new ClassifierChoice() {
49             @Override
50             public Class<? extends DataContainer> getImplementedInterface() {
51                 return null;
52             }
53         };
54         validator.validate(unknownChoice, extentParams.getCurrentParam());
55     }
56
57     @Test
58     public void testValid() throws ValidationException {
59        validator.validate(buildValidQosClassifierChoice(),extentParams.getCurrentParam());
60     }
61
62     @Test
63     public void testValidExt() throws ValidationException {
64         validator.validate(buildValidExtClassifierChoice(), extentParams.getCurrentParam());
65     }
66
67     @Test
68     public void testValidIpv6() throws ValidationException {
69         validator.validate(buildValidIpv6ClassifierChoice(), extentParams.getCurrentParam());
70     }
71
72     public static ClassifierChoice buildValidQosClassifierChoice() {
73         return new QosClassifierChoiceBuilder()
74                 .setClassifier(ClassifierValidatorTest.buildValidClassifierTree())
75                 .build();
76     }
77
78     public static ExtClassifierChoice buildValidExtClassifierChoice() {
79         return new ExtClassifierChoiceBuilder()
80                 .setExtClassifier(ExtClassifierValidatorTest.buildValidExtClassifier())
81                 .build();
82     }
83
84     public static Ipv6ClassifierChoice buildValidIpv6ClassifierChoice() {
85         return new Ipv6ClassifierChoiceBuilder()
86                 .setIpv6Classifier(Ipv6ClassifierValidatorTest.buildValidIpv6Classifier())
87                 .build();
88     }
89
90 }