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