package alma.acs.releasedoc;
import java.io.File;
import java.text.ParseException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import junit.framework.TestCase;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class Cvs2clXmlParserTest extends TestCase
{
private Cvs2clXmlParser parser;
protected void setUp() throws Exception {
parser = new Cvs2clXmlParser();
}
public void testIsWikiWord() {
TWikiFormatter formatter = new TWikiFormatter();
assertTrue(formatter.isWikiWord("LoggingConfigurableLevelTranslator"));
assertTrue(formatter.isWikiWord("NamingContext"));
assertTrue(formatter.isWikiWord("ACSCoreLevel"));
assertTrue(formatter.isWikiWord("IOLogsHelper.java"));
assertFalse(formatter.isWikiWord(""));
assertFalse(formatter.isWikiWord("AAA"));
assertFalse(formatter.isWikiWord("alllower"));
assertFalse(formatter.isWikiWord("soStupid"));
assertFalse(formatter.isWikiWord("ALL_UPPER"));
}
public void testMaskWikiWords() {
TWikiFormatter formatter = new TWikiFormatter();
String out = formatter.maskWikiWords("Made MyCollocatedDummy1 immortal (KeepAliveTime=-1) (some more text in parentheses)");
assertEquals("Made !MyCollocatedDummy1 immortal (!KeepAliveTime=-1) (some more text in parentheses)", out);
}
// public void testFormatWikiMessage() {
// TWikiFormatter formatter = new TWikiFormatter();
// formatter.formatMessage("", message);
// }
public void __testParseXml() throws Exception {
File xmlFile = new File("cvsLogs_603_700.xml");
assertTrue("Fix user dir to contain " + xmlFile.getAbsolutePath(), xmlFile.exists());
Document doc = parser.parseXml(xmlFile);
assertNotNull(doc);
Element docElem = doc.getDocumentElement();
assertEquals("changelog", docElem.getNodeName());
// list all elem names that occur
// XPath xpath = XPathFactory.newInstance().newXPath();
// Object xpathResult = xpath.evaluate("//*", docElem, XPathConstants.NODESET);
// assertNotNull(xpathResult);
// NodeList nodes = (NodeList) xpathResult;
// Set<String> elemNames = new HashSet<String>();
// for (int i = 0; i < nodes.getLength(); i++) {
// Node node = nodes.item(i);
// if (node.getNodeType() == Node.ELEMENT_NODE) {
// elemNames.add(node.getNodeName());
// }
// }
// for (String elemName: elemNames) {
// System.out.println(elemName);
// }
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList entryNodes = (NodeList) xpath.evaluate("//entry", docElem, XPathConstants.NODESET);
for (int i = 0; i < entryNodes.getLength(); i++) {
Element entryElem = (Element) entryNodes.item(i);
Cvs2clXmlEntry entry = new Cvs2clXmlEntry(entryElem);
}
}
public void testIntersection() throws Exception {
File xmlFile1 = new File("cvsLogs_603_604.xml");
assertTrue(xmlFile1.exists());
File xmlFile2 = new File("cvsLogs_603_700.xml");
assertTrue(xmlFile2.exists());
Document doc1 = parser.parseXml(xmlFile1);
assertNotNull(doc1);
Set<Cvs2clXmlEntry> entries1 = new HashSet<Cvs2clXmlEntry>();
storeEntries(doc1, entries1);
Document doc2 = parser.parseXml(xmlFile2);
assertNotNull(doc2);
Set<Cvs2clXmlEntry> entries2 = new HashSet<Cvs2clXmlEntry>();
storeEntries(doc2, entries2);
System.out.println("Set 1 size = " + entries1.size());
System.out.println("Set 2 size = " + entries2.size());
entries2.removeAll(entries1);
System.out.println("Set 2 minus Set 1 size = " + entries2.size());
TWikiFormatter formatter = new TWikiFormatter();
List<Cvs2clXmlEntry> sortedEntries = formatter.sortByDate(entries2);
formatter.printTwiki(sortedEntries);
}
private void storeEntries(Document doc, Set<Cvs2clXmlEntry> entries) throws XPathExpressionException, ParseException {
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList entryNodes = (NodeList) xpath.evaluate("//entry", doc, XPathConstants.NODESET);
System.out.println("Number of entries: " + entryNodes.getLength());
for (int i = 0; i < entryNodes.getLength(); i++) {
Element entryElem = (Element) entryNodes.item(i);
Cvs2clXmlEntry entry = new Cvs2clXmlEntry(entryElem);
boolean wasNewEntry = entries.add(entry);
if (!wasNewEntry) {
System.out.println("**** Multiple entry " + entry.getDate() + " author = " + entry.getAuthor());
}
}
}
}