package org.jabref.logic.layout.format; import org.junit.Ignore; import org.junit.Test; import static org.junit.Assert.assertEquals; public class LatexToUnicodeFormatterTest { public final LatexToUnicodeFormatter formatter = new LatexToUnicodeFormatter(); @Test public void testPlainFormat() { assertEquals("aaa", formatter.format("aaa")); } @Test public void testFormatUmlaut() { assertEquals("ä", formatter.format("{\\\"{a}}")); assertEquals("Ä", formatter.format("{\\\"{A}}")); } @Test public void testFormatStripLatexCommands() { assertEquals("-", formatter.format("\\mbox{-}")); } @Test public void testFormatTextit() { // See #1464 assertEquals("\uD835\uDC61\uD835\uDC52\uD835\uDC65\uD835\uDC61", formatter.format("\\textit{text}")); } @Test public void testEscapedDollarSign() { assertEquals("$", formatter.format("\\$")); } @Test public void testEquationsSingleSymbol() { assertEquals("σ", formatter.format("$\\sigma$")); } @Test public void testEquationsMoreComplicatedFormatting() { assertEquals("A 32 mA ΣΔ-modulator", formatter.format("A 32~{mA} {$\\Sigma\\Delta$}-modulator")); } @Test public void formatExample() { assertEquals("Mönch", formatter.format(formatter.getExampleInput())); } @Test public void testChi() { // See #1464 assertEquals("χ", formatter.format("$\\chi$")); } @Test public void testSWithCaron() { // Bug #1264 assertEquals("Š", formatter.format("{\\v{S}}")); } @Test public void testIWithDiaresis() { assertEquals("ï", formatter.format("\\\"{i}")); } @Test public void testIWithDiaresisAndEscapedI() { // this might look strange in the test, but is actually a correct translation and renders identically to the above example in the UI assertEquals("ı̈", formatter.format("\\\"{\\i}")); } @Test public void testIWithDiaresisAndUnnecessaryBraces() { assertEquals("ï", formatter.format("{\\\"{i}}")); } @Test public void testUpperCaseIWithDiaresis() { assertEquals("Ï", formatter.format("\\\"{I}")); } @Test public void testPolishName() { assertEquals("Łęski", formatter.format("\\L\\k{e}ski")); } @Test public void testDoubleCombiningAccents() { assertEquals("ώ", formatter.format("$\\acute{\\omega}$")); } @Test public void testCombiningAccentsCase1() { assertEquals("ḩ", formatter.format("{\\c{h}}")); } @Ignore("This is not a standard LaTeX command. It is debatable why we should convert this.") @Test public void testCombiningAccentsCase2() { assertEquals("a͍", formatter.format("\\spreadlips{a}")); } @Test public void unknownCommandIsIgnored() { assertEquals("", formatter.format("\\aaaa")); } @Test public void unknownCommandKeepsArgument() { assertEquals("bbbb", formatter.format("\\aaaa{bbbb}")); } @Test public void unknownCommandWithEmptyArgumentIsIgnored() { assertEquals("", formatter.format("\\aaaa{}")); } @Test public void testTildeN() { assertEquals("Montaña", formatter.format("Monta\\~{n}a")); } @Test public void testAcuteNLongVersion() { assertEquals("Maliński", formatter.format("Mali\\'{n}ski")); assertEquals("MaliŃski", formatter.format("Mali\\'{N}ski")); } @Test public void testAcuteNShortVersion() { assertEquals("Maliński", formatter.format("Mali\\'nski")); assertEquals("MaliŃski", formatter.format("Mali\\'Nski")); } @Test public void testApostrophN() { assertEquals("Mali'nski", formatter.format("Mali'nski")); assertEquals("Mali'Nski", formatter.format("Mali'Nski")); } @Test public void testApostrophO() { assertEquals("L'oscillation", formatter.format("L'oscillation")); } @Test public void testApostrophC() { assertEquals("O'Connor", formatter.format("O'Connor")); } @Test public void testPreservationOfSingleUnderscore() { assertEquals("Lorem ipsum_lorem ipsum", formatter.format("Lorem ipsum_lorem ipsum")); } @Test public void testConversionOfUnderscoreWithBraces() { assertEquals("Lorem ipsum_(lorem ipsum)", formatter.format("Lorem ipsum_{lorem ipsum}")); } @Test public void testConversionOfOrdinal1st() { assertEquals("1ˢᵗ", formatter.format("1\\textsuperscript{st}")); } @Test public void testConversionOfOrdinal2nd() { assertEquals("2ⁿᵈ", formatter.format("2\\textsuperscript{nd}")); } @Test public void testConversionOfOrdinal3rd() { assertEquals("3ʳᵈ", formatter.format("3\\textsuperscript{rd}")); } @Test public void testConversionOfOrdinal4th() { assertEquals("4ᵗʰ", formatter.format("4\\textsuperscript{th}")); } @Test public void testConversionOfOrdinal9th() { assertEquals("9ᵗʰ", formatter.format("9\\textsuperscript{th}")); } }