Reorganise test system via Downloader/Cache
[gofetch.git] / src / be / nikiroo / gofetch / test / TestBase.java
index 1da6b48a6a2f7451bb13425bb4a9d4125665f1bc..dbc6952a6e03c1a2db2a244175b83655cf9c1a75 100644 (file)
@@ -13,26 +13,42 @@ import be.nikiroo.gofetch.output.Gopher;
 import be.nikiroo.gofetch.output.Html;
 import be.nikiroo.gofetch.output.Output;
 import be.nikiroo.gofetch.support.BasicSupport;
+import be.nikiroo.utils.Cache;
+import be.nikiroo.utils.Downloader;
 import be.nikiroo.utils.IOUtils;
 import be.nikiroo.utils.test.TestCase;
-import be.nikiroo.utils.test.TestLauncher;
 
 /**
  * Base class for {@link BasicSupport}s testing.
  * <p>
  * It will use the paths:
  * <ul>
- * <li><tt>test/XXX/source</tt>: the html source files</li>
- * <li><tt>test/XXX/expected</tt>: the expected output</li>
- * <li><tt>test/XXX/actual</tt>: the actual output of the last test</li>
+ * <li><tt>test/???/source</tt>: the html source files</li>
+ * <li><tt>test/???/expected</tt>: the expected output</li>
+ * <li><tt>test/???/actual</tt>: the actual output of the last test</li>
  * </ul>
  * 
  * @author niki
  */
-abstract class TestBase extends TestLauncher {
+abstract class TestBase extends TestCase {
+       private BasicSupport support;
+       private Cache cache;
+       private Downloader downloader;
+
        public TestBase(BasicSupport support, String[] args) {
-               super(support.getType().toString(), args);
-               addTest(support);
+               super(support.getType().toString());
+               this.support = support;
+               try {
+                       cache = new Cache(new File("test/source/" + support.getType()), -1,
+                                       -1);
+                       downloader = new Downloader("gofetch", cache);
+               } catch (IOException e) {
+                       throw new RuntimeException(e);
+               }
+       }
+
+       protected InputStream download(URL url) throws IOException {
+               return downloader.open(url);
        }
 
        static protected InputStream doOpen(BasicSupport support,
@@ -48,35 +64,30 @@ abstract class TestBase extends TestLauncher {
 
        }
 
-       private void addTest(final BasicSupport support) {
-               addTest(new TestCase("Processing example data") {
-                       @Override
-                       public void test() throws Exception {
-                               File expected = new File("test/expected/" + support.getType());
-                               File actual = new File("test/result/" + support.getType());
+       @Override
+       public void test() throws Exception {
+               File expected = new File("test/expected/" + support.getType());
+               File actual = new File("test/result/" + support.getType());
 
-                               IOUtils.deltree(actual);
-                               expected.mkdirs();
-                               actual.mkdirs();
+               IOUtils.deltree(actual);
+               expected.mkdirs();
+               actual.mkdirs();
 
-                               Output gopher = new Gopher(support.getType(), "", "", 70);
-                               Output html = new Html(support.getType(), "", "", 80);
+               Output gopher = new Gopher(support.getType(), "", "", 70);
+               Output html = new Html(support.getType(), "", "", 80);
 
-                               for (Story story : support.list()) {
-                                       support.fetch(story);
-                                       IOUtils.writeSmallFile(new File(actual, story.getId()
-                                                       + ".header"), gopher.exportHeader(story));
-                                       IOUtils.writeSmallFile(
-                                                       new File(actual, story.getId() + ""),
-                                                       gopher.export(story));
-                                       IOUtils.writeSmallFile(new File(actual, story.getId()
-                                                       + ".header.html"), html.exportHeader(story));
-                                       IOUtils.writeSmallFile(new File(actual, story.getId()
-                                                       + ".html"), html.export(story));
-                               }
+               for (Story story : support.list()) {
+                       support.fetch(story);
+                       IOUtils.writeSmallFile(new File(actual, story.getId() + ".header"),
+                                       gopher.exportHeader(story));
+                       IOUtils.writeSmallFile(new File(actual, story.getId() + ""),
+                                       gopher.export(story));
+                       IOUtils.writeSmallFile(new File(actual, story.getId()
+                                       + ".header.html"), html.exportHeader(story));
+                       IOUtils.writeSmallFile(new File(actual, story.getId() + ".html"),
+                                       html.export(story));
+               }
 
-                               assertEquals(expected, actual);
-                       }
-               });
+               assertEquals(expected, actual);
        }
 }