package org.meaningfulweb.opengraph.test; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Map; import java.util.Set; import junit.framework.TestCase; import org.meaningfulweb.opengraph.OGObject; import org.meaningfulweb.opengraph.OpenGraphParser; public class Og4jTestCase extends TestCase { static final File TestDataDir = new File("src/test/test-data"); private static OGObject read(File f) throws IOException{ return read(f,null); } private static OGObject read(File f,Set<String> unscapeHtml) throws IOException{ FileReader reader = new FileReader(f); OGObject obj = OpenGraphParser.parse(reader,unscapeHtml); reader.close(); return obj; } public void testEmpty() throws Exception{ File emptyHtml = new File(TestDataDir,"empty.html"); OGObject obj = read(emptyHtml); assertTrue(obj.isEmpty()); assertFalse(obj.isValid()); } public void testUnescapeHtml() throws Exception{ File emptyHtml = new File(TestDataDir,"unescapeTestHtml.html"); OGObject obj = read(emptyHtml,OpenGraphParser.UNESCAPE_HTML_FIELDS); assertEquals("Shaquille O\'Neal\'", obj.getTitle()); assertEquals("Shaquille O\'Neal\' ", obj.getDescription()); } public void testInvalid() throws Exception{ File invalidHtml = new File(TestDataDir,"invalid.html"); OGObject obj = read(invalidHtml); assertEquals("img", obj.getImage()); assertEquals("invalid", obj.getTitle()); assertFalse(obj.isValid()); } public void testValidWithAudioVideo() throws Exception{ File audioVideo = new File(TestDataDir,"audiovideo.html"); OGObject obj = read(audioVideo); assertTrue(obj.isValid()); assertFalse(obj.isEmpty()); Map<String,String> metaMap = obj.getMeta(); assertEquals("url",metaMap.get("url")); Map<String,String> audioMeta = obj.getAudio(); assertEquals("audiourl",audioMeta.get("url")); assertEquals("audiotype",audioMeta.get("type")); Map<String,String> videoMeta = obj.getVideo(); assertEquals("videourl",videoMeta.get("url")); assertEquals("videotype",videoMeta.get("type")); } public void testValidWithVideoOnlyInvalid() throws Exception{ File audioVideo = new File(TestDataDir,"videoOnlyInvalid.html"); OGObject obj = read(audioVideo); assertFalse(obj.isValid()); assertFalse(obj.isEmpty()); Map<String,String> metaMap = obj.getMeta(); assertEquals("url",metaMap.get("url")); Map<String,String> videoMeta = obj.getVideo(); assertEquals("videotype",videoMeta.get("type")); Map<String,String> audioMeta = obj.getAudio(); assertTrue(audioMeta.isEmpty()); } public void testValidWithAudioOnly() throws Exception{ File audioOnly = new File(TestDataDir,"audioOnly.html"); OGObject obj = read(audioOnly); assertTrue(obj.isValid()); assertFalse(obj.isEmpty()); Map<String,String> metaMap = obj.getMeta(); assertEquals("url",metaMap.get("url")); Map<String,String> audioMeta = obj.getAudio(); assertEquals("audiourl",audioMeta.get("url")); assertEquals("audiotype",audioMeta.get("type")); Map<String,String> videoMeta = obj.getVideo(); assertTrue(videoMeta.isEmpty()); } }