1f71e9ec01285307e4623ad23c0e80bbb57d642a
[policy/apex-pdp.git] / model / policy-model / src / test / java / org / onap / policy / apex / model / policymodel / concepts / StateTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.model.policymodel.concepts;
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.assertNotNull;
27 import static org.junit.Assert.assertTrue;
28 import static org.junit.Assert.fail;
29
30 import java.util.Set;
31 import java.util.TreeMap;
32 import java.util.TreeSet;
33
34 import org.junit.Test;
35 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
36 import org.onap.policy.apex.model.basicmodel.concepts.AxKey;
37 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
38 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
39 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult.ValidationResult;
40
41 /**
42  * Test policy states.
43  *
44  * @author Liam Fallon (liam.fallon@ericsson.com)
45  */
46 public class StateTest {
47
48     @Test
49     public void testState() {
50         final TreeMap<String, AxStateOutput> soEmptyMap = new TreeMap<>();
51         final TreeSet<AxArtifactKey> ctxtEmptySet = new TreeSet<>();
52         final TreeMap<String, AxStateFinalizerLogic> sflEmptyMap = new TreeMap<>();
53         final TreeMap<AxArtifactKey, AxStateTaskReference> trEmptyMap = new TreeMap<>();
54
55         final TreeMap<String, AxStateOutput> soMap = new TreeMap<>();
56         final TreeSet<AxArtifactKey> ctxtSet = new TreeSet<>();
57         final TreeMap<String, AxStateFinalizerLogic> sflMap = new TreeMap<>();
58         final TreeMap<AxArtifactKey, AxStateTaskReference> trMap = new TreeMap<>();
59
60         assertNotNull(new AxState());
61         assertNotNull(new AxState(new AxReferenceKey()));
62         assertNotNull(new AxState(new AxStateParamsBuilder().key(new AxReferenceKey()).trigger(new AxArtifactKey())
63                         .stateOutputs(soEmptyMap).contextAlbumReferenceSet(ctxtEmptySet)
64                         .taskSelectionLogic(new AxTaskSelectionLogic()).stateFinalizerLogicMap(sflEmptyMap)
65                         .defaultTask(new AxArtifactKey()).taskReferenceMap(trEmptyMap)));
66
67         final AxState state = new AxState();
68
69         final AxReferenceKey stateKey = new AxReferenceKey("PolicyName", "0.0.1", "StateName");
70         final AxReferenceKey stateKeyNext = new AxReferenceKey("PolicyName", "0.0.1", "StateNameNext");
71         final AxReferenceKey stateKeyBad = new AxReferenceKey("PolicyName", "0.0.1", "BadStateName");
72         final AxArtifactKey triggerKey = new AxArtifactKey("TriggerName", "0.0.1");
73         final AxTaskSelectionLogic tsl = new AxTaskSelectionLogic(stateKey, "TSL", "LogicFlavour", "Some Logic");
74         final AxArtifactKey defTaskKey = new AxArtifactKey("TaskName", "0.0.1");
75         final AxArtifactKey taskKey1 = new AxArtifactKey("Task1", "0.0.1");
76         final AxArtifactKey taskKey2 = new AxArtifactKey("Task2", "0.0.1");
77         final AxArtifactKey taskKeyBad = new AxArtifactKey("TaskBad", "0.0.1");
78
79         try {
80             state.setKey(null);
81             fail("test should throw an exception here");
82         } catch (final Exception e) {
83             assertEquals("key may not be null", e.getMessage());
84         }
85
86         state.setKey(stateKey);
87         assertEquals("PolicyName:0.0.1:NULL:StateName", state.getKey().getId());
88         assertEquals("PolicyName:0.0.1:NULL:StateName", state.getKeys().get(0).getId());
89
90         final AxStateOutput so0 = new AxStateOutput(new AxReferenceKey(stateKey, "SO0"), triggerKey,
91                         new AxReferenceKey());
92         final AxStateOutput soU = new AxStateOutput(new AxReferenceKey(stateKey, "SOU"), triggerKey, stateKeyNext);
93         final AxStateOutput soSame = new AxStateOutput(new AxReferenceKey(stateKey, "SOU"), triggerKey, stateKey);
94         final AxArtifactKey cr0 = new AxArtifactKey("ContextReference", "0.0.1");
95         final AxStateFinalizerLogic sfl = new AxStateFinalizerLogic(stateKey, "SFLogicName", "LogicFlavour", "Logic");
96         final AxStateFinalizerLogic sflU = new AxStateFinalizerLogic(stateKey, "UnusedSFLogicName", "LogicFlavour",
97                         "Logic");
98         final AxStateTaskReference str0 = new AxStateTaskReference(new AxReferenceKey(stateKey, "STR0"),
99                         AxStateTaskOutputType.DIRECT, so0.getKey());
100         final AxStateTaskReference str1 = new AxStateTaskReference(new AxReferenceKey(stateKey, "STR1"),
101                         AxStateTaskOutputType.DIRECT, so0.getKey());
102         final AxStateTaskReference str2 = new AxStateTaskReference(new AxReferenceKey(stateKey, "STR2"),
103                         AxStateTaskOutputType.LOGIC, sfl.getKey());
104
105         final AxStateTaskReference strBadState = new AxStateTaskReference(new AxReferenceKey(stateKeyBad, "STR2"),
106                         AxStateTaskOutputType.LOGIC, sfl.getKey());
107         final AxStateTaskReference strBadStateOutput = new AxStateTaskReference(new AxReferenceKey(stateKey, "STR2"),
108                         AxStateTaskOutputType.UNDEFINED, sfl.getKey());
109         final AxStateTaskReference strBadStateFinalizerLogic = new AxStateTaskReference(
110                         new AxReferenceKey(stateKeyBad, "STR2"), AxStateTaskOutputType.LOGIC,
111                         new AxReferenceKey(stateKey, "SomeSFL"));
112
113         soMap.put(so0.getKey().getLocalName(), so0);
114         ctxtSet.add(cr0);
115         sflMap.put(sfl.getKey().getLocalName(), sfl);
116         trMap.put(defTaskKey.getKey(), str0);
117         trMap.put(taskKey1.getKey(), str1);
118         trMap.put(taskKey2.getKey(), str2);
119
120         try {
121             state.setTrigger(null);
122             fail("test should throw an exception here");
123         } catch (final Exception e) {
124             assertEquals("trigger may not be null", e.getMessage());
125         }
126
127         state.setTrigger(triggerKey);
128         assertEquals(triggerKey, state.getTrigger());
129
130         try {
131             state.setStateOutputs(null);
132             fail("test should throw an exception here");
133         } catch (final Exception e) {
134             assertEquals("stateOutputs may not be null", e.getMessage());
135         }
136
137         state.setStateOutputs(soMap);
138         assertEquals(soMap, state.getStateOutputs());
139
140         try {
141             state.setContextAlbumReferences(null);
142             fail("test should throw an exception here");
143         } catch (final Exception e) {
144             assertEquals("contextAlbumReferenceSet may not be null", e.getMessage());
145         }
146
147         state.setContextAlbumReferences(ctxtSet);
148         assertEquals(ctxtSet, state.getContextAlbumReferences());
149
150         try {
151             state.setTaskSelectionLogic(null);
152             fail("test should throw an exception here");
153         } catch (final Exception e) {
154             assertEquals("taskSelectionLogic may not be null", e.getMessage());
155         }
156
157         assertEquals(false, state.checkSetTaskSelectionLogic());
158         state.setTaskSelectionLogic(tsl);
159         assertEquals(tsl, state.getTaskSelectionLogic());
160         assertEquals(true, state.checkSetTaskSelectionLogic());
161
162         try {
163             state.setStateFinalizerLogicMap(null);
164             fail("test should throw an exception here");
165         } catch (final Exception e) {
166             assertEquals("stateFinalizerLogic may not be null", e.getMessage());
167         }
168
169         state.setStateFinalizerLogicMap(sflMap);
170         assertEquals(sflMap, state.getStateFinalizerLogicMap());
171
172         try {
173             state.setDefaultTask(null);
174             fail("test should throw an exception here");
175         } catch (final Exception e) {
176             assertEquals("defaultTask may not be null", e.getMessage());
177         }
178
179         state.setDefaultTask(defTaskKey);
180         assertEquals(defTaskKey, state.getDefaultTask());
181
182         try {
183             state.setTaskReferences(null);
184             fail("test should throw an exception here");
185         } catch (final Exception e) {
186             assertEquals("taskReferenceMap may not be null", e.getMessage());
187         }
188
189         state.setTaskReferences(trMap);
190         assertEquals(trMap, state.getTaskReferences());
191
192         state.afterUnmarshal(null, null);
193         assertEquals(state.getKey(), state.getKeys().get(0));
194         state.getTaskSelectionLogic().getKey().setLocalName(AxKey.NULL_KEY_NAME);
195         state.afterUnmarshal(null, null);
196         assertEquals(state.getKey(), state.getKeys().get(0));
197
198         final Set<String> stateSet = state.getNextStateSet();
199         assertEquals(1, stateSet.size());
200
201         AxValidationResult result = new AxValidationResult();
202         result = state.validate(result);
203         assertEquals(ValidationResult.VALID, result.getValidationResult());
204
205         state.setKey(AxReferenceKey.getNullKey());
206         result = new AxValidationResult();
207         result = state.validate(result);
208         assertEquals(ValidationResult.INVALID, result.getValidationResult());
209
210         state.setKey(stateKey);
211         result = new AxValidationResult();
212         result = state.validate(result);
213         assertEquals(ValidationResult.VALID, result.getValidationResult());
214
215         state.setTrigger(AxArtifactKey.getNullKey());
216         result = new AxValidationResult();
217         result = state.validate(result);
218         assertEquals(ValidationResult.INVALID, result.getValidationResult());
219
220         state.setTrigger(triggerKey);
221         result = new AxValidationResult();
222         result = state.validate(result);
223         assertEquals(ValidationResult.VALID, result.getValidationResult());
224
225         state.setStateOutputs(soEmptyMap);
226         result = new AxValidationResult();
227         result = state.validate(result);
228         assertEquals(ValidationResult.INVALID, result.getValidationResult());
229
230         state.setStateOutputs(soMap);
231         result = new AxValidationResult();
232         result = state.validate(result);
233         assertEquals(ValidationResult.VALID, result.getValidationResult());
234
235         so0.getKey().setParentLocalName("Zooby");
236         result = new AxValidationResult();
237         result = state.validate(result);
238         assertEquals(ValidationResult.INVALID, result.getValidationResult());
239
240         so0.getKey().setParentLocalName("StateName");
241         state.setStateOutputs(soMap);
242         result = new AxValidationResult();
243         result = state.validate(result);
244         assertEquals(ValidationResult.VALID, result.getValidationResult());
245
246         soMap.put("NullOutput", null);
247         result = new AxValidationResult();
248         result = state.validate(result);
249         assertEquals(ValidationResult.INVALID, result.getValidationResult());
250
251         soMap.remove("NullOutput");
252         state.setStateOutputs(soMap);
253         result = new AxValidationResult();
254         result = state.validate(result);
255         assertEquals(ValidationResult.VALID, result.getValidationResult());
256
257         soMap.put("DupOutput", so0);
258         result = new AxValidationResult();
259         result = state.validate(result);
260         assertEquals(ValidationResult.INVALID, result.getValidationResult());
261
262         soMap.remove("DupOutput");
263         state.setStateOutputs(soMap);
264         result = new AxValidationResult();
265         result = state.validate(result);
266         assertEquals(ValidationResult.VALID, result.getValidationResult());
267
268         soMap.put("UnusedOutput", soU);
269         result = new AxValidationResult();
270         result = state.validate(result);
271         assertEquals(ValidationResult.OBSERVATION, result.getValidationResult());
272
273         soMap.remove("UnusedOutput");
274         state.setStateOutputs(soMap);
275         result = new AxValidationResult();
276         result = state.validate(result);
277         assertEquals(ValidationResult.VALID, result.getValidationResult());
278
279         soMap.put("OutputToSameState", soSame);
280         result = new AxValidationResult();
281         result = state.validate(result);
282         assertEquals(ValidationResult.INVALID, result.getValidationResult());
283
284         soMap.remove("OutputToSameState");
285         state.setStateOutputs(soMap);
286         result = new AxValidationResult();
287         result = state.validate(result);
288         assertEquals(ValidationResult.VALID, result.getValidationResult());
289
290         // Empty context reference set is OK
291         state.setContextAlbumReferences(ctxtEmptySet);
292         result = new AxValidationResult();
293         result = state.validate(result);
294         assertEquals(ValidationResult.VALID, result.getValidationResult());
295
296         state.setContextAlbumReferences(ctxtSet);
297         result = new AxValidationResult();
298         result = state.validate(result);
299         assertEquals(ValidationResult.VALID, result.getValidationResult());
300
301         ctxtSet.add(AxArtifactKey.getNullKey());
302         result = new AxValidationResult();
303         result = state.validate(result);
304         assertEquals(ValidationResult.INVALID, result.getValidationResult());
305
306         ctxtSet.remove(AxArtifactKey.getNullKey());
307         result = new AxValidationResult();
308         result = state.validate(result);
309         assertEquals(ValidationResult.VALID, result.getValidationResult());
310
311         // Null TSL is OK
312         state.getTaskSelectionLogic().setKey(AxReferenceKey.getNullKey());
313         result = new AxValidationResult();
314         result = state.validate(result);
315         assertEquals(ValidationResult.VALID, result.getValidationResult());
316
317         state.getTaskSelectionLogic().setKey(new AxReferenceKey(stateKey, "TSL"));
318         result = new AxValidationResult();
319         result = state.validate(result);
320         assertEquals(ValidationResult.VALID, result.getValidationResult());
321
322         state.setDefaultTask(AxArtifactKey.getNullKey());
323         result = new AxValidationResult();
324         result = state.validate(result);
325         assertEquals(ValidationResult.INVALID, result.getValidationResult());
326
327         state.setDefaultTask(defTaskKey);
328         result = new AxValidationResult();
329         result = state.validate(result);
330         assertEquals(ValidationResult.VALID, result.getValidationResult());
331
332         state.setTaskReferences(trEmptyMap);
333         result = new AxValidationResult();
334         result = state.validate(result);
335         assertEquals(ValidationResult.INVALID, result.getValidationResult());
336
337         state.setTaskReferences(trMap);
338         result = new AxValidationResult();
339         result = state.validate(result);
340         assertEquals(ValidationResult.VALID, result.getValidationResult());
341
342         trMap.put(AxArtifactKey.getNullKey(), null);
343         result = new AxValidationResult();
344         result = state.validate(result);
345         assertEquals(ValidationResult.INVALID, result.getValidationResult());
346
347         trMap.remove(AxArtifactKey.getNullKey());
348         result = new AxValidationResult();
349         result = state.validate(result);
350         assertEquals(ValidationResult.VALID, result.getValidationResult());
351
352         trMap.put(AxArtifactKey.getNullKey(), str0);
353         result = new AxValidationResult();
354         result = state.validate(result);
355         assertEquals(ValidationResult.INVALID, result.getValidationResult());
356
357         trMap.remove(AxArtifactKey.getNullKey());
358         result = new AxValidationResult();
359         result = state.validate(result);
360         assertEquals(ValidationResult.VALID, result.getValidationResult());
361
362         trMap.put(taskKeyBad, strBadStateOutput);
363         result = new AxValidationResult();
364         result = state.validate(result);
365         assertEquals(ValidationResult.INVALID, result.getValidationResult());
366
367         trMap.remove(taskKeyBad);
368         result = new AxValidationResult();
369         result = state.validate(result);
370         assertEquals(ValidationResult.VALID, result.getValidationResult());
371
372         trMap.put(taskKeyBad, strBadState);
373         result = new AxValidationResult();
374         result = state.validate(result);
375         assertEquals(ValidationResult.INVALID, result.getValidationResult());
376
377         trMap.remove(taskKeyBad);
378         result = new AxValidationResult();
379         result = state.validate(result);
380         assertEquals(ValidationResult.VALID, result.getValidationResult());
381
382         trMap.put(taskKeyBad, strBadStateFinalizerLogic);
383         result = new AxValidationResult();
384         result = state.validate(result);
385         assertEquals(ValidationResult.INVALID, result.getValidationResult());
386
387         trMap.remove(taskKeyBad);
388         result = new AxValidationResult();
389         result = state.validate(result);
390         assertEquals(ValidationResult.VALID, result.getValidationResult());
391
392         state.setDefaultTask(new AxArtifactKey("NonExistantTask", "0.0.1"));
393         result = new AxValidationResult();
394         result = state.validate(result);
395         assertEquals(ValidationResult.INVALID, result.getValidationResult());
396
397         state.setDefaultTask(defTaskKey);
398         result = new AxValidationResult();
399         result = state.validate(result);
400         assertEquals(ValidationResult.VALID, result.getValidationResult());
401
402         sflMap.put("NullSFL", null);
403         result = new AxValidationResult();
404         result = state.validate(result);
405         assertEquals(ValidationResult.INVALID, result.getValidationResult());
406
407         sflMap.remove("NullSFL");
408         result = new AxValidationResult();
409         result = state.validate(result);
410         assertEquals(ValidationResult.VALID, result.getValidationResult());
411
412         sflMap.put(sflU.getKey().getLocalName(), sflU);
413         result = new AxValidationResult();
414         result = state.validate(result);
415         assertEquals(ValidationResult.OBSERVATION, result.getValidationResult());
416
417         sflMap.remove(sflU.getKey().getLocalName());
418         result = new AxValidationResult();
419         result = state.validate(result);
420         assertEquals(ValidationResult.VALID, result.getValidationResult());
421
422         state.clean();
423
424         final AxState clonedState = new AxState(state);
425         assertEquals("AxState:(stateKey=AxReferenceKey:(parent", clonedState.toString().substring(0, 40));
426
427         assertFalse(state.hashCode() == 0);
428
429         assertTrue(state.equals(state));
430         assertTrue(state.equals(clonedState));
431         assertFalse(state.equals(null));
432         assertFalse(state.equals((Object)"Hello"));
433         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(new AxReferenceKey()).trigger(triggerKey)
434                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
435                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
436         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(new AxArtifactKey())
437                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
438                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
439         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
440                         .stateOutputs(soEmptyMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
441                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
442         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
443                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtEmptySet).taskSelectionLogic(tsl)
444                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
445         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
446                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet)
447                         .taskSelectionLogic(new AxTaskSelectionLogic()).stateFinalizerLogicMap(sflMap)
448                         .defaultTask(defTaskKey).taskReferenceMap(trMap))));
449         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
450                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
451                         .stateFinalizerLogicMap(sflEmptyMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
452         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
453                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
454                         .stateFinalizerLogicMap(sflMap).defaultTask(new AxArtifactKey()).taskReferenceMap(trMap))));
455         assertFalse(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
456                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
457                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trEmptyMap))));
458         assertTrue(state.equals(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
459                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
460                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
461
462         assertEquals(0, state.compareTo(state));
463         assertEquals(0, state.compareTo(clonedState));
464         assertNotEquals(0, state.compareTo(new AxArtifactKey()));
465         assertNotEquals(0, state.compareTo(null));
466         assertNotEquals(0,
467                         state.compareTo(new AxState(new AxStateParamsBuilder().key(new AxReferenceKey())
468                                         .trigger(triggerKey).stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet)
469                                         .taskSelectionLogic(tsl).stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey)
470                                         .taskReferenceMap(trMap))));
471         assertNotEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey)
472                         .trigger(new AxArtifactKey()).stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet)
473                         .taskSelectionLogic(tsl).stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey)
474                         .taskReferenceMap(trMap))));
475         assertNotEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
476                         .stateOutputs(soEmptyMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
477                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
478         assertNotEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
479                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtEmptySet).taskSelectionLogic(tsl)
480                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
481         assertNotEquals(0,
482                         state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
483                                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet)
484                                         .taskSelectionLogic(new AxTaskSelectionLogic()).stateFinalizerLogicMap(sflMap)
485                                         .defaultTask(defTaskKey).taskReferenceMap(trMap))));
486         assertNotEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
487                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
488                         .stateFinalizerLogicMap(sflEmptyMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
489         assertNotEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
490                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
491                         .stateFinalizerLogicMap(sflMap).defaultTask(new AxArtifactKey()).taskReferenceMap(trMap))));
492         assertNotEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
493                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
494                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trEmptyMap))));
495         assertEquals(0, state.compareTo(new AxState(new AxStateParamsBuilder().key(stateKey).trigger(triggerKey)
496                         .stateOutputs(soMap).contextAlbumReferenceSet(ctxtSet).taskSelectionLogic(tsl)
497                         .stateFinalizerLogicMap(sflMap).defaultTask(defTaskKey).taskReferenceMap(trMap))));
498
499         assertNotNull(state.getKeys());
500     }
501 }