Package tests.net.sf.jabref.util

Source Code of tests.net.sf.jabref.util.XMPSchemaBibtexTest

package tests.net.sf.jabref.util;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import net.sf.jabref.BibtexEntry;
import net.sf.jabref.util.XMPSchemaBibtex;

import org.jempbox.impl.XMLUtil;
import org.jempbox.xmp.XMPMetadata;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import tests.net.sf.jabref.FileBasedTestCase;
import tests.net.sf.jabref.JabRefTestCase;

public class XMPSchemaBibtexTest extends JabRefTestCase {

  protected void setUp() throws Exception {
    super.setUp();
  }

  protected void tearDown() throws Exception {
    super.tearDown();
  }

  public void testXMPSchemaBibtexXMPMetadata() throws IOException {

    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    assertNotNull(bibtex.getElement());
    assertEquals("rdf:Description", bibtex.getElement().getTagName());

  }

  public void testXMPSchemaBibtexElement()
    throws ParserConfigurationException {
    DocumentBuilderFactory builderFactory = DocumentBuilderFactory
      .newInstance();
    DocumentBuilder builder = builderFactory.newDocumentBuilder();
    Element e = builder.newDocument().createElement("rdf:Description");

    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(e, "bibtex");

    assertEquals(e, bibtex.getElement());
    assertEquals("rdf:Description", bibtex.getElement().getTagName());
  }

  public void testGetSetPersonList() throws IOException {
    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    bibtex.setPersonList("author", "Tom DeMarco and Kent Beck");

    Element e = bibtex.getElement();

    NodeList l1 = e.getElementsByTagName("bibtex:author");
    assertEquals(1, l1.getLength());

    NodeList l = e.getElementsByTagName("rdf:li");

    assertEquals(2, l.getLength());

    assertEquals("Tom DeMarco", XMLUtil
      .getStringValue(((Element) l.item(0))));
    assertEquals("Kent Beck", XMLUtil.getStringValue(((Element) l.item(1))));

    List<String> authors = bibtex.getPersonList("author");
    assertEquals(2, authors.size());

    assertEquals("Tom DeMarco", authors.get(0));
    assertEquals("Kent Beck", authors.get(1));
  }

  public void testSetGetTextPropertyString() throws IOException {
    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    bibtex.setTextProperty("title",
      "The advanced Flux-Compensation for Delawney-Separation");

    Element e = bibtex.getElement();
    assertEquals("The advanced Flux-Compensation for Delawney-Separation",
      e.getAttribute("bibtex:title"));

    assertEquals("The advanced Flux-Compensation for Delawney-Separation",
      bibtex.getTextProperty("title"));

    bibtex.setTextProperty("title",
      "The advanced Flux-Correlation for Delawney-Separation");

    e = bibtex.getElement();
    assertEquals("The advanced Flux-Correlation for Delawney-Separation", e
      .getAttribute("bibtex:title"));

    assertEquals("The advanced Flux-Correlation for Delawney-Separation",
      bibtex.getTextProperty("title"));

    bibtex
      .setTextProperty(
        "abstract",
        "   The abstract\n can go \n \n on several \n lines with \n many \n\n empty ones in \n between.");
    assertEquals(
      "   The abstract\n can go \n \n on several \n lines with \n many \n\n empty ones in \n between.",
      bibtex.getTextProperty("abstract"));
  }

  public void testSetGetBagListString() throws IOException {

    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    bibtex.addBagValue("author", "Tom DeMarco");
    bibtex.addBagValue("author", "Kent Beck");
    {

      List<String> l = bibtex.getBagList("author");

      assertEquals(2, l.size());

      assertTrue(l.get(0).equals("Tom DeMarco")
        || l.get(1).equals("Tom DeMarco"));
      assertTrue(l.get(0).equals("Kent Beck")
        || l.get(1).equals("Kent Beck"));
    }
    {
      bibtex.removeBagValue("author", "Kent Beck");
      List<String> l = bibtex.getBagList("author");
      assertEquals(1, l.size());
      assertTrue(l.get(0).equals("Tom DeMarco"));
    }
    { // Already removed
      bibtex.removeBagValue("author", "Kent Beck");
      List<String> l = bibtex.getBagList("author");
      assertEquals(1, l.size());
      assertTrue(l.get(0).equals("Tom DeMarco"));
    }
    { // Duplicates allowed!
      bibtex.addBagValue("author", "Tom DeMarco");
      List<String> l = bibtex.getBagList("author");
      assertEquals(2, l.size());
      assertTrue(l.get(0).equals("Tom DeMarco"));
      assertTrue(l.get(1).equals("Tom DeMarco"));
    }
    { // Removes both
      bibtex.removeBagValue("author", "Tom DeMarco");
      List<String> l = bibtex.getBagList("author");
      assertEquals(0, l.size());
    }
  }

