2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.drools.activestandby;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
27 import java.util.Date;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.onap.policy.drools.activestandby.DroolsPdp;
33 import org.onap.policy.drools.activestandby.DroolsPdpObject;
35 public class DroolsPdpObjectTest {
36 private static final String PDP_ID = "my-id";
37 private static final String PDP_ID2 = "my-id2";
38 private static final String SITE = "my-site";
39 private static final String SITE2 = "my-site2";
40 private static final int PRIORITY = 11;
41 private static final int PRIORITY2 = 12;
47 pdp = makePdp(PDP_ID, SITE, PRIORITY);
51 public void testEqualsObject() {
53 assertTrue(pdp.equals(pdp));
56 MyPdp pdp2 = new MyPdp();
57 pdp2.setPdpId(PDP_ID);
58 assertTrue(pdp.equals(pdp2));
61 pdp2.setPdpId(PDP_ID2);
62 assertFalse(pdp.equals(pdp2));
64 // different type of object
65 assertFalse(pdp.equals(""));
69 public void testHashCode() {
70 int hc = pdp.hashCode();
72 // same data should yield same hash code
73 assertEquals(hc, pdp.hashCode());
74 assertEquals(hc, makePdp(PDP_ID, SITE, PRIORITY).hashCode());
76 // different data should yield different hash code
77 assertTrue(makePdp(PDP_ID2, SITE, PRIORITY).hashCode() != hc);
79 // these fields have no impact on hash code
80 assertEquals(hc, makePdp(PDP_ID, SITE, PRIORITY2).hashCode());
81 assertEquals(hc, makePdp(PDP_ID, SITE2, PRIORITY).hashCode());
83 // should not throw an exception
84 new MyPdp().hashCode();
88 public void testNullSafeCompare() {
90 pdp.setSiteName(null);
91 assertEquals(0, pdp.comparePriority(pdp));
94 MyPdp pdp2 = makePdp(PDP_ID, null, PRIORITY);
95 assertEquals(0, pdp.comparePriority(pdp2));
98 pdp2 = makePdp(PDP_ID, SITE, PRIORITY);
99 assertEquals(-1, pdp.comparePriority(pdp2));
101 // right null - note: args are reversed
102 pdp2 = makePdp(PDP_ID, SITE, PRIORITY);
103 assertEquals(1, pdp2.comparePriority(pdp));
107 public void testComparePriorityDroolsPdp() {
109 assertEquals(0, pdp.comparePriority(pdp));
112 MyPdp pdp2 = makePdp(PDP_ID, SITE, PRIORITY);
113 assertEquals(0, pdp.comparePriority(pdp2));
116 pdp2 = makePdp(PDP_ID, SITE2, PRIORITY);
117 assertEquals(SITE.compareTo(SITE2), pdp.comparePriority(pdp2));
119 // different priority
120 pdp2 = makePdp(PDP_ID, SITE, PRIORITY2);
121 assertEquals(PRIORITY - PRIORITY2, pdp.comparePriority(pdp2));
124 pdp2 = makePdp(PDP_ID2, SITE, PRIORITY);
125 assertEquals(PDP_ID.compareTo(PDP_ID2), pdp.comparePriority(pdp2));
129 public void testComparePriorityDroolsPdpString() {
130 final int result = 1000;
132 // override other comparison method so we know if it's called
133 MyPdp pdp2 = new MyPdp() {
135 public int comparePriority(DroolsPdp other) {
140 pdp2.setPdpId(PDP_ID);
141 pdp2.setSiteName(SITE2);
142 pdp2.setPriority(PRIORITY);
144 // should use overridden comparison method
145 assertEquals(result, pdp2.comparePriority(pdp, null));
146 assertEquals(result, pdp2.comparePriority(pdp, ""));
148 // should use normal comparison method
149 assertEquals(SITE2.compareTo(SITE), pdp2.comparePriority(pdp, SITE));
152 private MyPdp makePdp(String id, String site, int priority) {
153 MyPdp pdp2 = new MyPdp();
155 pdp2.setSiteName(site);
157 pdp2.setPriority(priority);
164 private class MyPdp extends DroolsPdpObject {
165 private String pdpId;
166 private boolean designated;
167 private int priority;
168 private Date updatedDate;
169 private String siteName;
170 private Date designatedDate;