package tests.net.sf.jabref.export.layout;
import java.io.IOException;
import java.io.StringReader;
import java.util.Collection;
import junit.framework.TestCase;
import net.sf.jabref.BibtexEntry;
import net.sf.jabref.Globals;
import net.sf.jabref.JabRefPreferences;
import net.sf.jabref.export.layout.Layout;
import net.sf.jabref.export.layout.LayoutHelper;
import net.sf.jabref.imports.BibtexParser;
import net.sf.jabref.imports.ParserResult;
public class LayoutTest extends TestCase {
/**
* Initialize Preferences.
*/
protected void setUp() throws Exception {
super.setUp();
if (Globals.prefs == null) {
Globals.prefs = JabRefPreferences.getInstance();
}
}
/**
* Return Test data.
*/
public String t1BibtexString() {
return "@article{canh05,\n"
+ " author = {This\nis\na\ntext},\n"
+ " title = {Effective work practices for floss development: A model and propositions},\n"
+ " booktitle = {Hawaii International Conference On System Sciences (HICSS)},\n"
+ " year = {2005},\n" + " owner = {oezbek},\n" + " timestamp = {2006.05.29},\n"
+ " url = {http://james.howison.name/publications.html},\n" + " abstract = {\\~{n}\n"
+ "\\~n\n" + "\\'i\n" + "\\i\n" + "\\i}\n" + "}\n";
}
public BibtexEntry t1BibtexEntry() throws IOException {
return bibtexString2BibtexEntry(t1BibtexString());
}
public static BibtexEntry bibtexString2BibtexEntry(String s) throws IOException {
ParserResult result = BibtexParser.parse(new StringReader(s));
Collection<BibtexEntry> c = result.getDatabase().getEntries();
assertEquals(1, c.size());
return c.iterator().next();
}
public String layout(String layoutFile, String entry) throws Exception {
BibtexEntry be = bibtexString2BibtexEntry(entry);
StringReader sr = new StringReader(layoutFile.replaceAll("__NEWLINE__", "\n"));
Layout layout = new LayoutHelper(sr).getLayoutFromText(Globals.FORMATTER_PACKAGE);
StringBuffer sb = new StringBuffer();
sb.append(layout.doLayout(be, null));
return sb.toString();
}
public void testLayoutBibtextype() throws Exception {
assertEquals("Other", layout("\\bibtextype", "@other{bla, author={This\nis\na\ntext}}"));
assertEquals("Article", layout("\\bibtextype", "@article{bla, author={This\nis\na\ntext}}"));
assertEquals("Misc", layout("\\bibtextype", "@misc{bla, author={This\nis\na\ntext}}"));
}
public void testHTMLChar() throws Exception {
String layoutText = layout("\\begin{author}\\format[HTMLChars]{\\author}\\end{author} ",
"@other{bla, author={This\nis\na\ntext}}");
assertEquals("This is a text ", layoutText);
layoutText = layout("\\begin{author}\\format[HTMLChars]{\\author}\\end{author}",
"@other{bla, author={This\nis\na\ntext}}");
assertEquals("This is a text", layoutText);
layoutText = layout("\\begin{author}\\format[HTMLChars]{\\author}\\end{author} ",
"@other{bla, author={This\nis\na\n\ntext}}");
assertEquals("This is a<p>text ", layoutText);
}
public void testPluginLoading() throws Exception {
String layoutText = layout("\\begin{author}\\format[NameFormatter]{\\author}\\end{author}",
"@other{bla, author={Joe Doe and Jane, Moon}}");
assertEquals("Joe Doe, Moon Jane", layoutText);
}
/**
* [ 1495181 ] Dotless i and tilde not handled in preview
*
* @throws Exception
*/
public void testLayout() throws Exception {
String layoutText = layout(
"<font face=\"arial\">\\begin{abstract}<BR><BR><b>Abstract: </b> \\format[HTMLChars]{\\abstract}\\end{abstract}</font>",
t1BibtexString());
assertEquals(
"<font face=\"arial\"><BR><BR><b>Abstract: </b> ñ ñ í ı ı</font>",
layoutText);
}
}