aboutsummaryrefslogtreecommitdiff
path: root/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java')
-rw-r--r--test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java53
1 files changed, 53 insertions, 0 deletions
diff --git a/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java b/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java
new file mode 100644
index 0000000..f16d657
--- /dev/null
+++ b/test/uk/ac/ox/cs/pagoda/query/CheckAnswers.java
@@ -0,0 +1,53 @@
1package uk.ac.ox.cs.pagoda.query;
2
3import com.google.gson.Gson;
4import com.google.gson.reflect.TypeToken;
5import org.testng.Assert;
6
7import java.io.BufferedReader;
8import java.io.IOException;
9import java.lang.reflect.Type;
10import java.nio.file.Files;
11import java.nio.file.Path;
12import java.util.Set;
13
14/**
15 * It provides auxiliary methods for checking answers.
16 */
17public class CheckAnswers {
18
19 private CheckAnswers() {
20 }
21
22 public static void assertSameAnswers(Path computedAnswersFile, Path givenAnswersFile) throws IOException {
23 BufferedReader computedReader = Files.newBufferedReader(computedAnswersFile);
24 BufferedReader givenReader = Files.newBufferedReader(givenAnswersFile);
25
26 Gson gson = QueryRecord.GsonCreator.getInstance();
27
28 Type cqType = new TypeToken<Set<QueryRecord>>() {
29 }.getType();
30 Set<QueryRecord> computedAnswersRecords = gson.fromJson(computedReader, cqType);
31 Set<QueryRecord> givenAnswersRecords = gson.fromJson(givenReader, cqType);
32
33 for(QueryRecord computedAnswersRecord : computedAnswersRecords) {
34 if(computedAnswersRecord.queryID == 8) continue; // DEBUG
35 Set<AnswerTuple> givenAnswers = null;
36 for(QueryRecord givenAnswersRecord : givenAnswersRecords) {
37 if(givenAnswersRecord.queryID == computedAnswersRecord.queryID) {
38 givenAnswers = givenAnswersRecord.soundAnswerTuples;
39 break;
40 }
41 }
42
43 Assert.assertNotNull(givenAnswers, "Missing given answer for query no. " + computedAnswersRecord.queryID);
44
45 Set<AnswerTuple> computedAnswers = computedAnswersRecord.soundAnswerTuples;
46 Assert.assertEquals(computedAnswers.size(), givenAnswers.size(),
47 "Different number sound answers for query " + computedAnswersRecord.queryID + "!"
48 + "Expected " + givenAnswers.size() + ", got " + computedAnswers.size());
49 Assert.assertEquals(computedAnswers, givenAnswers,
50 "Different sound answers for query " + computedAnswersRecord.queryID + "!");
51 }
52 }
53}