package com.limegroup.gnutella.xml;
import com.limegroup.gnutella.util.BaseTestCase;
/**
* Tests the utility class for xml queries. This performs such functions as
* the all-important match method.
*/
public class LimeXMLUtilsTest extends BaseTestCase {
public LimeXMLUtilsTest(String name) {
super(name);
}
/**
* Tests the method for matching two XML documents -- used for incoming
* searches.
*
* @throws Exception if any error occurs
*/
public void testDocsThatShouldMatch() throws Exception {
LimeXMLDocument doc =
new LimeXMLDocument(buildXMLString("director=\"francis loopola\""));
// Make sure that null pointers are thrown properly.
try {
LimeXMLUtils.match(doc, null, false);
fail("should have thrown null pointer");
} catch(NullPointerException e) {
}
// Make sure the dummy case works.
assertTrue("docs should match", LimeXMLUtils.match(doc, doc, false));
// Make sure that searches with many criteria match files on disk with
// only one criteria, as long as that criteria matches.
String queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\" link=\"test\" " +
"comments=\"test\" action=\"test\"" +
"></audio></audios>";
LimeXMLDocument queryDoc = new LimeXMLDocument(queryString);
String onDiskString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio " +
"title=\"test\"" +
"></audio></audios>";
LimeXMLDocument onDiskDoc = new LimeXMLDocument(onDiskString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
// Make sure that searches with a single argument match results with
// lots of other fields.
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
onDiskString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\" link=\"test\" " +
"comments=\"test\" action=\"test\"></audio></audios>";
onDiskDoc = new LimeXMLDocument(onDiskString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\"" +
" type=\"song\""+
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\"" +
" type=\"song\" year=\"test\""+
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\""+
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\""+
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\" link=\"test\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\" link=\"test\" " +
"comments=\"test\"" +
"></audio></audios>";
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\" link=\"test\" " +
"comments=\"test\" action=\"test\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertTrue("docs should match", LimeXMLUtils.match(onDiskDoc,queryDoc, false));
}
/**
* Test to make sure that docs that should not match do not, in fact, match.
*
* @throws Exception if an error occurs
*/
public void testDocsThatShouldNotMatch() throws Exception {
String onDiskString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"test\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\" " +
"SHA1=\"test\" bitrate=\"test\" price=\"test\" link=\"test\" " +
"comments=\"test\" action=\"test\"></audio></audios>";
LimeXMLDocument onDiskDoc = new LimeXMLDocument(onDiskString);
String queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"nottest\"" +
"></audio></audios>";
LimeXMLDocument queryDoc = new LimeXMLDocument(queryString);
assertFalse("docs should not match",
LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"nottest\"" +
"></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertFalse("docs should not match",
LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"nottest\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"test\" language=\"test\"" +
" ></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertFalse("docs should not match",
LimeXMLUtils.match(onDiskDoc,queryDoc, false));
queryString =
"<?xml version=\"1.0\"?><audios xsi:noNamespaceSchemaLocation=" +
"\"http://www.limewire.com/schemas/audio.xsd\"><audio title=" +
"\"test\" artist=\"nottest\" album=\"test\" track=\"test\" type=" +
"\"song\" year=\"test\" seconds=\"nottest\" language=\"test\"" +
" ></audio></audios>";
queryDoc = new LimeXMLDocument(queryString);
assertFalse("docs should not match",
LimeXMLUtils.match(onDiskDoc,queryDoc, false));
}
// build xml string for video
private String buildXMLString(String keyname) {
return "<?xml version=\"1.0\"?><videos xsi:noNamespaceSchemaLocation="
+ "\"http://www.limewire.com/schemas/video.xsd\"><video "
+ keyname
+ "></video></videos>";
}
}