1 /*******************************************************************************
2 * Copyright (c) 2016 École Polytechnique de Montréal
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.tmf
.core
.tests
.analysis
.requirements
;
12 import static org
.junit
.Assert
.assertFalse
;
13 import static org
.junit
.Assert
.assertNotNull
;
14 import static org
.junit
.Assert
.assertTrue
;
16 import java
.util
.Collections
;
18 import org
.eclipse
.jdt
.annotation
.NonNull
;
19 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.requirements
.TmfAnalysisRequirement
;
20 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.requirements
.TmfAnalysisRequirement
.PriorityLevel
;
21 import org
.eclipse
.tracecompass
.tmf
.core
.trace
.ITmfTrace
;
22 import org
.eclipse
.tracecompass
.tmf
.tests
.stubs
.trace
.TmfTraceStub
;
23 import org
.junit
.Before
;
24 import org
.junit
.Test
;
26 import com
.google
.common
.collect
.ImmutableSet
;
28 import org
.eclipse
.tracecompass
.tmf
.core
.analysis
.requirements
.TmfCompositeAnalysisRequirement
;
31 * Test the {@link TmfCompositeAnalysisRequirement} class
33 * @author Geneviève Bastien
35 public class CompositeRequirementTest
{
37 private static final @NonNull TmfAnalysisRequirement FALSE_REQ1
= new TmfAnalysisRequirement(Collections
.EMPTY_SET
, PriorityLevel
.MANDATORY
) {
39 public boolean test(ITmfTrace trace
) {
44 private static final @NonNull TmfAnalysisRequirement FALSE_REQ2
= new TmfAnalysisRequirement(Collections
.EMPTY_SET
, PriorityLevel
.MANDATORY
) {
46 public boolean test(ITmfTrace trace
) {
51 private static final @NonNull TmfAnalysisRequirement TRUE_REQ1
= new TmfAnalysisRequirement(Collections
.EMPTY_SET
, PriorityLevel
.MANDATORY
) {
53 public boolean test(ITmfTrace trace
) {
58 private static final @NonNull TmfAnalysisRequirement TRUE_REQ2
= new TmfAnalysisRequirement(Collections
.EMPTY_SET
, PriorityLevel
.MANDATORY
) {
60 public boolean test(ITmfTrace trace
) {
65 private ITmfTrace fTrace
;
68 * Setup a trace to be used in tests
71 public void setupTrace() {
72 fTrace
= new TmfTraceStub();
76 * Test composite requirement with {@link PriorityLevel#MANDATORY} level
79 public void testMandatory() {
80 ITmfTrace trace
= fTrace
;
83 TmfAnalysisRequirement req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
), PriorityLevel
.MANDATORY
);
84 assertTrue(req
.test(trace
));
86 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
, TRUE_REQ2
), PriorityLevel
.MANDATORY
);
87 assertTrue(req
.test(trace
));
89 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
), PriorityLevel
.MANDATORY
);
90 assertFalse(req
.test(trace
));
92 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, TRUE_REQ1
), PriorityLevel
.MANDATORY
);
93 assertFalse(req
.test(trace
));
95 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, FALSE_REQ2
), PriorityLevel
.MANDATORY
);
96 assertFalse(req
.test(trace
));
100 * Test composite requirement with {@link PriorityLevel#AT_LEAST_ONE} level
103 public void testAtLeastOne() {
104 ITmfTrace trace
= fTrace
;
105 assertNotNull(trace
);
107 TmfAnalysisRequirement req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
), PriorityLevel
.AT_LEAST_ONE
);
108 assertTrue(req
.test(trace
));
110 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
, TRUE_REQ2
), PriorityLevel
.AT_LEAST_ONE
);
111 assertTrue(req
.test(trace
));
113 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
), PriorityLevel
.AT_LEAST_ONE
);
114 assertFalse(req
.test(trace
));
116 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, TRUE_REQ1
), PriorityLevel
.AT_LEAST_ONE
);
117 assertTrue(req
.test(trace
));
119 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, FALSE_REQ2
), PriorityLevel
.AT_LEAST_ONE
);
120 assertFalse(req
.test(trace
));
124 * Test composite requirement with {@link PriorityLevel#ALL_OR_NOTHING} level
127 public void testAllOrNothing() {
128 ITmfTrace trace
= fTrace
;
129 assertNotNull(trace
);
131 TmfAnalysisRequirement req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
), PriorityLevel
.ALL_OR_NOTHING
);
132 assertTrue(req
.test(trace
));
134 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
, TRUE_REQ2
), PriorityLevel
.ALL_OR_NOTHING
);
135 assertTrue(req
.test(trace
));
137 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
), PriorityLevel
.ALL_OR_NOTHING
);
138 assertTrue(req
.test(trace
));
140 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, TRUE_REQ1
), PriorityLevel
.ALL_OR_NOTHING
);
141 assertFalse(req
.test(trace
));
143 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, FALSE_REQ2
), PriorityLevel
.ALL_OR_NOTHING
);
144 assertTrue(req
.test(trace
));
148 * Test composite requirement with {@link PriorityLevel#OPTIONAL} level
151 public void testOptional() {
152 ITmfTrace trace
= fTrace
;
153 assertNotNull(trace
);
155 TmfAnalysisRequirement req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
), PriorityLevel
.OPTIONAL
);
156 assertTrue(req
.test(trace
));
158 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(TRUE_REQ1
, TRUE_REQ2
), PriorityLevel
.OPTIONAL
);
159 assertTrue(req
.test(trace
));
161 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
), PriorityLevel
.OPTIONAL
);
162 assertTrue(req
.test(trace
));
164 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, TRUE_REQ1
), PriorityLevel
.OPTIONAL
);
165 assertTrue(req
.test(trace
));
167 req
= new TmfCompositeAnalysisRequirement(ImmutableSet
.of(FALSE_REQ1
, FALSE_REQ2
), PriorityLevel
.OPTIONAL
);
168 assertTrue(req
.test(trace
));