source: trunk/quest-core-usageprofiles-test/src/test/java/de/ugoe/cs/quest/usageprofiles/HighOrderMarkovModelTest.java @ 518

Last change on this file since 518 was 518, checked in by sherbold, 12 years ago
  • initial commit of quest-core-assertions, quest-core-assertions-test, quest-core-coverage, quest-core-coverage-test, quest-core-usageprofiles, and quest-core-usageprofiles-test
  • Property svn:mime-type set to text/plain
File size: 6.6 KB
Line 
1package de.ugoe.cs.quest.usageprofiles;
2
3import java.util.ArrayList;
4import java.util.Collection;
5import java.util.List;
6
7import de.ugoe.cs.quest.eventcore.Event;
8import de.ugoe.cs.quest.usageprofiles.HighOrderMarkovModel;
9
10import java.util.Random;
11import org.junit.*;
12
13import static org.junit.Assert.*;
14
15/**
16 * The class <code>HighOrderMarkovModelTest</code> contains tests for the class
17 * <code>{@link HighOrderMarkovModel}</code>.
18 *
19 * @author Steffen Herbold
20 * @version 1.0
21 */
22public class HighOrderMarkovModelTest {
23
24        Collection<List<? extends Event<?>>> sequences;
25
26        @Test
27        public void testHighOrderMarkovModel_1() throws Exception {
28                int maxOrder = 1;
29                Random r = new Random();
30
31                HighOrderMarkovModel result = new HighOrderMarkovModel(maxOrder, r);
32
33                assertNotNull(result);
34                assertEquals(r, result.r);
35                assertEquals(maxOrder + 1, result.trieOrder);
36        }
37
38        @Test
39        public void testHighOrderMarkovModel_2() throws Exception {
40                int maxOrder = 0;
41                Random r = new Random();
42
43                HighOrderMarkovModel result = new HighOrderMarkovModel(maxOrder, r);
44
45                assertNotNull(result);
46                assertEquals(r, result.r);
47                assertEquals(maxOrder + 1, result.trieOrder);
48        }
49
50        @Test(expected = java.security.InvalidParameterException.class)
51        public void testHighOrderMarkovModel_3() throws Exception {
52                int maxOrder = 1;
53                Random r = null;
54
55                new HighOrderMarkovModel(maxOrder, r);
56        }
57
58        @Test(expected = java.security.InvalidParameterException.class)
59        public void testHighOrderMarkovModel_4() throws Exception {
60                int maxOrder = -1;
61                Random r = new Random();
62
63                new HighOrderMarkovModel(maxOrder, r);
64        }
65
66        @Test
67        public void testGetProbability_1() throws Exception {
68                int markovOrder = 1;
69                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
70                                new Random());
71                fixture.train(sequences);
72
73                List<Event<String>> context = new ArrayList<Event<String>>();
74                context.add(new Event<String>("a"));
75
76                Event<String> symbol = new Event<String>("b");
77
78                double result = fixture.getProbability(context, symbol);
79
80                assertEquals(2.0d / 5.0, result, 0.0001);
81        }
82
83        @Test
84        public void testGetProbability_2() throws Exception {
85                int markovOrder = 1;
86                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
87                                new Random());
88                fixture.train(sequences);
89
90                List<Event<String>> context = new ArrayList<Event<String>>();
91                context.add(new Event<String>("a"));
92
93                Event<String> symbol = new Event<String>("r");
94
95                double result = fixture.getProbability(context, symbol);
96
97                assertEquals(0.0d / 5.0, result, 0.0001);
98        }
99
100        @Test
101        public void testGetProbability_3() throws Exception {
102                int markovOrder = 1;
103                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
104                                new Random());
105                fixture.train(sequences);
106
107                List<Event<String>> context = new ArrayList<Event<String>>();
108                context.add(new Event<String>("a"));
109
110                Event<String> symbol = new Event<String>("c");
111
112                double result = fixture.getProbability(context, symbol);
113
114                assertEquals(1.0d / 5.0, result, 0.0001);
115        }
116
117        @Test
118        public void testGetProbability_4() throws Exception {
119                int markovOrder = 1;
120                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
121                                new Random());
122                fixture.train(sequences);
123
124                List<Event<?>> context = new ArrayList<Event<?>>();
125                context.add(Event.STARTEVENT);
126                context.add(new Event<String>("a"));
127
128                Event<String> symbol = new Event<String>("b");
129
130                double result = fixture.getProbability(context, symbol);
131
132                assertEquals(2.0d / 5.0, result, 0.0001);
133        }
134
135        @Test
136        public void testGetProbability_5() throws Exception {
137                int markovOrder = 2;
138                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
139                                new Random());
140                fixture.train(sequences);
141
142                List<Event<?>> context = new ArrayList<Event<?>>();
143                context.add(Event.STARTEVENT);
144                context.add(new Event<String>("a"));
145
146                Event<String> symbol = new Event<String>("b");
147
148                double result = fixture.getProbability(context, symbol);
149
150                assertEquals(1.0d, result, 0.0001);
151        }
152
153        @Test
154        public void testGetProbability_6() throws Exception {
155                int markovOrder = 2;
156                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
157                                new Random());
158                fixture.train(sequences);
159
160                List<Event<?>> context = new ArrayList<Event<?>>();
161                context.add(Event.STARTEVENT);
162                context.add(new Event<String>("b"));
163
164                Event<String> symbol = new Event<String>("b");
165
166                double result = fixture.getProbability(context, symbol);
167
168                assertEquals(0.0d, result, 0.0001);
169        }
170
171        @Test
172        public void testGetProbability_7() throws Exception {
173                int markovOrder = 0;
174                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
175                                new Random());
176                fixture.train(sequences);
177
178                List<Event<?>> context = new ArrayList<Event<?>>();
179                context.add(Event.STARTEVENT);
180                context.add(new Event<String>("b"));
181
182                Event<String> symbol = new Event<String>("a");
183
184                double result = fixture.getProbability(context, symbol);
185
186                assertEquals(5.0d / 13.0, result, 0.0001);
187        }
188
189        @Test(expected = java.security.InvalidParameterException.class)
190        public void testGetProbability_8() throws Exception {
191                int markovOrder = 0;
192                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
193                                new Random());
194                fixture.train(sequences);
195
196                List<Event<?>> context = new ArrayList<Event<?>>();
197                context.add(Event.STARTEVENT);
198                context.add(new Event<String>("b"));
199
200                Event<String> symbol = null;
201
202                fixture.getProbability(context, symbol);
203        }
204
205        @Test(expected = java.security.InvalidParameterException.class)
206        public void testGetProbability_9() throws Exception {
207                int markovOrder = 0;
208                HighOrderMarkovModel fixture = new HighOrderMarkovModel(markovOrder,
209                                new Random());
210                fixture.train(sequences);
211
212                List<Event<?>> context = null;
213
214                Event<String> symbol = new Event<String>("b");
215
216                fixture.getProbability(context, symbol);
217        }
218
219        @Before
220        public void setUp() throws Exception {
221                List<Event<?>> sequence = new ArrayList<Event<?>>();
222                sequence.add(new Event<String>("a"));
223                sequence.add(new Event<String>("b"));
224                sequence.add(new Event<String>("r"));
225                sequence.add(new Event<String>("a"));
226                sequence.add(new Event<String>("c"));
227                sequence.add(new Event<String>("a"));
228                sequence.add(new Event<String>("d"));
229                sequence.add(new Event<String>("a"));
230                sequence.add(new Event<String>("b"));
231                sequence.add(new Event<String>("r"));
232                sequence.add(new Event<String>("a"));
233
234                sequences = new ArrayList<List<? extends Event<?>>>();
235                sequences.add(sequence);
236        }
237
238        public static void main(String[] args) {
239                new org.junit.runner.JUnitCore().run(HighOrderMarkovModelTest.class);
240        }
241}
Note: See TracBrowser for help on using the repository browser.