source: trunk/EventBenchCoreTest/src/de/ugoe/cs/eventbench/coverage/SequenceToolsTest.java @ 329

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