Adding unit tests for vpp-renderer
[groupbasedpolicy.git] / renderers / vpp / src / test / java / org / opendaylight / groupbasedpolicy / renderer / vpp / policy / ResolvedRuleGroupTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. 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.groupbasedpolicy.renderer.vpp.policy;
10
11 import java.util.Arrays;
12
13 import org.junit.Assert;
14 import org.junit.Test;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroup;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroupBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRule;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
23
24 import com.google.common.collect.ImmutableSortedSet;
25
26 public class ResolvedRuleGroupTest {
27
28     private static final ContractId CONTRACT1_ID = new ContractId("contract1");
29     private static final TenantId TENANT1_ID = new TenantId("tenant1");
30     private static final SubjectName SUBJECT1_NAME = new SubjectName("subject1");
31     private static final RuleName RULE1_NAME = new RuleName("rule1");
32     private static final RuleGroup RULE_GROUP1 = new RuleGroupBuilder().setContractId(CONTRACT1_ID)
33         .setTenantId(TENANT1_ID)
34         .setSubjectName(SUBJECT1_NAME)
35         .setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE1_NAME).build()))
36         .build();
37     private static final ContractId CONTRACT2_ID = new ContractId("contract2");
38     private static final TenantId TENANT2_ID = new TenantId("tenant2");
39     private static final SubjectName SUBJECT2_NAME = new SubjectName("subject2");
40     private static final RuleName RULE2_NAME = new RuleName("rule2");
41     private static final RuleName RULE3_NAME = new RuleName("rule3");
42     private static final RuleGroup RULE_GROUP2 = new RuleGroupBuilder().setContractId(CONTRACT2_ID)
43         .setTenantId(TENANT2_ID)
44         .setSubjectName(SUBJECT2_NAME)
45         .setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE3_NAME).build(), new ResolvedRuleBuilder().setName(RULE2_NAME).build()))
46         .build();
47
48     @Test
49     public void testConstructor_ruleGroup() throws Exception {
50         ResolvedRuleGroup resolvedRuleGroup = new ResolvedRuleGroup(RULE_GROUP1);
51         Assert.assertEquals(resolvedRuleGroup.getContractTenantId(), RULE_GROUP1.getTenantId());
52         Assert.assertEquals(resolvedRuleGroup.getContractId(), RULE_GROUP1.getContractId());
53         Assert.assertEquals(resolvedRuleGroup.getRelatedSubject(), RULE_GROUP1.getSubjectName());
54         Assert.assertEquals(resolvedRuleGroup.getOrder(), RULE_GROUP1.getOrder());
55         Assert.assertArrayEquals(resolvedRuleGroup.getRules().toArray(), RULE_GROUP1.getResolvedRule().toArray());
56     }
57
58     @Test
59     public void testConstructor_params() throws Exception {
60         ResolvedRuleGroup resolvedRuleGroup = new ResolvedRuleGroup(RULE_GROUP1.getResolvedRule(), RULE_GROUP1.getOrder(),
61                 RULE_GROUP1.getTenantId(), RULE_GROUP1.getContractId(), RULE_GROUP1.getSubjectName());
62         Assert.assertEquals(resolvedRuleGroup.getContractTenantId(), RULE_GROUP1.getTenantId());
63         Assert.assertEquals(resolvedRuleGroup.getContractId(), RULE_GROUP1.getContractId());
64         Assert.assertEquals(resolvedRuleGroup.getRelatedSubject(), RULE_GROUP1.getSubjectName());
65         Assert.assertEquals(resolvedRuleGroup.getOrder(), RULE_GROUP1.getOrder());
66         Assert.assertArrayEquals(resolvedRuleGroup.getRules().toArray(), RULE_GROUP1.getResolvedRule().toArray());
67     }
68
69     @Test
70     public void testCompareTo_noOrder() {
71         ResolvedRuleGroup resolvedRuleGroup1 = new ResolvedRuleGroup(RULE_GROUP1);
72         ResolvedRuleGroup resolvedRuleGroup2 = new ResolvedRuleGroup(RULE_GROUP2);
73         Assert.assertEquals(-1, resolvedRuleGroup1.compareTo(resolvedRuleGroup2));
74     }
75
76     @Test
77     public void testCompareTo_withOrder() {
78         ResolvedRuleGroup resolvedRuleGroup1 = new ResolvedRuleGroup(new RuleGroupBuilder(RULE_GROUP1).setOrder(2).build());
79         ResolvedRuleGroup resolvedRuleGroup2 = new ResolvedRuleGroup(new RuleGroupBuilder(RULE_GROUP2).setOrder(1).build());
80         Assert.assertEquals(1, resolvedRuleGroup1.compareTo(resolvedRuleGroup2));
81         ImmutableSortedSet<ResolvedRule> rules = resolvedRuleGroup2.getRules();
82         Assert.assertEquals(2, rules.size());
83         Assert.assertEquals(RULE_GROUP2.getResolvedRule().get(1), rules.first());
84         Assert.assertEquals(RULE_GROUP2.getResolvedRule().get(0), rules.last());
85     }
86
87 }