package tests.net.sf.jabref.labelPattern; import junit.framework.TestCase; import net.sf.jabref.BibtexEntry; import net.sf.jabref.imports.BibtexParser; import net.sf.jabref.labelPattern.LabelPatternUtil; public class LabelPatternUtilTest extends TestCase { /** * Test for https://sourceforge.net/forum/message.php?msg_id=4498555 * Test the Labelmaker and all kind of accents * Á á Ć ć É é Í í Ĺ ĺ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź */ public void testMakeLabelAndCheckLegalKeys() { BibtexEntry entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Köning}, year={2000}}"); assertEquals("Koen", net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Áöning}, year={2000}}"); assertEquals("Aoen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Éöning}, year={2000}}"); assertEquals("Eoen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Íöning}, year={2000}}"); assertEquals("Ioen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Ĺöning}, year={2000}}"); assertEquals("Loen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Ńöning}, year={2000}}"); assertEquals("Noen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Óöning}, year={2000}}"); assertEquals("Ooen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Ŕöning}, year={2000}}"); assertEquals("Roen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Śöning}, year={2000}}"); assertEquals("Soen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Úöning}, year={2000}}"); assertEquals("Uoen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Ýöning}, year={2000}}"); assertEquals("Yoen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Źöning}, year={2000}}"); assertEquals("Zoen",net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); } /** * Test the Labelmaker and with accent grave * Chars to test: "ÀÈÌÒÙ"; */ public void testMakeLabelAndCheckLegalKeysAccentGrave() { BibtexEntry entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Àöning}, year={2000}}"); assertEquals("Aoen", net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Èöning}, year={2000}}"); assertEquals("Eoen", net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Ìöning}, year={2000}}"); assertEquals("Ioen", net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Òöning}, year={2000}}"); assertEquals("Ooen", net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); entry0 = BibtexParser.singleFromString("@ARTICLE{kohn, author={Andreas Ùöning}, year={2000}}"); assertEquals("Uoen", net.sf.jabref.Util.checkLegalKey(LabelPatternUtil.makeLabel(entry0, "auth3"))); } /** * Tests if checkLegalKey replaces Non-ASCII chars. * There are quite a few chars that should be replaced. Perhaps there is a better method than the current. * @see net.sf.jabref.Util.checkLegalKey */ public void testCheckLegalKey(){ // not tested/ not in hashmap UNICODE_CHARS: // Ł ł Ő ő Ű ű Ŀ ŀ Ħ ħ Ð ð Þ þ Œ œ Æ æ Ø ø Å å Ə ə Đ đ Ů ů Ǣ ǣ ǖ ǘ ǚ ǜ //" Ǣ ǣ ǖ ǘ ǚ ǜ " + //"Đ đ Ů ů " + //"Ł ł Ő ő Ű ű Ŀ ŀ Ħ ħ Ð ð Þ þ Œ œ Æ æ Ø ø Å å Ə ə String accents = "ÀàÈèÌìÒòÙù  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û Ŵ ŵ Ŷ ŷ"; String expectedResult = "AaEeIiOoUuAaCcEeGgHhIiJjOoSsUuWwYy"; assertEquals( expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "ÄäËëÏïÖöÜüŸÿ"; expectedResult = "AeaeEeIiOeoeUeueYy"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ç ç Ģ ģ Ķ ķ Ļ ļ Ņ ņ Ŗ ŗ Ş ş Ţ ţ"; expectedResult = "CcGgKkLlNnRrSsTt"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ă ă Ĕ ĕ Ğ ğ Ĭ ĭ Ŏ ŏ Ŭ ŭ"; expectedResult = "AaEeGgIiOoUu"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ċ ċ Ė ė Ġ ġ İ ı Ż ż"; expectedResult = "CcEeGgIiZz"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ą ą Ę ę Į į Ǫ ǫ Ų ų"; expectedResult = "AaEeIiOoUu"; // O or Q? o or q? assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ā ā Ē ē Ī ī Ō ō Ū ū Ȳ ȳ"; expectedResult = "AaEeIiOoUuYy"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž"; expectedResult = "AaCcDdEeIiLlNnOoRrSsTtUuZz"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); expectedResult = "AaEeIiNnOoUuYy"; accents = "ÃãẼẽĨĩÑñÕõŨũỸỹ"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); accents = "Ḍ ḍ Ḥ ḥ Ḷ ḷ Ḹ ḹ Ṃ ṃ Ṇ ṇ Ṛ ṛ Ṝ ṝ Ṣ ṣ Ṭ ṭ"; expectedResult = "DdHhLlLlMmNnRrRrSsTt"; assertEquals(expectedResult, net.sf.jabref.Util.checkLegalKey(accents)); String totest = "À à È è Ì ì Ò ò Ù ù  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û Ŵ ŵ Ŷ ŷ Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ " + "à ã Ẽ ẽ Ĩ ĩ Ñ ñ Õ õ Ũ ũ Ỹ ỹ Ç ç Ģ ģ Ķ ķ Ļ ļ Ņ ņ Ŗ ŗ Ş ş Ţ ţ" + " Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž " + "Ā ā Ē ē Ī ī Ō ō Ū ū Ȳ ȳ" + "Ă ă Ĕ ĕ Ğ ğ Ĭ ĭ Ŏ ŏ Ŭ ŭ " + "Ċ ċ Ė ė Ġ ġ İ ı Ż ż Ą ą Ę ę Į į Ǫ ǫ Ų ų " + "Ḍ ḍ Ḥ ḥ Ḷ ḷ Ḹ ḹ Ṃ ṃ Ṇ ṇ Ṛ ṛ Ṝ ṝ Ṣ ṣ Ṭ ṭ " ; String expectedResults = "AaEeIiOoUuAaCcEeGgHhIiJjOoSsUuWwYyAeaeEeIiOeoeUeueYy" + "AaEeIiNnOoUuYyCcGgKkLlNnRrSsTt" + "AaCcDdEeIiLlNnOoRrSsTtUuZz" + "AaEeIiOoUuYy" + "AaEeGgIiOoUu" + "CcEeGgIiZzAaEeIiOoUu" + "DdHhLlLlMmNnRrRrSsTt"; assertEquals(expectedResults, net.sf.jabref.Util.checkLegalKey(totest)); } public void testFirstAuthor() { assertEquals( "Newton", LabelPatternUtil .firstAuthor("I. Newton and J. Maxwell and A. Einstein and N. Bohr and Harry Unknown")); assertEquals("Newton", LabelPatternUtil.firstAuthor("I. Newton")); // https://sourceforge.net/forum/message.php?msg_id=4498555 assertEquals("K{\\\"o}ning", LabelPatternUtil .firstAuthor("K{\\\"o}ning")); assertEquals("", LabelPatternUtil.firstAuthor("")); try { LabelPatternUtil.firstAuthor(null); fail(); } catch (NullPointerException e) { } } public void testAuthIniN() { assertEquals( "NMEB", LabelPatternUtil .authIniN( "I. Newton and J. Maxwell and A. Einstein and N. Bohr and Harry Unknown", 4)); assertEquals("NMEB", LabelPatternUtil.authIniN( "I. Newton and J. Maxwell and A. Einstein and N. Bohr", 4)); assertEquals("NeME", LabelPatternUtil.authIniN( "I. Newton and J. Maxwell and A. Einstein", 4)); assertEquals("NeMa", LabelPatternUtil.authIniN( "I. Newton and J. Maxwell", 4)); assertEquals("Newt", LabelPatternUtil.authIniN("I. Newton", 4)); assertEquals("", ""); assertEquals("N", LabelPatternUtil.authIniN("I. Newton", 1)); assertEquals("", LabelPatternUtil.authIniN("I. Newton", 0)); assertEquals("", LabelPatternUtil.authIniN("I. Newton", -1)); assertEquals("Newton", LabelPatternUtil.authIniN("I. Newton", 6)); assertEquals("Newton", LabelPatternUtil.authIniN("I. Newton", 7)); try { LabelPatternUtil.authIniN(null, 3); fail(); } catch (NullPointerException e) { } } public void testFirstPage() { assertEquals("7", LabelPatternUtil.firstPage("7--27")); assertEquals("27", LabelPatternUtil.firstPage("--27")); assertEquals("", LabelPatternUtil.firstPage("")); assertEquals("42", LabelPatternUtil.firstPage("42--111")); assertEquals("7", LabelPatternUtil.firstPage("7,41,73--97")); assertEquals("7", LabelPatternUtil.firstPage("41,7,73--97")); assertEquals("43", LabelPatternUtil.firstPage("43+")); try { LabelPatternUtil.firstPage(null); fail(); } catch (NullPointerException e) { } } public void testLastPage() { assertEquals("27", LabelPatternUtil.lastPage("7--27")); assertEquals("27", LabelPatternUtil.lastPage("--27")); assertEquals("", LabelPatternUtil.lastPage("")); assertEquals("111", LabelPatternUtil.lastPage("42--111")); assertEquals("97", LabelPatternUtil.lastPage("7,41,73--97")); assertEquals("97", LabelPatternUtil.lastPage("7,41,97--73")); assertEquals("43", LabelPatternUtil.lastPage("43+")); try { LabelPatternUtil.lastPage(null); fail(); } catch (NullPointerException e) { } } }