/*
* 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.vpp.policy;
import java.util.Arrays;
import org.junit.Assert;
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroup;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.policy.configuration.rule.groups.RuleGroupBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRule;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
import com.google.common.collect.ImmutableSortedSet;
public class ResolvedRuleGroupTest {
private static final ContractId CONTRACT1_ID = new ContractId("contract1");
private static final TenantId TENANT1_ID = new TenantId("tenant1");
private static final SubjectName SUBJECT1_NAME = new SubjectName("subject1");
private static final RuleName RULE1_NAME = new RuleName("rule1");
private static final RuleGroup RULE_GROUP1 = new RuleGroupBuilder().setContractId(CONTRACT1_ID)
.setTenantId(TENANT1_ID)
.setSubjectName(SUBJECT1_NAME)
.setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE1_NAME).build()))
.build();
private static final ContractId CONTRACT2_ID = new ContractId("contract2");
private static final TenantId TENANT2_ID = new TenantId("tenant2");
private static final SubjectName SUBJECT2_NAME = new SubjectName("subject2");
private static final RuleName RULE2_NAME = new RuleName("rule2");
private static final RuleName RULE3_NAME = new RuleName("rule3");
private static final RuleGroup RULE_GROUP2 = new RuleGroupBuilder().setContractId(CONTRACT2_ID)
.setTenantId(TENANT2_ID)
.setSubjectName(SUBJECT2_NAME)
.setResolvedRule(Arrays.asList(new ResolvedRuleBuilder().setName(RULE3_NAME).build(), new ResolvedRuleBuilder().setName(RULE2_NAME).build()))
.build();
@Test
public void testConstructor_ruleGroup() throws Exception {
ResolvedRuleGroup resolvedRuleGroup = new ResolvedRuleGroup(RULE_GROUP1);
Assert.assertEquals(resolvedRuleGroup.getContractTenantId(), RULE_GROUP1.getTenantId());
Assert.assertEquals(resolvedRuleGroup.getContractId(), RULE_GROUP1.getContractId());
Assert.assertEquals(resolvedRuleGroup.getRelatedSubject(), RULE_GROUP1.getSubjectName());
Assert.assertEquals(resolvedRuleGroup.getOrder(), RULE_GROUP1.getOrder());
Assert.assertArrayEquals(resolvedRuleGroup.getRules().toArray(), RULE_GROUP1.getResolvedRule().toArray());
}
@Test
public void testConstructor_params() throws Exception {
ResolvedRuleGroup resolvedRuleGroup = new ResolvedRuleGroup(RULE_GROUP1.getResolvedRule(), RULE_GROUP1.getOrder(),
RULE_GROUP1.getTenantId(), RULE_GROUP1.getContractId(), RULE_GROUP1.getSubjectName());
Assert.assertEquals(resolvedRuleGroup.getContractTenantId(), RULE_GROUP1.getTenantId());
Assert.assertEquals(resolvedRuleGroup.getContractId(), RULE_GROUP1.getContractId());
Assert.assertEquals(resolvedRuleGroup.getRelatedSubject(), RULE_GROUP1.getSubjectName());
Assert.assertEquals(resolvedRuleGroup.getOrder(), RULE_GROUP1.getOrder());
Assert.assertArrayEquals(resolvedRuleGroup.getRules().toArray(), RULE_GROUP1.getResolvedRule().toArray());
}
@Test
public void testCompareTo_noOrder() {
ResolvedRuleGroup resolvedRuleGroup1 = new ResolvedRuleGroup(RULE_GROUP1);
ResolvedRuleGroup resolvedRuleGroup2 = new ResolvedRuleGroup(RULE_GROUP2);
Assert.assertEquals(-1, resolvedRuleGroup1.compareTo(resolvedRuleGroup2));
}
@Test
public void testCompareTo_withOrder() {
ResolvedRuleGroup resolvedRuleGroup1 = new ResolvedRuleGroup(new RuleGroupBuilder(RULE_GROUP1).setOrder(2).build());
ResolvedRuleGroup resolvedRuleGroup2 = new ResolvedRuleGroup(new RuleGroupBuilder(RULE_GROUP2).setOrder(1).build());
Assert.assertEquals(1, resolvedRuleGroup1.compareTo(resolvedRuleGroup2));
ImmutableSortedSet<ResolvedRule> rules = resolvedRuleGroup2.getRules();
Assert.assertEquals(2, rules.size());
Assert.assertEquals(RULE_GROUP2.getResolvedRule().get(1), rules.first());
Assert.assertEquals(RULE_GROUP2.getResolvedRule().get(0), rules.last());
}
}