EMMA Coverage Report (generated Tue Aug 23 05:57:12 CDT 2011)
[all classes][felix.test]

COVERAGE SUMMARY FOR SOURCE FILE [IODBTest.java]

nameclass, %method, %block, %line, %
IODBTest.java100% (1/1)100% (5/5)94%  (308/329)83%  (49/59)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class IODBTest100% (1/1)100% (5/5)94%  (308/329)83%  (49/59)
setUp (): void 100% (1/1)88%  (53/60)87%  (20/23)
simpleTest (): void 100% (1/1)93%  (66/71)73%  (8/11)
comboTest (): void 100% (1/1)95%  (90/95)73%  (8/11)
checkOutput (String, String []): void 100% (1/1)96%  (96/100)92%  (12/13)
IODBTest (): void 100% (1/1)100% (3/3)100% (1/1)

1package felix.test;
2 
3import static org.junit.Assert.*;
4 
5import java.io.BufferedReader;
6import java.io.BufferedWriter;
7import java.io.FileReader;
8import java.io.FileWriter;
9import java.util.ArrayList;
10 
11import org.junit.BeforeClass;
12import org.junit.Test;
13 
14import tuffy.db.RDB;
15import tuffy.util.Config;
16import tuffy.util.FileMan;
17import tuffy.util.UIMan;
18 
19import felix.main.Felix;
20import felix.parser.FelixCommandOptions;
21import felix.util.FelixConfig;
22import felix.util.FelixUIMan;
23 
24/**
25 * Test using evidence supplied in existing database relations.
26 * @author Josh Slauson
27 *
28 */
29public class IODBTest {
30        
31        static RDB db;
32        
33        /**
34         * Perform required setup for this test.
35         */
36        @BeforeClass
37        public static final void setUp() {
38                // delete existing output files
39                FileMan.removeFile("test/felix/output/out.txt_IODBTest_simpleTest");
40                FileMan.removeFile("test/felix/output/out.txt_IODBTest_comboTest");
41                FileMan.removeFile("test/felix/output/out.txt_IODBTest_emptyTable");
42                FileMan.removeFile("test/felix/output/out.txt_IODBTest_incorrectMissingTable");
43                FileMan.removeFile("test/felix/output/out.txt_IODBTest_incorrectColumnName");
44                FileMan.removeFile("test/felix/output/out.txt_IODBTest_incorrectMissingIndices");
45                FileMan.removeFile("test/felix/output/out.txt_IODBTest_incorrectMissingTruthPrior");
46                
47                FelixConfig.overrideID();
48                
49                UIMan.parseConfigFile(Config.path_conf);
50                
51                if(FelixConfig.evidDBSchema != null){
52                        FelixConfig.db_schema = FelixConfig.evidDBSchema;
53                }
54 
55                db = RDB.getRDBbyConfig();
56                db.schema = FelixConfig.db_schema;
57                db.resetSchema(FelixConfig.db_schema);
58                
59                if(!db.isSchemaExists("felix_test")) {
60                        String query = "CREATE SCHEMA felix_test";
61                        db.execute(query);
62                }
63                
64                db.dropTable("felix_test.evid");
65                String query = "CREATE TABLE felix_test.evid (truth boolean, prior integer, a1 text, b2 text)";
66                db.execute(query);
67                
68                query = "INSERT INTO felix_test.evid VALUES (true, 0, 1, 2), (true, 0, 4, 5)";
69                db.execute(query);                
70 
71        }
72        
73        /**
74         * Checks if output file contains expected results.
75         * @param output
76         * @param expect
77         */
78        public void checkOutput(String output, String[] expect) {
79                ArrayList<String> lines = FileMan.getLines(output);
80                System.out.println("Checking output size: " + lines.size() + " = " + expect.length/2 + "?");
81                assertTrue(lines.size() == expect.length/2);
82                
83                for(int i = 0; i < lines.size(); i++) {
84                        System.out.println("Checking output: " + lines.get(i));
85 
86                        boolean match = false;
87                        for(int j = 0; j + 1 < expect.length; j+=2) {
88                                if(lines.get(i).equals("fact(\"" + expect[j] + "\", \"" + expect[j+1] + "\")")) {
89                                        match = true;
90                                }
91                        }
92                        if(!match) {
93                                System.out.println("\tNo match");
94                        }
95                        assertTrue(match);
96                }
97 
98        }
99 
100        /**
101         * Simple smoke test.
102         */
103        @Test
104        public void simpleTest() {
105                try {
106                        
107                        String output = "test/felix/output/out.txt_IODBTest_simpleTest";
108                        String[] args = {"-i", "test/felix/io_test/prog.mln-db", "-o", 
109                                        "test/felix/output/out.txt_IODBTest_simpleTest", "-queryFile", "test/felix/io_test/query.db", "-keepData"};
110                                                
111                        FelixCommandOptions options = FelixUIMan.parseCommand(args);
112                        new Felix().run(options);
113                        
114                        String[] expect = {"1", "2", "4", "5"};
115                        checkOutput(output, expect);
116                        
117                } catch(Exception e) {
118                        e.printStackTrace();
119                        assertTrue(false);
120                }
121        }
122        
123        /**
124         * Combo test using evidence from a file and evidence from a database table.
125         */
126        @Test
127        public void comboTest() {
128                try {
129                        
130                        String output = "test/felix/output/out.txt_IODBTest_comboTest"; 
131                        String[] args = {"-e", "test/felix/io_test/evid2.db", "-i", "test/felix/io_test/prog2.mln-db", "-o", 
132                                        output, "-queryFile", "test/felix/io_test/query.db", "-keepData"};
133                                                
134                        FelixCommandOptions options = FelixUIMan.parseCommand(args);
135                        new Felix().run(options);
136                        
137                        String[] expect = {"1", "2", "4", "5", "Hello", "World", "UW", "Madison"};
138                        checkOutput(output, expect);
139                        
140                } catch(Exception e) {
141                        e.printStackTrace();
142                        assertTrue(false);
143                }
144        }
145        
146//        @Test
147//        public void emptyTable() {
148//                try {
149//                        
150//                        // Create evidence table
151//                        db.dropTable("felix_test.evid");
152//                        String query = "CREATE TABLE felix_test.evid (truth boolean, prior integer, a1 text, b2 text)";
153//                        db.execute(query);
154//                        
155//                        String output = "test/felix/output/out.txt_IODBTest_emptyTable";
156//                        String[] args = {"-i", "test/felix/io_test/prog.mln-db", "-o", output, 
157//                                        "-queryFile", "test/felix/io_test/query.db", "-keepData"};
158//                                                
159//                        FelixCommandOptions options = FelixUIMan.parseCommand(args);
160//                        new Felix().run(options);
161//                        
162//                        checkOutput(output);
163//
164//                } catch(Exception e) {
165//                        e.printStackTrace();
166//                        assertTrue(false);
167//                }
168//        }
169        
170        // TODO: fix issue, then uncomment
171//                @Test
172//                public void incorrectMissingTable() {
173//                        try {
174//                                
175//                                db.dropTable("felix_test.evid");
176//                                
177//                                String output = "test/felix/output/out.txt_IODBTest_incorrectMissingTable";
178//                                String[] args = {"-i", "test/felix/io_test/prog.mln-db", "-o", output,
179//                                                "-queryFile", "test/felix/io_test/query.db", "-keepData"};
180//                                                        
181//                                FelixCommandOptions options = FelixUIMan.parseCommand(args);
182//                                new Felix().run(options);
183//                                
184//                                checkOutput(output);
185//
186//                        } catch(Exception e) {
187//                                e.printStackTrace();
188//                                assertTrue(false);
189//                        }
190//                }
191        
192        // TODO: fix issue, then uncomment
193//        @Test
194//        public void incorrectColumnName() {
195//                try {
196//                        
197//                        // Create evidence table
198//                        db.dropTable("felix_test.evid");
199//                        String query = "CREATE TABLE felix_test.evid (truth boolean, prior integer, a1 text, a2 text)";
200//                        db.execute(query);
201//                        
202//                        query = "INSERT INTO felix_test.evid VALUES (true, 0, 1, 2), (true, 0, 4, 5)";
203//                        db.execute(query);
204//                        
205//                        String output = "test/felix/output/out.txt_IODBTest_incorrectColumnName";
206//                        String[] args = {"-i", "test/felix/io_test/prog.mln-db", "-o", output,
207//                                        "-queryFile", "test/felix/io_test/query.db", "-keepData"};
208//                                                
209//                        FelixCommandOptions options = FelixUIMan.parseCommand(args);
210//                        new Felix().run(options);
211//                        
212//                        checkOutput(output);
213//
214//                } catch(Exception e) {
215//                        e.printStackTrace();
216//                        assertTrue(false);
217//                }
218//        }
219 
220 
221        // TODO: fix issue, then uncomment
222//        @Test
223//        public void incorrectMissingIndices() {
224//                try {
225//                        
226//                        // Create evidence table
227//                        db.dropTable("felix_test.evid.evid");
228//                        String query = "CREATE TABLE felix_test.evid (truth boolean, prior integer, a text, b text)";
229//                        db.execute(query);
230//                        
231//                        query = "INSERT INTO felix_test.evid VALUES (true, 0, 1, 2), (true, 0, 4, 5)";
232//                        db.execute(query);
233//                        
234//                        String output = "test/felix/output/out.txt_IODBTest_incorrectMissingIndices";
235//                        String[] args = {"-i", "test/felix/io_test/prog.mln-db", "-o", output,
236//                                        "-queryFile", "test/felix/io_test/query.db", "-keepData"};
237//                                                
238//                        FelixCommandOptions options = FelixUIMan.parseCommand(args);
239//                        new Felix().run(options);
240//                        
241//                        checkOutput(output);
242//
243//                } catch(Exception e) {
244//                        e.printStackTrace();
245//                        assertTrue(false);
246//                }
247//        }
248 
249        // TODO: fix issue, then uncomment
250//        @Test
251//        public void incorrectMissingTruthPrior() {
252//                try {
253//                        
254//                        // Create evidence table
255//                        db.dropTable("felix_test.evid");
256//                        String query = "CREATE TABLE felix_test.evid (a1 text, b2 text)";
257//                        db.execute(query);
258//                        
259//                        query = "INSERT INTO felix_test.evid VALUES (1, 2), (4, 5)";
260//                        db.execute(query);
261//                        
262//                        String output = "test/felix/output/out.txt_IODBTest_incorrectMissingTruthPrior";
263//                        String[] args = {"-i", "test/felix/io_test/prog.mln-db", "-o", output,
264//                                        "-queryFile", "test/felix/io_test/query.db", "-keepData"};
265//                                                
266//                        FelixCommandOptions options = FelixUIMan.parseCommand(args);
267//                        new Felix().run(options);
268//                        
269//                        checkOutput(output);
270//
271//                } catch(Exception e) {
272//                        e.printStackTrace();
273//                        assertTrue(false);
274//                }
275//        }
276 
277}

[all classes][felix.test]
EMMA 2.0.5312 EclEmma Fix 2 (C) Vladimir Roubtsov