// Copyright 2012 Georg-August-Universität Göttingen, Germany // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package de.ugoe.cs.autoquest.usageprofiles; import java.util.ArrayList; import java.util.Collection; import java.util.List; import de.ugoe.cs.autoquest.eventcore.Event; import de.ugoe.cs.autoquest.eventcore.StringEventType; import de.ugoe.cs.autoquest.usageprofiles.PredictionByPartialMatch; import java.util.Random; import org.junit.*; import static org.junit.Assert.*; /** * The class PredictionByPartialMatchTest contains tests for the * class {@link PredictionByPartialMatch}. * * @author Steffen Herbold * @version 1.0 */ public class PredictionByPartialMatchTest { Collection> sequences; @Test public void testPredictionByPartialMatch_1() throws Exception { int markovOrder = 2; Random r = new Random(); PredictionByPartialMatch result = new PredictionByPartialMatch( markovOrder, r); assertNotNull(result); assertEquals(markovOrder+1, result.trieOrder); assertEquals(0, result.minOrder); assertEquals(r, result.r); assertEquals(0.1, result.probEscape, 0.0001); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_2() throws Exception { int markovOrder = -1; Random r = new Random(); new PredictionByPartialMatch(markovOrder, r); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_3() throws Exception { int markovOrder = 2; Random r = null; new PredictionByPartialMatch(markovOrder, r); } @Test public void testPredictionByPartialMatch_4() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; PredictionByPartialMatch result = new PredictionByPartialMatch( markovOrder, r, probEscape); assertNotNull(result); assertEquals(markovOrder+1, result.trieOrder); assertEquals(0, result.minOrder); assertEquals(r, result.r); assertEquals(probEscape, result.probEscape, 0.0001); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_5() throws Exception { int markovOrder = -1; Random r = new Random(); double probEscape = 0.2; new PredictionByPartialMatch(markovOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_6() throws Exception { int markovOrder = 2; Random r = null; double probEscape = 0.2; new PredictionByPartialMatch(markovOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_7() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.0; new PredictionByPartialMatch(markovOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_8() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 1.0; new PredictionByPartialMatch(markovOrder, r, probEscape); } @Test public void testPredictionByPartialMatch_9() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 1; PredictionByPartialMatch result = new PredictionByPartialMatch( markovOrder, minOrder, r, probEscape); assertNotNull(result); assertEquals(markovOrder+1, result.trieOrder); assertEquals(minOrder, result.minOrder); assertEquals(r, result.r); assertEquals(probEscape, result.probEscape, 0.0001); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_10() throws Exception { int markovOrder = -1; Random r = new Random(); double probEscape = 0.2; int minOrder = 1; new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_11() throws Exception { int markovOrder = 2; Random r = null; double probEscape = 0.2; int minOrder = 1; new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_12() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.0; int minOrder = 1; new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_13() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 1.0; int minOrder = 1; new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_14() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 3; new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); } @Test(expected = java.lang.IllegalArgumentException.class) public void testPredictionByPartialMatch_15() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = -1; new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); } @Test public void testGetProbEscape_1() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 1; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.probEscape = probEscape; double result = fixture.getProbEscape(); assertEquals(probEscape, result, 0.0001); } @Test public void testGetProbability_1() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 1; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.train(sequences); List context = new ArrayList(); context.add(Event.STARTEVENT); context.add(new Event(new StringEventType("a"))); Event symbol = new Event(new StringEventType("b")); double result = fixture.getProbability(context, symbol); assertEquals(0.88d, result, 0.0001); } @Test public void testGetProbability_2() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 1; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.train(sequences); List context = new ArrayList(); context.add(Event.STARTEVENT); context.add(new Event(new StringEventType("a"))); Event symbol = new Event(new StringEventType("c")); double result = fixture.getProbability(context, symbol); assertEquals(0.04d, result, 0.0001); } @Test public void testGetProbability_3() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 2; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.train(sequences); List context = new ArrayList(); context.add(Event.STARTEVENT); context.add(new Event(new StringEventType("a"))); Event symbol = new Event(new StringEventType("b")); double result = fixture.getProbability(context, symbol); assertEquals(1.0d, result, 0.0001); } @Test public void testGetProbability_4() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 2; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.train(sequences); List context = new ArrayList(); context.add(Event.STARTEVENT); context.add(new Event(new StringEventType("a"))); Event symbol = new Event(new StringEventType("c")); double result = fixture.getProbability(context, symbol); assertEquals(0.0d, result, 0.0001); } @Test public void testGetProbability_5() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 0; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.train(sequences); List context = new ArrayList(); context.add(Event.STARTEVENT); context.add(new Event(new StringEventType("a"))); Event symbol = new Event(new StringEventType("b")); double result = fixture.getProbability(context, symbol); assertEquals(0.8701d, result, 0.0001); } @Test public void testGetProbability_6() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 0; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.train(sequences); List context = new ArrayList(); context.add(Event.STARTEVENT); context.add(new Event(new StringEventType("a"))); Event symbol = new Event(new StringEventType("c")); double result = fixture.getProbability(context, symbol); assertEquals(0.0350, result, 0.0001); } @Test public void testSetProbEscape_1() throws Exception { int markovOrder = 2; Random r = new Random(); double probEscape = 0.2; int minOrder = 1; double newProbEscape = 0.3; PredictionByPartialMatch fixture = new PredictionByPartialMatch(markovOrder, minOrder, r, probEscape); fixture.setProbEscape(newProbEscape); assertEquals(newProbEscape, fixture.probEscape, 0.0001); } @Before public void setUp() throws Exception { List sequence = new ArrayList(); sequence.add(new Event(new StringEventType("a"))); sequence.add(new Event(new StringEventType("b"))); sequence.add(new Event(new StringEventType("r"))); sequence.add(new Event(new StringEventType("a"))); sequence.add(new Event(new StringEventType("c"))); sequence.add(new Event(new StringEventType("a"))); sequence.add(new Event(new StringEventType("d"))); sequence.add(new Event(new StringEventType("a"))); sequence.add(new Event(new StringEventType("b"))); sequence.add(new Event(new StringEventType("r"))); sequence.add(new Event(new StringEventType("a"))); sequences = new ArrayList>(); sequences.add(sequence); } public static void main(String[] args) { new org.junit.runner.JUnitCore() .run(PredictionByPartialMatchTest.class); } }