package org.jabref.logic.citationstyle;
import org.jabref.logic.l10n.Localization;
import org.jabref.logic.util.TestEntry;
import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.FieldName;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class CitationStyleGeneratorTest {
@Test
public void testIgnoreNewLine() {
BibEntry entry = new BibEntry();
entry.setField(FieldName.AUTHOR, "Last, First and\nDoe, Jane");
// if the default citation style changes this has to be modified
String expected = " <div class=\"csl-entry\">\n" +
" <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">F. Last and J. Doe, .</div>\n" +
" </div>\n";
String citation = CitationStyleGenerator.generateCitation(entry, CitationStyle.getDefault());
assertEquals(expected, citation);
}
@Test
public void testIgnoreCarriageReturnNewLine() {
BibEntry entry = new BibEntry();
entry.setField(FieldName.AUTHOR, "Last, First and\r\nDoe, Jane");
// if the default citation style changes this has to be modified
String expected = " <div class=\"csl-entry\">\n" +
" <div class=\"csl-left-margin\">[1]</div><div class=\"csl-right-inline\">F. Last and J. Doe, .</div>\n" +
" </div>\n";
String citation = CitationStyleGenerator.generateCitation(entry, CitationStyle.getDefault());
assertEquals(expected, citation);
}
@Test
public void testMissingCitationStyle() {
String expected = Localization.lang("Cannot generate preview based on selected citation style.");
String citation = CitationStyleGenerator.generateCitation(new BibEntry(), "faulty citation style");
assertEquals(expected, citation);
}
@Test
public void testAsciiDocFormat() {
String expectedCitation = "[1] B. Smith, B. Jones, and J. Williams, ``Title of the test entry,'' __BibTeX Journal__, vol. 34, no. 3, pp. 45–67, Jul. 2016.\n";
BibEntry entry = TestEntry.getTestEntry();
String style = CitationStyle.getDefault().getSource();
CitationStyleOutputFormat format = CitationStyleOutputFormat.ASCII_DOC;
String actualCitation = CitationStyleGenerator.generateCitation(entry, style, format);
assertEquals(expectedCitation, actualCitation);
}
@Test
public void testHtmlFormat() {
String expectedCitation = " <div class=\"csl-entry\">\n" +
" <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>\n" +
" </div>\n";
BibEntry entry = TestEntry.getTestEntry();
String style = CitationStyle.getDefault().getSource();
CitationStyleOutputFormat format = CitationStyleOutputFormat.HTML;
String actualCitation = CitationStyleGenerator.generateCitation(entry, style, format);
assertEquals(expectedCitation, actualCitation);
}
@Test
public void testRtfFormat() {
String expectedCitation = "[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.\r\n";
BibEntry entry = TestEntry.getTestEntry();
String style = CitationStyle.getDefault().getSource();
CitationStyleOutputFormat format = CitationStyleOutputFormat.RTF;
String actualCitation = CitationStyleGenerator.generateCitation(entry, style, format);
assertEquals(expectedCitation, actualCitation);
}
@Test
public void testTextFormat() {
String expectedCitation = "[1]B. Smith, B. Jones, and J. Williams, “Title of the test entry,” BibTeX Journal, vol. 34, no. 3, pp. 45–67, Jul. 2016.\n";
BibEntry entry = TestEntry.getTestEntry();
String style = CitationStyle.getDefault().getSource();
CitationStyleOutputFormat format = CitationStyleOutputFormat.TEXT;
String actualCitation = CitationStyleGenerator.generateCitation(entry, style, format);
assertEquals(expectedCitation, actualCitation);
}
@Test
public void testXslFoFormat() {
String expectedCitation = "<fo:block id=\"Smith2016\">\n" +
" <fo:table table-layout=\"fixed\" width=\"100%\">\n" +
" <fo:table-column column-number=\"1\" column-width=\"2.5em\"/>\n" +
" <fo:table-column column-number=\"2\" column-width=\"proportional-column-width(1)\"/>\n" +
" <fo:table-body>\n" +
" <fo:table-row>\n" +
" <fo:table-cell>\n" +
" <fo:block>[1]</fo:block>\n" +
" </fo:table-cell>\n" +
" <fo:table-cell>\n" +
" <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>\n" +
" </fo:table-cell>\n" +
" </fo:table-row>\n" +
" </fo:table-body>\n" +
" </fo:table>\n" +
"</fo:block>\n";
BibEntry entry = TestEntry.getTestEntry();
String style = CitationStyle.getDefault().getSource();
CitationStyleOutputFormat format = CitationStyleOutputFormat.XSL_FO;
String actualCitation = CitationStyleGenerator.generateCitation(entry, style, format);
assertEquals(expectedCitation, actualCitation);
}
}