package org.archive.resource.html; import org.archive.resource.MetaData; import org.htmlparser.nodes.TextNode; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import junit.framework.TestCase; public class ExtractingParseObserverTest extends TestCase { public void testHandleStyleNodeExceptions() throws Exception { String[] tests = { "some css", "url()", "url () ", "url ('')", "url (' ')", "url('\")", "url(')", "url('\"')" }; boolean except = false; HTMLMetaData md = new HTMLMetaData(new MetaData()); ExtractingParseObserver epo = new ExtractingParseObserver(md); for(String css : tests) { try { TextNode tn = new TextNode(css); epo.handleStyleNode(tn); } catch(Exception e) { System.err.format("And the winner is....(%s)\n", css); e.printStackTrace(); except = true; throw e; } assertFalse(except); } } public void testHandleStyleNode() throws Exception { String[][] tests = { {""}, {"url(foo.gif)","foo.gif"}, {"url('foo.gif')","foo.gif"}, {"url(\"foo.gif\")","foo.gif"}, {"url(\\\"foo.gif\\\")","foo.gif"}, {"url(\\'foo.gif\\')","foo.gif"}, }; for(String[] testa : tests) { checkExtract(testa); } // boolean except = false; // HTMLMetaData md = new HTMLMetaData(new MetaData()); // ExtractingParseObserver epo = new ExtractingParseObserver(md); // for(String css : tests) { // try { // TextNode tn = new TextNode(css); // epo.handleStyleNode(tn); // } catch(Exception e) { // System.err.format("And the winner is....(%s)\n", css); // e.printStackTrace(); // except = true; // throw e; // } // assertFalse(except); // } } private void checkExtract(String[] data) throws JSONException { // System.err.format("CSS(%s) want[0](%s)\n",css,want[0]); String css = data[0]; boolean except = false; HTMLMetaData md = new HTMLMetaData(new MetaData()); ExtractingParseObserver epo = new ExtractingParseObserver(md); try { TextNode tn = new TextNode(css); epo.handleStyleNode(tn); } catch(Exception e) { fail("Exception with CSS:" + css); } JSONArray a = md.optJSONArray("Links"); if(data.length > 1) { assertNotNull(a); assertEquals(data.length-1,a.length()); for(int i = 1; i < data.length; i++) { Object o = a.optJSONObject(i-1); assertTrue(o instanceof JSONObject); JSONObject jo = (JSONObject) o; assertEquals(data[i],jo.getString("href")); } } else { assertNull(a); } } }