3033a7bd5f08b874042ab624f6a129d74f10c854
[policy/drools-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * feature-session-persistence
4  * ================================================================================
5  * Copyright (C) 2017-2018 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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.policy.drools.persistence;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotEquals;
26 import static org.junit.Assert.assertTrue;
27
28 import java.util.Date;
29 import org.junit.Test;
30
31 public class DroolsSessionEntityTest {
32
33     @Test
34     public void testHashCode() {
35         DroolsSessionEntity entity = makeEnt("mynameA", 1);
36
37         DroolsSessionEntity e2 = makeEnt("mynameA", 2);
38
39         // session id is not part of hash code
40         assertEquals(entity.hashCode(), e2.hashCode());
41
42         // diff sess name
43         e2 = makeEnt("mynameB", 1);
44         assertNotEquals(entity.hashCode(), e2.hashCode());
45     }
46
47     /** Ensures that hashCode() functions as expected when the getXxx methods are overridden. */
48     @Test
49     public void testHashCode_Subclass() {
50         DroolsSessionEntity entity = makeEnt2("mynameA", 1);
51
52         DroolsSessionEntity e2 = makeEnt("mynameA", 2);
53
54         // session id is not part of hash code
55         assertEquals(entity.hashCode(), e2.hashCode());
56
57         // diff sess name
58         e2 = makeEnt("mynameB", 1);
59         assertNotEquals(entity.hashCode(), e2.hashCode());
60     }
61
62     @Test
63     public void testGetSessionName_testSetSessionName() {
64         DroolsSessionEntity entity = makeEnt("mynameZ", 1);
65
66         assertEquals("mynameZ", entity.getSessionName());
67
68         entity.setSessionName("another");
69         assertEquals("another", entity.getSessionName());
70
71         // others unchanged
72         assertEquals(1, entity.getSessionId());
73     }
74
75     @Test
76     public void testGetSessionId_testSetSessionId() {
77         DroolsSessionEntity entity = makeEnt("mynameA", 1);
78
79         assertEquals(1, entity.getSessionId());
80
81         entity.setSessionId(20);
82         assertEquals(20, entity.getSessionId());
83
84         // others unchanged
85         assertEquals("mynameA", entity.getSessionName());
86     }
87
88     @Test
89     public void testGetCreatedDate_testSetCreatedDate_testGetUpdatedDate_testSetUpdatedDate() {
90         DroolsSessionEntity entity = new DroolsSessionEntity();
91
92         Date crtdt = new Date(System.currentTimeMillis() - 100);
93         entity.setCreatedDate(crtdt);
94
95         Date updt = new Date(System.currentTimeMillis() - 200);
96         entity.setUpdatedDate(updt);
97
98         assertEquals(crtdt, entity.getCreatedDate());
99         assertEquals(updt, entity.getUpdatedDate());
100     }
101
102     @Test
103     public void testEqualsObject() {
104         DroolsSessionEntity entity = makeEnt("mynameA", 1);
105
106         // diff object type
107         assertNotEquals(entity, "hello");
108
109         // reflexive
110         assertEquals(entity, entity);
111
112         DroolsSessionEntity e2 = makeEnt("mynameA", 2);
113
114         // session id is not part of hash code
115         assertEquals(entity, e2);
116         assertEquals(entity, e2);
117
118         // diff sess name
119         e2 = makeEnt("mynameB", 1);
120         assertNotEquals(entity, e2);
121         assertNotEquals(entity, e2);
122     }
123
124     /** Ensures that equals() functions as expected when the getXxx methods are overridden. */
125     @Test
126     public void testEqualsObject_Subclass() {
127         DroolsSessionEntity entity = makeEnt2("mynameA", 1);
128
129         // reflexive
130         assertEquals(entity, entity);
131
132         DroolsSessionEntity e2 = makeEnt("mynameA", 2);
133
134         // session id is not part of hash code
135         assertEquals(entity, e2);
136         assertEquals(entity, e2);
137
138         // diff sess name
139         e2 = makeEnt("mynameB", 1);
140         assertNotEquals(entity, e2);
141         assertNotEquals(entity, e2);
142     }
143
144     @Test
145     public void testToString() {
146         DroolsSessionEntity entity = makeEnt("mynameA", 23);
147
148         assertEquals("{name=mynameA, id=23}", entity.toString());
149     }
150
151     /**
152      * Makes a session Entity. The parameters are stored into the Entity object via the setXxx
153      * methods.
154      *
155      * @param sessnm session name
156      * @param sessid session id
157      * @return a new session Entity
158      */
159     private DroolsSessionEntity makeEnt(String sessnm, long sessid) {
160
161         DroolsSessionEntity entity = new DroolsSessionEntity();
162
163         entity.setSessionName(sessnm);
164         entity.setSessionId(sessid);
165
166         return entity;
167     }
168
169     /**
170      * Makes a session Entity that overrides the getXxx methods. The parameters that are provided are
171      * returned by the overridden methods, but they are <i>not</i> stored into the Entity object via
172      * the setXxx methods.
173      *
174      * @param sessnm session name
175      * @param sessid session id
176      * @return a new session Entity
177      */
178     @SuppressWarnings("serial")
179     private DroolsSessionEntity makeEnt2(String sessnm, long sessid) {
180
181         return new DroolsSessionEntity() {
182
183             @Override
184             public String getSessionName() {
185                 return sessnm;
186             }
187
188             @Override
189             public long getSessionId() {
190                 return sessid;
191             }
192         };
193     }
194 }