aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/edu/brown/cs/student/XmlParserTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/edu/brown/cs/student/XmlParserTest.java')
-rw-r--r--src/test/java/edu/brown/cs/student/XmlParserTest.java168
1 files changed, 168 insertions, 0 deletions
diff --git a/src/test/java/edu/brown/cs/student/XmlParserTest.java b/src/test/java/edu/brown/cs/student/XmlParserTest.java
new file mode 100644
index 0000000..684452b
--- /dev/null
+++ b/src/test/java/edu/brown/cs/student/XmlParserTest.java
@@ -0,0 +1,168 @@
+package edu.brown.cs.student;
+
+import edu.brown.cs.student.term.parsing.LocalXmlParser;
+import edu.brown.cs.student.term.parsing.UrlXmlParser;
+import edu.brown.cs.student.term.parsing.XmlParser;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import javax.print.Doc;
+
+import static org.junit.Assert.*;
+
+public class XmlParserTest {
+ private XmlParser _localXmlParser, _urlXmlParser;
+ private Document _doc;
+
+ @Before
+ public void setUp() {
+ _localXmlParser = new LocalXmlParser();
+ _urlXmlParser = new UrlXmlParser();
+ }
+
+ @After
+ public void tearDown() {
+ _localXmlParser = null;
+ _urlXmlParser = null;
+ }
+
+ @Test
+ public void parsesLocal(){
+ setUp();
+ Document doc = _localXmlParser.parse("data/xml_single_trade_test.xml");
+ assertNotNull(doc);
+
+ // Id of person
+ assertEquals(getIdFromDoc(doc), "0001561844");
+ tearDown();
+ }
+
+ @Test
+ public void parsesUrl(){
+ setUp();
+ Document doc =
+ _urlXmlParser.parse("https://www.sec.gov/Archives/edgar/data/1517006/000110465921046242/tm2112036-4_4seq1.xml");
+ assertNotNull(doc);
+
+ // Id of person
+ assertEquals(getIdFromDoc(doc), "0001561844");
+ tearDown();
+ }
+
+ public String getIdFromDoc(Document doc) {
+ // Id of person
+ NodeList idNode = doc.getElementsByTagName("rptOwnerCik");
+ assertEquals(idNode.getLength(), 1);
+ return idNode.item(0).getTextContent();
+ }
+
+ @Test
+ public void urlSameAsLocal(){
+ setUp();
+ Document local = _localXmlParser.parse("data/xml_single_trade_test.xml");
+ Document url =
+ _urlXmlParser.parse("https://www.sec.gov/Archives/edgar/data/1517006/000110465921046242/tm2112036-4_4seq1.xml");
+
+ assertEquals(getIdFromDoc(local), getIdFromDoc(url));
+ tearDown();
+ }
+
+ @Test
+ public void noFileExists(){
+ setUp();
+ tearDown();
+ }
+
+ @Test
+ public void badXmlFormat(){
+ setUp();
+ Document doc = _localXmlParser.parse("data/bad.xml");
+ assertNull(doc);
+ tearDown();
+ }
+
+ @Test
+ public void personDataParse(){
+ setUp();
+ Document doc = _localXmlParser.parse("data/xml_single_trade_test.xml");
+ assertNotNull(doc);
+
+ // Id of person
+ NodeList idNode = doc.getElementsByTagName("rptOwnerCik");
+ assertEquals(idNode.getLength(), 1);
+ String id = idNode.item(0).getTextContent();
+ assertEquals(id, "0001561844");
+
+ // Name of person
+ NodeList nameNode = doc.getElementsByTagName("rptOwnerName");
+ assertEquals(nameNode.getLength(), 1);
+ String name = nameNode.item(0).getTextContent();
+ assertEquals(name, "Levental Igor");
+
+ tearDown();
+ }
+
+ @Test
+ public void securityDataParse(){
+ setUp();
+ Document doc = _localXmlParser.parse("data/xml_single_trade_test.xml");
+ assertNotNull(doc);
+
+ // Ticker of security
+ NodeList idNode = doc.getElementsByTagName("issuerTradingSymbol");
+ assertEquals(idNode.getLength(), 1);
+ String id = idNode.item(0).getTextContent();
+ assertEquals(id, "GATO");
+
+ tearDown();
+ }
+
+ @Test
+ public void tradeDataParse(){
+ setUp();
+ Document doc = _localXmlParser.parse("data/xml_single_trade_test.xml");
+ assertNotEquals(doc, null);
+
+ // Data of trade in an array of values
+ NodeList trade = doc.getElementsByTagName("nonDerivativeTransaction");
+ assertEquals(trade.item(0).getNodeType(), Node.ELEMENT_NODE);
+ Element tradeElement = (Element) trade.item(0);
+ NodeList values = tradeElement.getElementsByTagName("value");
+ assertEquals(values.getLength(), 7);
+
+ // type of stock
+ String stockType = values.item(0).getTextContent();
+ assertEquals(stockType, "Common Stock");
+
+ // date
+ String date = values.item(1).getTextContent();
+ assertEquals(date, "2021-03-31");
+
+ // # of shares
+ String numShares = values.item(2).getTextContent();
+ assertEquals(numShares, "8236");
+
+ // price of shares
+ String priceShares = values.item(3).getTextContent();
+ assertEquals(priceShares, "0");
+
+ // transaction type (A for acquire)
+ String transactionType = values.item(4).getTextContent();
+ assertEquals(transactionType, "A");
+
+ // shared after transaction
+ String sharesAfter = values.item(5).getTextContent();
+ assertEquals(sharesAfter, "10799");
+
+ // ownership type
+ String ownershipType = values.item(6).getTextContent();
+ assertEquals(ownershipType, "D");
+
+ tearDown();
+ }
+}