package org.jabref.gui.worker;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.util.Arrays;
import org.jabref.gui.exporter.RtfTransferable;
import org.jabref.gui.fieldeditors.HtmlTransferable;
import org.jabref.gui.fieldeditors.XmlTransferable;
import org.jabref.logic.util.OS;
import org.junit.Assert;
import org.junit.Test;
public class CitationStyleToClipboardWorkerTest {
@Test
public void processPreviewText() throws Exception {
String expected = "Article (Smith2016)Smith, B.; Jones, B. & Williams, J.Taylor, P. (Ed.)Title of the test entry BibTeX Journal, JabRef Publishing, 2016, 34, 45-67 Abstract: This entry describes a test scenario which may be useful in JabRef. By providing a test entry it is possible to see how certain things will look in this graphical BIB-file mananger." + OS.NEWLINE +
"Article (Smith2016)Smith, B.; Jones, B. & Williams, J.Taylor, P. (Ed.)Title of the test entry BibTeX Journal, JabRef Publishing, 2016, 34, 45-67 Abstract: This entry describes a test scenario which may be useful in JabRef. By providing a test entry it is possible to see how certain things will look in this graphical BIB-file mananger.";
String citation = "Article (Smith2016)" + OS.NEWLINE +
"Smith, B.; Jones, B. & Williams, J." + OS.NEWLINE +
"Taylor, P. (Ed.)" + OS.NEWLINE +
"Title of the test entry " + OS.NEWLINE +
"BibTeX Journal, JabRef Publishing, 2016, 34, 45-67 " + OS.NEWLINE +
OS.NEWLINE +
"Abstract: This entry describes a test scenario which may be useful in JabRef. By providing a test entry it is possible to see how certain things will look in this graphical BIB-file mananger. ";
HtmlTransferable HtmlTransferable = CitationStyleToClipboardWorker.processPreview(Arrays.asList(citation, citation));
Object actual = HtmlTransferable.getTransferData(DataFlavor.stringFlavor);
Assert.assertEquals(expected, actual);
}
@Test
public void processPreviewHtml() throws Exception {
String expected = "<font face=\"sans-serif\"><b><i>Article</i><a name=\"Smith2016\"> (Smith2016)</a></b><br>" + OS.NEWLINE +
" Smith, B.; Jones, B. & Williams, J.<BR>" + OS.NEWLINE +
" Taylor, P. <i>(Ed.)</i><BR>" + OS.NEWLINE +
" Title of the test entry <BR>" + OS.NEWLINE +
OS.NEWLINE +
" <em>BibTeX Journal, </em>" + OS.NEWLINE +
OS.NEWLINE +
OS.NEWLINE +
OS.NEWLINE +
" <em>JabRef Publishing, </em>" + OS.NEWLINE +
"<b>2016</b><i>, 34</i>, 45-67 " + OS.NEWLINE +
"<BR><BR><b>Abstract: </b> This entry describes a test scenario which may be useful in JabRef. By providing a test entry it is possible to see how certain things will look in this graphical BIB-file mananger. " + OS.NEWLINE +
"</dd>" + OS.NEWLINE +
"<p></p></font>" + OS.NEWLINE +
"<br>" + OS.NEWLINE +
"<font face=\"sans-serif\"><b><i>Article</i><a name=\"Smith2016\"> (Smith2016)</a></b><br>" + OS.NEWLINE +
" Smith, B.; Jones, B. & Williams, J.<BR>" + OS.NEWLINE +
" Taylor, P. <i>(Ed.)</i><BR>" + OS.NEWLINE +
" Title of the test entry <BR>" + OS.NEWLINE +
OS.NEWLINE +
" <em>BibTeX Journal, </em>" + OS.NEWLINE +
OS.NEWLINE +
OS.NEWLINE +
OS.NEWLINE +
" <em>JabRef Publishing, </em>" + OS.NEWLINE +
"<b>2016</b><i>, 34</i>, 45-67 " + OS.NEWLINE +
"<BR><BR><b>Abstract: </b> This entry describes a test scenario which may be useful in JabRef. By providing a test entry it is possible to see how certain things will look in this graphical BIB-file mananger. " + OS.NEWLINE +
"</dd>" + OS.NEWLINE +
"<p></p></font>";
String citation = "<font face=\"sans-serif\"><b><i>Article</i><a name=\"Smith2016\"> (Smith2016)</a></b><br>" + OS.NEWLINE +
" Smith, B.; Jones, B. & Williams, J.<BR>" + OS.NEWLINE +
" Taylor, P. <i>(Ed.)</i><BR>" + OS.NEWLINE +
" Title of the test entry <BR>" + OS.NEWLINE +
OS.NEWLINE +
" <em>BibTeX Journal, </em>" + OS.NEWLINE +
OS.NEWLINE +
OS.NEWLINE +
OS.NEWLINE +
" <em>JabRef Publishing, </em>" + OS.NEWLINE +
"<b>2016</b><i>, 34</i>, 45-67 " + OS.NEWLINE +
"<BR><BR><b>Abstract: </b> This entry describes a test scenario which may be useful in JabRef. By providing a test entry it is possible to see how certain things will look in this graphical BIB-file mananger. " + OS.NEWLINE +
"</dd>" + OS.NEWLINE +
"<p></p></font>";
HtmlTransferable transferable = CitationStyleToClipboardWorker.processPreview(Arrays.asList(citation, citation));
Object actual = transferable.getTransferData(HtmlTransferable.HTML_FLAVOR);
Assert.assertEquals(expected, actual);
}
@Test
public void processText() throws Exception {
String expected = "[1]B. Smith, B. Jones, and J. Williams, “Title of the test entry,” BibTeX Journal, vol. 34, no. 3, pp. 45–67, Jul. 2016." + OS.NEWLINE +
"[1]B. Smith, B. Jones, and J. Williams, “Title of the test entry,” BibTeX Journal, vol. 34, no. 3, pp. 45–67, Jul. 2016." + OS.NEWLINE;
String citation = "[1]B. Smith, B. Jones, and J. Williams, “Title of the test entry,” BibTeX Journal, vol. 34, no. 3, pp. 45–67, Jul. 2016." + OS.NEWLINE;
StringSelection textTransferable = CitationStyleToClipboardWorker.processText(Arrays.asList(citation, citation));
Object actual = textTransferable.getTransferData(DataFlavor.stringFlavor);
Assert.assertEquals(expected, actual);
}
@Test
public void processRtf() throws Exception {
String expected = "{\\rtf" + OS.NEWLINE +
"[1]\\tab B. Smith, B. Jones, and J. Williams, \\uc0\\u8220{}Title of the test entry,\\uc0\\u8221{} {\\i{}BibTeX Journal}, vol. 34, no. 3, pp. 45\\uc0\\u8211{}67, Jul. 2016." + OS.NEWLINE +
"\\line" + OS.NEWLINE +
"[1]\\tab B. Smith, B. Jones, and J. Williams, \\uc0\\u8220{}Title of the test entry,\\uc0\\u8221{} {\\i{}BibTeX Journal}, vol. 34, no. 3, pp. 45\\uc0\\u8211{}67, Jul. 2016." + OS.NEWLINE +
"}";
String citation = "[1]\\tab B. Smith, B. Jones, and J. Williams, \\uc0\\u8220{}Title of the test entry,\\uc0\\u8221{} {\\i{}BibTeX Journal}, vol. 34, no. 3, pp. 45\\uc0\\u8211{}67, Jul. 2016." + OS.NEWLINE;
RtfTransferable rtfTransferable = CitationStyleToClipboardWorker.processRtf(Arrays.asList(citation, citation));
Object actual = rtfTransferable.getTransferData(DataFlavor.stringFlavor);
Assert.assertEquals(expected, actual);
}
@Test
public void processXslFo() throws Exception {
String expected = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + OS.NEWLINE +
"<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">" + OS.NEWLINE +
" <fo:layout-master-set>" + OS.NEWLINE +
" <fo:simple-page-master master-name=\"citations\">" + OS.NEWLINE +
" <fo:region-body/>" + OS.NEWLINE +
" </fo:simple-page-master>" + OS.NEWLINE +
" </fo:layout-master-set>" + OS.NEWLINE +
" <fo:page-sequence master-reference=\"citations\">" + OS.NEWLINE +
" <fo:flow flow-name=\"xsl-region-body\">" + OS.NEWLINE +
OS.NEWLINE +
"<fo:block id=\"Smith2016\">" + OS.NEWLINE +
" <fo:table table-layout=\"fixed\" width=\"100%\">" + OS.NEWLINE +
" <fo:table-column column-number=\"1\" column-width=\"2.5em\"/>" + OS.NEWLINE +
" <fo:table-column column-number=\"2\" column-width=\"proportional-column-width(1)\"/>" + OS.NEWLINE +
" <fo:table-body>" + OS.NEWLINE +
" <fo:table-row>" + OS.NEWLINE +
" <fo:table-cell>" + OS.NEWLINE +
" <fo:block>[1]</fo:block>" + OS.NEWLINE +
" </fo:table-cell>" + OS.NEWLINE +
" <fo:table-cell>" + OS.NEWLINE +
" <fo:block>B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <fo:inline font-style=\"italic\">BibTeX Journal</fo:inline>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</fo:block>" + OS.NEWLINE +
" </fo:table-cell>" + OS.NEWLINE +
" </fo:table-row>" + OS.NEWLINE +
" </fo:table-body>" + OS.NEWLINE +
" </fo:table>" + OS.NEWLINE +
"</fo:block>" + OS.NEWLINE +
OS.NEWLINE +
"<fo:block id=\"Smith2016\">" + OS.NEWLINE +
" <fo:table table-layout=\"fixed\" width=\"100%\">" + OS.NEWLINE +
" <fo:table-column column-number=\"1\" column-width=\"2.5em\"/>" + OS.NEWLINE +
" <fo:table-column column-number=\"2\" column-width=\"proportional-column-width(1)\"/>" + OS.NEWLINE +
" <fo:table-body>" + OS.NEWLINE +
" <fo:table-row>" + OS.NEWLINE +
" <fo:table-cell>" + OS.NEWLINE +
" <fo:block>[1]</fo:block>" + OS.NEWLINE +
" </fo:table-cell>" + OS.NEWLINE +
" <fo:table-cell>" + OS.NEWLINE +
" <fo:block>B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <fo:inline font-style=\"italic\">BibTeX Journal</fo:inline>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</fo:block>" + OS.NEWLINE +
" </fo:table-cell>" + OS.NEWLINE +
" </fo:table-row>" + OS.NEWLINE +
" </fo:table-body>" + OS.NEWLINE +
" </fo:table>" + OS.NEWLINE +
"</fo:block>" + OS.NEWLINE +
OS.NEWLINE +
" </fo:flow>" + OS.NEWLINE +
" </fo:page-sequence>" + OS.NEWLINE +
"</fo:root>" + OS.NEWLINE;
String citation = "<fo:block id=\"Smith2016\">" + OS.NEWLINE +
" <fo:table table-layout=\"fixed\" width=\"100%\">" + OS.NEWLINE +
" <fo:table-column column-number=\"1\" column-width=\"2.5em\"/>" + OS.NEWLINE +
" <fo:table-column column-number=\"2\" column-width=\"proportional-column-width(1)\"/>" + OS.NEWLINE +
" <fo:table-body>" + OS.NEWLINE +
" <fo:table-row>" + OS.NEWLINE +
" <fo:table-cell>" + OS.NEWLINE +
" <fo:block>[1]</fo:block>" + OS.NEWLINE +
" </fo:table-cell>" + OS.NEWLINE +
" <fo:table-cell>" + OS.NEWLINE +
" <fo:block>B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <fo:inline font-style=\"italic\">BibTeX Journal</fo:inline>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</fo:block>" + OS.NEWLINE +
" </fo:table-cell>" + OS.NEWLINE +
" </fo:table-row>" + OS.NEWLINE +
" </fo:table-body>" + OS.NEWLINE +
" </fo:table>" + OS.NEWLINE +
"</fo:block>" + OS.NEWLINE;
XmlTransferable xmlTransferable = CitationStyleToClipboardWorker.processXslFo(Arrays.asList(citation, citation));
Object actual = xmlTransferable.getTransferData(DataFlavor.stringFlavor);
Assert.assertEquals(expected, actual);
}
@Test
public void processHtmlAsHtml() throws Exception {
String expected = "<!DOCTYPE html>" + OS.NEWLINE +
"<html>" + OS.NEWLINE +
" <head>" + OS.NEWLINE +
" <meta charset=\"utf-8\">" + OS.NEWLINE +
" </head>" + OS.NEWLINE +
" <body>" + OS.NEWLINE +
OS.NEWLINE +
" <div class=\"csl-entry\">" + OS.NEWLINE +
" <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <i>BibTeX Journal</i>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</div>" + OS.NEWLINE +
" </div>" + OS.NEWLINE +
OS.NEWLINE +
"<br>" + OS.NEWLINE +
" <div class=\"csl-entry\">" + OS.NEWLINE +
" <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <i>BibTeX Journal</i>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</div>" + OS.NEWLINE +
" </div>" + OS.NEWLINE +
OS.NEWLINE +
" </body>" + OS.NEWLINE +
"</html>" + OS.NEWLINE;
String citation = " <div class=\"csl-entry\">" + OS.NEWLINE +
" <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <i>BibTeX Journal</i>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</div>" + OS.NEWLINE +
" </div>" + OS.NEWLINE;
HtmlTransferable htmlTransferable = CitationStyleToClipboardWorker.processHtml(Arrays.asList(citation, citation));
Object actual = htmlTransferable.getTransferData(DataFlavor.allHtmlFlavor);
Assert.assertEquals(expected, actual);
}
@Test
public void processHtmlAsText() throws Exception {
String expected = "[1] B. Smith, B. Jones, and J. Williams, “Title of the test entry,” BibTeX Journal , vol. 34, no. 3, pp. 45–67, Jul. 2016." + OS.NEWLINE +
"[1] B. Smith, B. Jones, and J. Williams, “Title of the test entry,” BibTeX Journal , vol. 34, no. 3, pp. 45–67, Jul. 2016.";
String citation = " <div class=\"csl-entry\">" + OS.NEWLINE +
" <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">B. Smith, B. Jones, and J. Williams, “Title of the test entry,” <i>BibTeX Journal</i>, vol. 34, no. 3, pp. 45–67, Jul. 2016.</div>" + OS.NEWLINE +
" </div>" + OS.NEWLINE;
HtmlTransferable htmlTransferable = CitationStyleToClipboardWorker.processHtml(Arrays.asList(citation, citation));
Object actual = htmlTransferable.getTransferData(DataFlavor.stringFlavor);
Assert.assertEquals(expected, actual);
}
}