source: trunk/quest-core-event-test/src/de/ugoe/cs/quest/coverage/SequenceToolsTest.java @ 433

Last change on this file since 433 was 433, checked in by sherbold, 12 years ago
  • renamed packages to fit QUEST project structure
  • Property svn:mime-type set to text/plain
File size: 6.0 KB
Line 
1package de.ugoe.cs.quest.coverage;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.LinkedHashSet;
6import java.util.LinkedList;
7import java.util.List;
8import java.util.Map;
9import java.util.Map.Entry;
10import java.util.Random;
11import java.util.Set;
12import de.ugoe.cs.quest.coverage.SequenceTools;
13import de.ugoe.cs.quest.eventcore.Event;
14import de.ugoe.cs.quest.usageprofiles.FirstOrderMarkovModel;
15import de.ugoe.cs.quest.usageprofiles.IStochasticProcess;
16import de.ugoe.cs.quest.usageprofiles.MockTrieBasedModel;
17
18import org.junit.*;
19
20import static org.junit.Assert.*;
21
22/**
23 * The class <code>SequenceToolsTest</code> contains tests for the class <code>{@link SequenceTools}</code>.
24 *
25 * @author Steffen Herbold
26 * @version 1.0
27 */
28public class SequenceToolsTest {
29       
30        Collection<List<? extends Event<?>>> sequences;
31        Set<List<? extends Event<?>>> subSequences;
32        MockTrieBasedModel mockProcess;
33       
34        @Test
35        public void testContainedSubSequences_1()
36                throws Exception {
37                int length = 2;
38
39                Set<List<? extends Event<?>>> result = SequenceTools.containedSubSequences(sequences, length);
40
41                assertNotNull(result);
42                assertTrue(result.containsAll(subSequences));
43                assertEquals(subSequences.size(), result.size());
44        }
45       
46        @Test
47        public void testContainedSubSequences_2()
48                throws Exception {
49                int length = 2;
50
51                Set<List<? extends Event<?>>> result = SequenceTools.containedSubSequences(null, length);
52                assertNotNull(result);
53                assertTrue(result.isEmpty());
54        }
55       
56        @Test(expected=java.security.InvalidParameterException.class)
57        public void testContainedSubSequences_3()
58                throws Exception {
59                int length = 0;
60
61                SequenceTools.containedSubSequences(sequences, length);
62        }
63       
64        @Test(expected=java.security.InvalidParameterException.class)
65        public void testContainedSubSequences_4()
66                throws Exception {
67                int length = -1;
68
69                SequenceTools.containedSubSequences(sequences, length);
70        }
71
72        @Test
73        public void testGenerateWeights_1()
74                throws Exception {
75                Map<List<? extends Event<?>>, Double> result = SequenceTools.generateWeights(mockProcess, subSequences);
76
77                assertNotNull(result);
78                Set<Entry<List<? extends Event<?>>, Double>> entrySet = result.entrySet();
79                assertEquals(subSequences.size(),entrySet.size());
80                for( Entry<List<? extends Event<?>>, Double> entry : entrySet ) {
81                        assertEquals(Double.valueOf(2.0d), entry.getValue());
82                        assertTrue(subSequences.contains(entry.getKey()));
83                }
84        }
85       
86        @Test
87        public void testGenerateWeights_2()
88                throws Exception {
89                Map<List<? extends Event<?>>, Double> result = SequenceTools.generateWeights(null, subSequences);
90               
91                Set<Entry<List<? extends Event<?>>, Double>> entrySet = result.entrySet();
92                assertEquals(subSequences.size(),entrySet.size());
93                for( Entry<List<? extends Event<?>>, Double> entry : entrySet ) {
94                        assertEquals(Double.valueOf(0.0d), entry.getValue());
95                        assertTrue(subSequences.contains(entry.getKey()));
96                }
97        }
98       
99        @Test
100        public void testGenerateWeights_3()
101                throws Exception {
102                Map<List<? extends Event<?>>, Double> result = SequenceTools.generateWeights(mockProcess, null);
103               
104                assertNotNull(result);
105                assertTrue(result.isEmpty());
106        }
107
108        @Test
109        public void testNumSequences_1()
110                throws Exception {
111                int length = 2;
112                int expected = 49;
113
114                long result = SequenceTools.numSequences(mockProcess, length);
115
116                assertEquals(expected, result);
117        }
118       
119        @Test
120        public void testNumSequences_2()
121                throws Exception {
122                int length = 2;
123                int expected = 49;
124
125                long result = SequenceTools.numSequences(mockProcess, length);
126
127                assertEquals(expected, result);
128        }
129       
130        @Test(expected = java.security.InvalidParameterException.class )
131        public void testNumSequences_3()
132                throws Exception {
133                int length = 0;
134
135                SequenceTools.numSequences(mockProcess, length);
136        }
137
138        @Test(expected = java.security.InvalidParameterException.class )
139        public void testNumSequences_4()
140                throws Exception {
141                IStochasticProcess process = new FirstOrderMarkovModel(new Random());
142                int length = -1;
143
144                SequenceTools.numSequences(process, length);
145        }
146       
147        @Before
148        public void setUp()
149                throws Exception {
150                sequences = new LinkedList<List<? extends Event<?>>>();
151                List<Event<?>> sequence1 = new ArrayList<Event<?>>();
152                sequence1.add(new Event<String>("a"));
153                sequence1.add(new Event<String>("b"));
154                sequence1.add(new Event<String>("r"));
155                sequence1.add(new Event<String>("a"));
156                List<Event<?>> sequence2 = new ArrayList<Event<?>>();
157                sequence2.add(new Event<String>("c"));
158                sequence2.add(new Event<String>("a"));
159                sequence2.add(new Event<String>("d"));
160                sequence2.add(new Event<String>("a"));
161                sequence2.add(new Event<String>("b"));
162                sequence2.add(new Event<String>("r"));
163                sequence2.add(new Event<String>("a"));
164                sequences.add(sequence1);
165                sequences.add(sequence2);
166               
167                subSequences = new LinkedHashSet<List<? extends Event<?>>>();
168                List<Event<?>> tmpList = new ArrayList<Event<?>>();
169                tmpList.add(new Event<String>("a"));
170                tmpList.add(new Event<String>("b"));
171                subSequences.add(tmpList);
172                tmpList = new ArrayList<Event<?>>();
173                tmpList.add(new Event<String>("b"));
174                tmpList.add(new Event<String>("r"));
175                subSequences.add(tmpList);
176                tmpList = new ArrayList<Event<?>>();
177                tmpList.add(new Event<String>("r"));
178                tmpList.add(new Event<String>("a"));
179                subSequences.add(tmpList);
180                tmpList = new ArrayList<Event<?>>();
181                tmpList.add(new Event<String>("c"));
182                tmpList.add(new Event<String>("a"));
183                subSequences.add(tmpList);
184                tmpList = new ArrayList<Event<?>>();
185                tmpList.add(new Event<String>("a"));
186                tmpList.add(new Event<String>("d"));
187                subSequences.add(tmpList);
188                tmpList = new ArrayList<Event<?>>();
189                tmpList.add(new Event<String>("d"));
190                tmpList.add(new Event<String>("a"));
191                subSequences.add(tmpList);
192               
193                int markovOrder = 2;
194                mockProcess = new MockTrieBasedModel(markovOrder, new Random());
195                mockProcess.train(sequences);
196        }
197
198        public static void main(String[] args) {
199                new org.junit.runner.JUnitCore().run(SequenceToolsTest.class);
200        }
201}
Note: See TracBrowser for help on using the repository browser.