source: trunk/autoquest-core-usageprofiles-test/src/test/java/de/ugoe/cs/autoquest/usageprofiles/TrieBasedModelTest.java @ 922

Last change on this file since 922 was 922, checked in by sherbold, 12 years ago
  • renaming of packages from de.ugoe.cs.quest to de.ugoe.cs.autoquest
  • Property svn:mime-type set to text/plain
File size: 22.3 KB
Line 
1package de.ugoe.cs.autoquest.usageprofiles;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.HashSet;
6import java.util.List;
7import java.util.Random;
8
9import de.ugoe.cs.autoquest.eventcore.Event;
10import de.ugoe.cs.autoquest.eventcore.StringEventType;
11import de.ugoe.cs.autoquest.usageprofiles.MockTrieBasedModel;
12import de.ugoe.cs.autoquest.usageprofiles.Trie;
13import de.ugoe.cs.autoquest.usageprofiles.TrieBasedModel;
14import de.ugoe.cs.autoquest.usageprofiles.TrieNode;
15
16import org.junit.*;
17import static org.junit.Assert.*;
18
19/**
20 * The class <code>TrieBasedModelTest</code> contains tests for the class
21 * <code>{@link TrieBasedModel}</code>.
22 *
23 * @author Steffen Herbold
24 * @version 1.0
25 */
26public class TrieBasedModelTest {
27
28        List<Event> sequence;
29        Collection<Event> symbols;
30
31        private void assertTrieStructure(Trie<Event> trie, int numSequences) {
32                TrieNode<Event> root = trie.find(null);
33                TrieNode<Event> root_a = root.getChild(new Event(new StringEventType("a")));
34                TrieNode<Event> root_a_a = root_a.getChild(new Event(new StringEventType("a")));
35                TrieNode<Event> root_a_b = root_a.getChild(new Event(new StringEventType("b")));
36                TrieNode<Event> root_a_b_a = root_a_b
37                                .getChild(new Event(new StringEventType("a")));
38                TrieNode<Event> root_a_b_b = root_a_b
39                                .getChild(new Event(new StringEventType("b")));
40                TrieNode<Event> root_a_b_c = root_a_b
41                                .getChild(new Event(new StringEventType("c")));
42                TrieNode<Event> root_a_b_d = root_a_b
43                                .getChild(new Event(new StringEventType("d")));
44                TrieNode<Event> root_a_b_r = root_a_b
45                                .getChild(new Event(new StringEventType("r")));
46                TrieNode<Event> root_a_c = root_a.getChild(new Event(new StringEventType("c")));
47                TrieNode<Event> root_a_c_a = root_a_c
48                                .getChild(new Event(new StringEventType("a")));
49                TrieNode<Event> root_a_c_b = root_a_c
50                                .getChild(new Event(new StringEventType("b")));
51                TrieNode<Event> root_a_c_c = root_a_c
52                                .getChild(new Event(new StringEventType("c")));
53                TrieNode<Event> root_a_c_d = root_a_c
54                                .getChild(new Event(new StringEventType("d")));
55                TrieNode<Event> root_a_c_r = root_a_c
56                                .getChild(new Event(new StringEventType("r")));
57                TrieNode<Event> root_a_d = root_a.getChild(new Event(new StringEventType("d")));
58                TrieNode<Event> root_a_d_a = root_a_d
59                                .getChild(new Event(new StringEventType("a")));
60                TrieNode<Event> root_a_d_b = root_a_d
61                                .getChild(new Event(new StringEventType("b")));
62                TrieNode<Event> root_a_d_c = root_a_d
63                                .getChild(new Event(new StringEventType("c")));
64                TrieNode<Event> root_a_d_d = root_a_d
65                                .getChild(new Event(new StringEventType("d")));
66                TrieNode<Event> root_a_d_r = root_a_d
67                                .getChild(new Event(new StringEventType("r")));
68                TrieNode<Event> root_a_r = root_a.getChild(new Event(new StringEventType("r")));
69                TrieNode<Event> root_b = root.getChild(new Event(new StringEventType("b")));
70                TrieNode<Event> root_b_a = root_b.getChild(new Event(new StringEventType("a")));
71                TrieNode<Event> root_b_b = root_b.getChild(new Event(new StringEventType("b")));
72                TrieNode<Event> root_b_c = root_b.getChild(new Event(new StringEventType("c")));
73                TrieNode<Event> root_b_d = root_b.getChild(new Event(new StringEventType("d")));
74                TrieNode<Event> root_b_r = root_b.getChild(new Event(new StringEventType("r")));
75                TrieNode<Event> root_b_r_a = root_b_r
76                                .getChild(new Event(new StringEventType("a")));
77                TrieNode<Event> root_b_r_b = root_b_r
78                                .getChild(new Event(new StringEventType("b")));
79                TrieNode<Event> root_b_r_c = root_b_r
80                                .getChild(new Event(new StringEventType("c")));
81                TrieNode<Event> root_b_r_d = root_b_r
82                                .getChild(new Event(new StringEventType("d")));
83                TrieNode<Event> root_b_r_r = root_b_r
84                                .getChild(new Event(new StringEventType("r")));
85                TrieNode<Event> root_c = root.getChild(new Event(new StringEventType("c")));
86                TrieNode<Event> root_c_a = root_c.getChild(new Event(new StringEventType("a")));
87                TrieNode<Event> root_c_a_a = root_c_a
88                                .getChild(new Event(new StringEventType("a")));
89                TrieNode<Event> root_c_a_b = root_c_a
90                                .getChild(new Event(new StringEventType("b")));
91                TrieNode<Event> root_c_a_c = root_c_a
92                                .getChild(new Event(new StringEventType("c")));
93                TrieNode<Event> root_c_a_d = root_c_a
94                                .getChild(new Event(new StringEventType("d")));
95                TrieNode<Event> root_c_a_r = root_c_a
96                                .getChild(new Event(new StringEventType("r")));
97                TrieNode<Event> root_c_b = root_c.getChild(new Event(new StringEventType("b")));
98                TrieNode<Event> root_c_c = root_c.getChild(new Event(new StringEventType("c")));
99                TrieNode<Event> root_c_d = root_c.getChild(new Event(new StringEventType("d")));
100                TrieNode<Event> root_c_r = root_c.getChild(new Event(new StringEventType("r")));
101                TrieNode<Event> root_d = root.getChild(new Event(new StringEventType("d")));
102                TrieNode<Event> root_d_a = root_d.getChild(new Event(new StringEventType("a")));
103                TrieNode<Event> root_d_a_a = root_d_a
104                                .getChild(new Event(new StringEventType("a")));
105                TrieNode<Event> root_d_a_b = root_d_a
106                                .getChild(new Event(new StringEventType("b")));
107                TrieNode<Event> root_d_a_c = root_d_a
108                                .getChild(new Event(new StringEventType("c")));
109                TrieNode<Event> root_d_a_d = root_d_a
110                                .getChild(new Event(new StringEventType("d")));
111                TrieNode<Event> root_d_a_r = root_d_a
112                                .getChild(new Event(new StringEventType("r")));
113                TrieNode<Event> root_d_b = root_d.getChild(new Event(new StringEventType("b")));
114                TrieNode<Event> root_d_c = root_d.getChild(new Event(new StringEventType("c")));
115                TrieNode<Event> root_d_d = root_d.getChild(new Event(new StringEventType("d")));
116                TrieNode<Event> root_d_r = root_d.getChild(new Event(new StringEventType("r")));
117                TrieNode<Event> root_r = root.getChild(new Event(new StringEventType("r")));
118                TrieNode<Event> root_r_a = root_r.getChild(new Event(new StringEventType("a")));
119                TrieNode<Event> root_r_a_a = root_r_a
120                                .getChild(new Event(new StringEventType("a")));
121                TrieNode<Event> root_r_a_b = root_r_a
122                                .getChild(new Event(new StringEventType("b")));
123                TrieNode<Event> root_r_a_c = root_r_a
124                                .getChild(new Event(new StringEventType("c")));
125                TrieNode<Event> root_r_a_d = root_r_a
126                                .getChild(new Event(new StringEventType("d")));
127                TrieNode<Event> root_r_a_r = root_r_a
128                                .getChild(new Event(new StringEventType("r")));
129                TrieNode<Event> root_r_a_end = root_r_a.getChild(Event.ENDEVENT);
130                TrieNode<Event> root_r_b = root_r.getChild(new Event(new StringEventType("b")));
131                TrieNode<Event> root_r_c = root_r.getChild(new Event(new StringEventType("c")));
132                TrieNode<Event> root_r_d = root_r.getChild(new Event(new StringEventType("d")));
133                TrieNode<Event> root_r_r = root_r.getChild(new Event(new StringEventType("r")));
134                TrieNode<Event> root_start = root.getChild(Event.STARTEVENT);
135                TrieNode<Event> root_start_a = root_start
136                                .getChild(new Event(new StringEventType("a")));
137                TrieNode<Event> root_start_a_a = root_start_a
138                                .getChild(new Event(new StringEventType("a")));
139                TrieNode<Event> root_start_a_b = root_start_a
140                                .getChild(new Event(new StringEventType("b")));
141                TrieNode<Event> root_start_a_c = root_start_a
142                                .getChild(new Event(new StringEventType("c")));
143                TrieNode<Event> root_start_a_d = root_start_a
144                                .getChild(new Event(new StringEventType("d")));
145                TrieNode<Event> root_start_a_r = root_start_a
146                                .getChild(new Event(new StringEventType("r")));
147                TrieNode<Event> root_start_b = root_start
148                                .getChild(new Event(new StringEventType("b")));
149                TrieNode<Event> root_start_c = root_start
150                                .getChild(new Event(new StringEventType("c")));
151                TrieNode<Event> root_start_d = root_start
152                                .getChild(new Event(new StringEventType("d")));
153                TrieNode<Event> root_start_r = root_start
154                                .getChild(new Event(new StringEventType("r")));
155
156                assertEquals(numSequences * 5, root_a.getCount());
157                assertNull(root_a_a);
158                assertEquals(numSequences * 2, root_a_b.getCount());
159                assertNull(root_a_b_a);
160                assertNull(root_a_b_b);
161                assertNull(root_a_b_c);
162                assertNull(root_a_b_d);
163                assertEquals(numSequences * 2, root_a_b_r.getCount());
164                assertEquals(numSequences * 1, root_a_c.getCount());
165                assertEquals(numSequences * 1, root_a_c_a.getCount());
166                assertNull(root_a_c_b);
167                assertNull(root_a_c_c);
168                assertNull(root_a_c_d);
169                assertNull(root_a_c_r);
170                assertEquals(numSequences * 1, root_a_d.getCount());
171                assertEquals(numSequences * 1, root_a_d_a.getCount());
172                assertNull(root_a_d_b);
173                assertNull(root_a_d_c);
174                assertNull(root_a_d_d);
175                assertNull(root_a_d_r);
176                assertNull(root_a_r);
177
178                assertEquals(numSequences * 2, root_b.getCount());
179                assertNull(root_b_a);
180                assertNull(root_b_b);
181                assertNull(root_b_c);
182                assertNull(root_b_d);
183                assertEquals(numSequences * 2, root_b_r.getCount());
184                assertEquals(numSequences * 2, root_b_r_a.getCount());
185                assertNull(root_b_r_b);
186                assertNull(root_b_r_c);
187                assertNull(root_b_r_d);
188                assertNull(root_b_r_r);
189
190                assertEquals(numSequences * 1, root_c.getCount());
191                assertEquals(numSequences * 1, root_c_a.getCount());
192                assertNull(root_c_a_a);
193                assertNull(root_c_a_b);
194                assertNull(root_c_a_c);
195                assertEquals(numSequences * 1, root_c_a_d.getCount());
196                assertNull(root_c_a_r);
197                assertNull(root_c_b);
198                assertNull(root_c_c);
199                assertNull(root_c_d);
200                assertNull(root_c_r);
201
202                assertEquals(numSequences * 1, root_d.getCount());
203                assertEquals(numSequences * 1, root_d_a.getCount());
204                assertNull(root_d_a_a);
205                assertEquals(numSequences * 1, root_d_a_b.getCount());
206                assertNull(root_d_a_c);
207                assertNull(root_d_a_d);
208                assertNull(root_d_a_r);
209                assertNull(root_d_b);
210                assertNull(root_d_c);
211                assertNull(root_d_d);
212                assertNull(root_d_r);
213
214                assertEquals(numSequences * 2, root_r.getCount());
215                assertEquals(numSequences * 2, root_r_a.getCount());
216                assertNull(root_r_a_a);
217                assertNull(root_r_a_b);
218                assertEquals(numSequences * 1, root_r_a_c.getCount());
219                assertNull(root_r_a_d);
220                assertNull(root_r_a_r);
221                assertEquals(numSequences * 1, root_r_a_end.getCount());
222                assertNull(root_r_b);
223                assertNull(root_r_c);
224                assertNull(root_r_d);
225                assertNull(root_r_r);
226
227                assertEquals(numSequences * 1, root_start.getCount());
228                assertEquals(numSequences * 1, root_start_a.getCount());
229                assertNull(root_start_a_a);
230                assertEquals(numSequences * 1, root_start_a_b.getCount());
231                assertNull(root_start_a_c);
232                assertNull(root_start_a_d);
233                assertNull(root_start_a_r);
234                assertNull(root_start_b);
235                assertNull(root_start_c);
236                assertNull(root_start_d);
237                assertNull(root_start_r);
238
239                // check if leafs are really leafs
240                assertTrue(root_a_b_r.isLeaf());
241                assertTrue(root_a_c_a.isLeaf());
242                assertTrue(root_a_d_a.isLeaf());
243                assertTrue(root_b_r_a.isLeaf());
244                assertTrue(root_c_a_d.isLeaf());
245                assertTrue(root_d_a_b.isLeaf());
246                assertTrue(root_r_a_c.isLeaf());
247                assertTrue(root_r_a_end.isLeaf());
248        }
249
250        private static void assertCollectionContent(Collection<?> c1,
251                        Collection<?> c2) {
252                assertEquals(c1.size(), c2.size());
253                for (Object obj : c1) {
254                        assertTrue(c2.contains(obj));
255                }
256        }
257
258        @Test
259        public void testTrieBasedModel_1() throws Exception {
260                int markovOrder = 2;
261                Random r = new Random();
262
263                MockTrieBasedModel result = new MockTrieBasedModel(markovOrder, r);
264
265                assertNotNull(result);
266                assertEquals(markovOrder + 1, result.trieOrder);
267                assertEquals(r, result.r);
268        }
269
270        @Test(expected = java.lang.IllegalArgumentException.class)
271        public void testTrieBasedModel_2() throws Exception {
272                int markovOrder = -1;
273                Random r = new Random();
274
275                new MockTrieBasedModel(markovOrder, r);
276        }
277
278        @Test(expected = java.lang.IllegalArgumentException.class)
279        public void testTrieBasedModel_3() throws Exception {
280                int markovOrder = 2;
281                Random r = null;
282
283                new MockTrieBasedModel(markovOrder, r);
284        }
285
286        @Test
287        public void testGenerateSequences_1() throws Exception {
288                int markovOrder = 2;
289                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
290                                new Random());
291                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
292                sequences.add(sequence);
293                fixture.train(sequences);
294                int length = 2;
295
296                Collection<List<Event>> expected = new HashSet<List<Event>>();
297                ArrayList<Event> list;
298                list = new ArrayList<Event>();
299                list.add(new Event(new StringEventType("a")));
300                list.add(Event.ENDEVENT);
301                expected.add(list);
302                list = new ArrayList<Event>();
303                list.add(new Event(new StringEventType("a")));
304                list.add(new Event(new StringEventType("b")));
305                expected.add(list);
306                list = new ArrayList<Event>();
307                list.add(new Event(new StringEventType("a")));
308                list.add(new Event(new StringEventType("c")));
309                expected.add(list);
310                list = new ArrayList<Event>();
311                list.add(new Event(new StringEventType("a")));
312                list.add(new Event(new StringEventType("d")));
313                expected.add(list);
314                list = new ArrayList<Event>();
315                list.add(new Event(new StringEventType("b")));
316                list.add(new Event(new StringEventType("r")));
317                expected.add(list);
318                list = new ArrayList<Event>();
319                list.add(new Event(new StringEventType("c")));
320                list.add(new Event(new StringEventType("a")));
321                expected.add(list);
322                list = new ArrayList<Event>();
323                list.add(new Event(new StringEventType("d")));
324                list.add(new Event(new StringEventType("a")));
325                expected.add(list);
326                list = new ArrayList<Event>();
327                list.add(new Event(new StringEventType("r")));
328                list.add(new Event(new StringEventType("a")));
329                expected.add(list);
330                list = new ArrayList<Event>();
331                list.add(Event.STARTEVENT);
332                list.add(new Event(new StringEventType("a")));
333                expected.add(list);
334
335                Collection<List<Event>> result = fixture
336                                .generateSequences(length);
337
338                assertCollectionContent(expected, result);
339        }
340
341        @Test
342        public void testGenerateSequences_2() throws Exception {
343                int markovOrder = 2;
344                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
345                                new Random());
346                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
347                sequences.add(sequence);
348                fixture.train(sequences);
349                int length = 3;
350
351                Collection<List<Event>> expected = new HashSet<List<Event>>();
352                ArrayList<Event> list;
353                list = new ArrayList<Event>();
354                list.add(Event.STARTEVENT);
355                list.add(new Event(new StringEventType("a")));
356                list.add(Event.ENDEVENT);
357                expected.add(list);
358                list = new ArrayList<Event>();
359                list.add(Event.STARTEVENT);
360                list.add(new Event(new StringEventType("a")));
361                list.add(new Event(new StringEventType("b")));
362                expected.add(list);
363                list = new ArrayList<Event>();
364                list.add(Event.STARTEVENT);
365                list.add(new Event(new StringEventType("a")));
366                list.add(new Event(new StringEventType("c")));
367                expected.add(list);
368                list = new ArrayList<Event>();
369                list.add(Event.STARTEVENT);
370                list.add(new Event(new StringEventType("a")));
371                list.add(new Event(new StringEventType("d")));
372                expected.add(list);
373
374                Collection<List<Event>> result = fixture
375                                .generateSequences(length, true);
376
377                assertCollectionContent(expected, result);
378        }
379
380        @Test(expected = java.lang.IllegalArgumentException.class)
381        public void testGenerateSequences_3() throws Exception {
382                int markovOrder = 2;
383                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
384                                new Random());
385                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
386                sequences.add(sequence);
387                fixture.train(sequences);
388                int length = 0;
389
390                fixture.generateSequences(length, false);
391        }
392
393        @Test
394        public void testGenerateValidSequences_1() throws Exception {
395                int markovOrder = 2;
396                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
397                                new Random());
398                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
399                sequences.add(sequence);
400                fixture.train(sequences);
401                int length = 5;
402
403                Collection<List<Event>> expected = new HashSet<List<Event>>();
404                ArrayList<Event> list;
405                list = new ArrayList<Event>();
406                list.add(Event.STARTEVENT);
407                list.add(new Event(new StringEventType("a")));
408                list.add(new Event(new StringEventType("c")));
409                list.add(new Event(new StringEventType("a")));
410                list.add(Event.ENDEVENT);
411                expected.add(list);
412                list = new ArrayList<Event>();
413                list.add(Event.STARTEVENT);
414                list.add(new Event(new StringEventType("a")));
415                list.add(new Event(new StringEventType("d")));
416                list.add(new Event(new StringEventType("a")));
417                list.add(Event.ENDEVENT);
418                expected.add(list);
419
420                Collection<List<Event>> result = fixture
421                                .generateValidSequences(length);
422
423                assertCollectionContent(expected, result);
424        }
425
426        @Test(expected = java.lang.IllegalArgumentException.class)
427        public void testGenerateValidSequences_2() throws Exception {
428                int markovOrder = 2;
429                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
430                                new Random());
431                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
432                sequences.add(sequence);
433                fixture.train(sequences);
434                int length = 0;
435
436                fixture.generateValidSequences(length);
437        }
438
439        @Test
440        public void testGetEvents_1() throws Exception {
441                int markovOrder = 2;
442                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
443                                new Random());
444                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
445                sequences.add(sequence);
446
447                fixture.train(sequences);
448
449                Collection<Event> result = fixture.getEvents();
450
451                assertCollectionContent(symbols, result);
452        }
453
454        @Test
455        public void testGetEvents_2() throws Exception {
456                int markovOrder = 2;
457                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
458                                new Random());
459
460                Collection<Event> result = fixture.getEvents();
461
462                assertCollectionContent(new HashSet<Event>(), result);
463        }
464
465        @Test
466        public void testGetNumFOMStates_1() throws Exception {
467                int markovOrder = 2;
468                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
469                                new Random());
470                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
471                sequences.add(sequence);
472
473                fixture.train(sequences);
474
475                int result = fixture.getNumFOMStates();
476
477                assertEquals(10, result);
478        }
479
480        @Test
481        public void testGetNumFOMStates_2() throws Exception {
482                int markovOrder = 2;
483                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
484                                new Random());
485                ;
486
487                int result = fixture.getNumFOMStates();
488
489                assertEquals(0, result);
490        }
491
492        @Test
493        public void testGetNumSymbols_1() throws Exception {
494                int markovOrder = 2;
495                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
496                                new Random());
497                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
498                sequences.add(sequence);
499                fixture.train(sequences);
500
501                int result = fixture.getNumSymbols();
502
503                assertEquals(7, result);
504        }
505
506        @Test
507        public void testGetNumSymbols_2() throws Exception {
508                int markovOrder = 2;
509                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
510                                new Random());
511
512                int result = fixture.getNumSymbols();
513
514                assertEquals(0, result);
515        }
516
517        @Test
518        public void testGetNumTransitions_1() throws Exception {
519                int markovOrder = 2;
520                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
521                                new Random());
522                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
523                sequences.add(sequence);
524                fixture.train(sequences);
525
526                int result = fixture.getNumTransitions();
527
528                assertEquals(11, result);
529        }
530
531        @Test
532        public void testGetNumTransitions_2() throws Exception {
533                int markovOrder = 2;
534                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
535                                new Random());
536
537                int result = fixture.getNumTransitions();
538
539                assertEquals(0, result);
540        }
541
542        @Test
543        public void testTrain_1() throws Exception {
544                int markovOrder = 2;
545                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
546                                new Random());
547                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
548                sequences.add(sequence);
549
550                fixture.train(sequences);
551
552                assertCollectionContent(symbols, fixture.getEvents());
553
554                assertTrieStructure(fixture.trie, 1);
555        }
556
557        @Test
558        public void testTrain_2() throws Exception {
559                int markovOrder = 2;
560                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
561                                new Random());
562                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
563                sequences.add(sequence);
564                sequences.add(sequence);
565
566                fixture.train(sequences);
567
568                assertCollectionContent(symbols, fixture.getEvents());
569
570                assertTrieStructure(fixture.trie, 2);
571        }
572       
573        @Test(expected = java.lang.IllegalArgumentException.class)
574        public void testTrain_3() throws Exception {
575                int markovOrder = 2;
576                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
577                                new Random());
578                Collection<List<Event>> sequences = null;
579
580                fixture.train(sequences);
581        }
582
583        @Test
584        public void testUpdate_1() throws Exception {
585                int markovOrder = 2;
586                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
587                                new Random());
588                Collection<List<Event>> sequences = new ArrayList<List<Event>>();
589                sequences.add(sequence);
590                fixture.train(sequences);
591
592                fixture.update(sequences);
593
594                assertCollectionContent(symbols, fixture.getEvents());
595                assertTrieStructure(fixture.trie, 2);
596        }
597
598        @Test(expected = java.lang.IllegalArgumentException.class)
599        public void testUpdate_2() throws Exception {
600                int markovOrder = 2;
601                MockTrieBasedModel fixture = new MockTrieBasedModel(markovOrder,
602                                new Random());
603                Collection<List<Event>> sequences = null;
604                fixture.trie = null;
605
606                fixture.update(sequences);
607        }
608
609        @Before
610        public void setUp() throws Exception {
611                sequence = new ArrayList<Event>();
612                sequence.add(new Event(new StringEventType("a")));
613                sequence.add(new Event(new StringEventType("b")));
614                sequence.add(new Event(new StringEventType("r")));
615                sequence.add(new Event(new StringEventType("a")));
616                sequence.add(new Event(new StringEventType("c")));
617                sequence.add(new Event(new StringEventType("a")));
618                sequence.add(new Event(new StringEventType("d")));
619                sequence.add(new Event(new StringEventType("a")));
620                sequence.add(new Event(new StringEventType("b")));
621                sequence.add(new Event(new StringEventType("r")));
622                sequence.add(new Event(new StringEventType("a")));
623
624                symbols = new HashSet<Event>();
625                symbols.add(new Event(new StringEventType("a")));
626                symbols.add(new Event(new StringEventType("b")));
627                symbols.add(new Event(new StringEventType("c")));
628                symbols.add(new Event(new StringEventType("d")));
629                symbols.add(new Event(new StringEventType("r")));
630                symbols.add(Event.STARTEVENT);
631                symbols.add(Event.ENDEVENT);
632        }
633
634        public static void main(String[] args) {
635                new org.junit.runner.JUnitCore().run(TrieBasedModelTest.class);
636        }
637}
Note: See TracBrowser for help on using the repository browser.