aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/uk/ac/ox/cs/pagoda/query
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/uk/ac/ox/cs/pagoda/query')
-rw-r--r--src/test/java/uk/ac/ox/cs/pagoda/query/CheckAnswers.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/test/java/uk/ac/ox/cs/pagoda/query/CheckAnswers.java b/src/test/java/uk/ac/ox/cs/pagoda/query/CheckAnswers.java
new file mode 100644
index 0000000..71730c3
--- /dev/null
+++ b/src/test/java/uk/ac/ox/cs/pagoda/query/CheckAnswers.java
@@ -0,0 +1,51 @@
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>>() {}.getType();
29 Set<QueryRecord> computedAnswersRecords = gson.fromJson(computedReader, cqType);
30 Set<QueryRecord> givenAnswersRecords = gson.fromJson(givenReader, cqType);
31
32 for(QueryRecord computedAnswersRecord : computedAnswersRecords) {
33 Set<AnswerTuple> givenAnswers = null;
34 for(QueryRecord givenAnswersRecord : givenAnswersRecords) {
35 if(givenAnswersRecord.queryID == computedAnswersRecord.queryID) {
36 givenAnswers = givenAnswersRecord.soundAnswerTuples;
37 break;
38 }
39 }
40
41 Assert.assertNotNull(givenAnswers, "Missing given answer for query no. " + computedAnswersRecord.queryID);
42
43 Set<AnswerTuple> computedAnswers = computedAnswersRecord.soundAnswerTuples;
44 Assert.assertEquals(computedAnswers.size(), givenAnswers.size(),
45 "Different number of sound answers for query " + computedAnswersRecord.queryID + "!"
46 + "Expected " + givenAnswers.size() + ", got " + computedAnswers.size());
47 Assert.assertEquals(computedAnswers, givenAnswers,
48 "Different sound answers for query " + computedAnswersRecord.queryID + "!");
49 }
50 }
51}