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