package org.jabref.logic.bst;
import org.junit.Assert;
import org.junit.Test;
/**
* How to create these test using Bibtex:
* <p/>
* Execute this charWidth.bst with the following charWidth.aux:
* <p/>
* <p/>
* <code>
* ENTRY{}{}{}
* FUNCTION{test}
* {
* "i" width$ int.to.str$ write$ newline$
* "0I~ " width$ int.to.str$ write$ newline$
* "Hi Hi " width$ int.to.str$ write$ newline$
* "{\oe}" width$ int.to.str$ write$ newline$
* "Hi {\oe }Hi " width$ int.to.str$ write$ newline$
* }
* READ
* EXECUTE{test}
* </code>
* <p/>
* <code>
* \bibstyle{charWidth}
* \citation{canh05}
* \bibdata{test}
* \bibcite{canh05}{CMM{$^{+}$}05}
* </code>
*/
public class BibtexWidthTest {
private void assertBibtexWidth(final int i, final String string) {
Assert.assertEquals(i, BibtexWidth.width(string));
}
@Test
public void testWidth() {
assertBibtexWidth(278, "i");
assertBibtexWidth(1639, "0I~ ");
assertBibtexWidth(2612, "Hi Hi ");
assertBibtexWidth(778, "{\\oe}");
assertBibtexWidth(3390, "Hi {\\oe }Hi ");
assertBibtexWidth(444, "{\\'e}");
assertBibtexWidth(19762, "Ulrich {\\\"{U}}nderwood and Ned {\\~N}et and Paul {\\={P}}ot");
assertBibtexWidth(7861, "{\\'{E}}douard Masterly");
assertBibtexWidth(30514, "Jonathan Meyer and Charles Louis Xavier Joseph de la Vall{\\'e}e Poussin");
}
@Test
public void testGetCharWidth() {
Assert.assertEquals(500, BibtexWidth.getCharWidth('0'));
Assert.assertEquals(361, BibtexWidth.getCharWidth('I'));
Assert.assertEquals(500, BibtexWidth.getCharWidth('~'));
Assert.assertEquals(500, BibtexWidth.getCharWidth('}'));
Assert.assertEquals(278, BibtexWidth.getCharWidth(' '));
}
}