1 package de.bwaldvogel.liblinear;
2
3 import static org.fest.assertions.Assertions.assertThat;
4 import static org.mockito.Mockito.mock;
5
6 import java.io.BufferedReader;
7 import java.io.PrintStream;
8 import java.io.StringReader;
9 import java.io.StringWriter;
10 import java.io.Writer;
11
12 import org.junit.Before;
13 import org.junit.Test;
14
15
16 public class PredictTest {
17
18 private Model testModel = LinearTest.createRandomModel();
19 private StringBuilder sb = new StringBuilder();
20 private Writer writer = new StringWriter();
21
22 @Before
23 public void setUp() {
24 System.setOut(mock(PrintStream.class));
25 assertThat(testModel.getNrClass()).isGreaterThanOrEqualTo(2);
26 assertThat(testModel.getNrFeature()).isGreaterThanOrEqualTo(10);
27 }
28
29 private void testWithLines(StringBuilder sb) throws Exception {
30 BufferedReader reader = new BufferedReader(new StringReader(sb.toString()));
31
32 Predict.doPredict(reader, writer, testModel);
33 }
34
35 @Test(expected = RuntimeException.class)
36 public void testDoPredictCorruptLine() throws Exception {
37 sb.append(testModel.label[0]).append(" abc").append("\n");
38 testWithLines(sb);
39 }
40
41 @Test(expected = RuntimeException.class)
42 public void testDoPredictCorruptLine2() throws Exception {
43 sb.append(testModel.label[0]).append(" 1:").append("\n");
44 testWithLines(sb);
45 }
46
47 @Test
48 public void testDoPredict() throws Exception {
49 sb.append(testModel.label[0]).append(" 1:0.32393").append("\n");
50 sb.append(testModel.label[1]).append(" 2:-71.555 9:88223").append("\n");
51 testWithLines(sb);
52 assertThat(writer.toString()).isNotEmpty();
53 }
54 }