  public void testGetSequenceListString() throws IOException {

    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    bibtex.addSequenceValue("author", "Tom DeMarco");
    bibtex.addSequenceValue("author", "Kent Beck");
    {

      List<String> l = bibtex.getSequenceList("author");

      assertEquals(2, l.size());

      assertEquals("Tom DeMarco", l.get(0));
      assertEquals("Kent Beck", l.get(1));
    }
    {
      bibtex.removeSequenceValue("author", "Tom DeMarco");
      List<String> l = bibtex.getSequenceList("author");
      assertEquals(1, l.size());
      assertTrue(l.get(0).equals("Kent Beck"));
    }
    { // Already removed
      bibtex.removeSequenceValue("author", "Tom DeMarco");
      List<String> l = bibtex.getSequenceList("author");
      assertEquals(1, l.size());
      assertTrue(l.get(0).equals("Kent Beck"));
    }
    { // Duplicates allowed!
      bibtex.addSequenceValue("author", "Kent Beck");
      List<String> l = bibtex.getSequenceList("author");
      assertEquals(2, l.size());
      assertTrue(l.get(0).equals("Kent Beck"));
      assertTrue(l.get(1).equals("Kent Beck"));
    }
    { // Remvoes all
      bibtex.removeSequenceValue("author", "Kent Beck");
      List<String> l = bibtex.getSequenceList("author");
      assertEquals(0, l.size());
    }
  }

  public void testSetRemoveGetSequenceDateListString() {
    // We don't use this...
  }

  public void testGetAllProperties() throws IOException {
    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    bibtex.setTextProperty("title", "BlaBla Ta Ta\nHello World");
    bibtex.setTextProperty("abstract", "BlaBla Ta Ta\nHello World");
    bibtex.setTextProperty("review", "BlaBla Ta Ta\nHello World");
    bibtex.setTextProperty("note", "BlaBla Ta Ta\nHello World");
    bibtex.setPersonList("author", "Mouse, Mickey and Bond, James");

    Map<String, String> s = XMPSchemaBibtex.getAllProperties(bibtex,
      "bibtex");

    assertEquals(5, s.size());
    assertTrue(s.containsKey("title"));
    assertTrue(s.containsKey("author"));

    assertEquals("BlaBla Ta Ta Hello World", s.get("title"));
    assertEquals("BlaBla Ta Ta\nHello World", s.get("abstract"));
    assertEquals("BlaBla Ta Ta\nHello World", s.get("review"));
    assertEquals("BlaBla Ta Ta\nHello World", s.get("note"));
    assertEquals("Mickey Mouse and James Bond", s.get("author"));
  }

  public void testSetBibtexEntry() throws IOException {

    XMPMetadata xmp = new XMPMetadata();
    XMPSchemaBibtex bibtex = new XMPSchemaBibtex(xmp);

    BibtexEntry e = FileBasedTestCase.getBibtexEntry();
    bibtex.setBibtexEntry(e, null);

    BibtexEntry e2 = bibtex.getBibtexEntry();

    assertEquals(e, e2);
  }

  public void testGetTextContent() throws IOException {
    String bibtexString = "<bibtex:year>2003</bibtex:year>\n"
      + "<bibtex:title>\n   "
      + "Beach sand convolution by surf-wave optimzation\n"
      + "</bibtex:title>\n"
      + "<bibtex:bibtexkey>OezbekC06</bibtex:bibtexkey>\n";

    bibtexString = XMPUtilTest.bibtexXPacket(XMPUtilTest
      .bibtexDescription(bibtexString));

    Document d = XMLUtil.parse(new ByteArrayInputStream(bibtexString
      .getBytes()));

    assertEquals("Beach sand convolution by surf-wave optimzation",
      XMPSchemaBibtex.getTextContent(
        d.getElementsByTagName("bibtex:title").item(0)).trim());

  }

}
TOP

Related Classes of tests.net.sf.jabref.util.XMPSchemaBibtexTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.