PageRenderTime 34ms CodeModel.GetById 5ms RepoModel.GetById 0ms app.codeStats 0ms

/commons-codec-1.6-src/src/test/java/org/apache/commons/codec/language/bm/BeiderMorseEncoderTest.java

#
Java | 205 lines | 140 code | 26 blank | 39 comment | 10 complexity | 6386b35d1df71732dd727a015e40b2bd MD5 | raw file
Possible License(s): Apache-2.0
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. */
  17. package org.apache.commons.codec.language.bm;
  18. import static org.junit.Assert.assertEquals;
  19. import static org.junit.Assert.assertFalse;
  20. import org.apache.commons.codec.EncoderException;
  21. import org.apache.commons.codec.StringEncoder;
  22. import org.apache.commons.codec.StringEncoderAbstractTest;
  23. import org.junit.Assert;
  24. import org.junit.Test;
  25. /**
  26. * Tests BeiderMorseEncoder.
  27. *
  28. * @author Apache Software Foundation
  29. * @since 1.6
  30. */
  31. public class BeiderMorseEncoderTest extends StringEncoderAbstractTest {
  32. private static final char[] TEST_CHARS = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'o', 'u' };
  33. private void assertNotEmpty(BeiderMorseEncoder bmpm, final String value) throws EncoderException {
  34. Assert.assertFalse(value, bmpm.encode(value).equals(""));
  35. }
  36. private BeiderMorseEncoder createGenericApproxEncoder() {
  37. BeiderMorseEncoder encoder = new BeiderMorseEncoder();
  38. encoder.setNameType(NameType.GENERIC);
  39. encoder.setRuleType(RuleType.APPROX);
  40. return encoder;
  41. }
  42. @Override
  43. protected StringEncoder createStringEncoder() {
  44. return new BeiderMorseEncoder();
  45. }
  46. /**
  47. * Tests we do not blow up.
  48. *
  49. * @throws EncoderException
  50. */
  51. @Test
  52. public void testAllChars() throws EncoderException {
  53. BeiderMorseEncoder bmpm = createGenericApproxEncoder();
  54. for (char c = Character.MIN_VALUE; c < Character.MAX_VALUE; c++) {
  55. bmpm.encode("" + c);
  56. }
  57. }
  58. @Test
  59. public void testAsciiEncodeNotEmpty1Letter() throws EncoderException {
  60. BeiderMorseEncoder bmpm = createGenericApproxEncoder();
  61. for (char c = 'a'; c <= 'z'; c++) {
  62. final String value = "" + c;
  63. final String valueU = value.toUpperCase();
  64. assertNotEmpty(bmpm, value);
  65. assertNotEmpty(bmpm, valueU);
  66. }
  67. }
  68. @Test
  69. public void testAsciiEncodeNotEmpty2Letters() throws EncoderException {
  70. BeiderMorseEncoder bmpm = createGenericApproxEncoder();
  71. for (char c1 = 'a'; c1 <= 'z'; c1++) {
  72. for (char c2 = 'a'; c2 <= 'z'; c2++) {
  73. final String value = new String(new char[] { c1, c2 });
  74. final String valueU = value.toUpperCase();
  75. assertNotEmpty(bmpm, value);
  76. assertNotEmpty(bmpm, valueU);
  77. }
  78. }
  79. }
  80. @Test
  81. public void testEncodeAtzNotEmpty() throws EncoderException {
  82. BeiderMorseEncoder bmpm = createGenericApproxEncoder();
  83. //String[] names = { "??cz", "??tz", "Ign??cz", "Ign??tz", "Ign??c" };
  84. String[] names = { "\u00e1cz", "\u00e1tz", "Ign\u00e1cz", "Ign\u00e1tz", "Ign\u00e1c" };
  85. for (String name : names) {
  86. assertNotEmpty(bmpm, name);
  87. }
  88. }
  89. /**
  90. * Tests https://issues.apache.org/jira/browse/CODEC-125?focusedCommentId=13071566&page=com.atlassian.jira.plugin.system.issuetabpanels:
  91. * comment-tabpanel#comment-13071566
  92. *
  93. * @throws EncoderException
  94. */
  95. @Test
  96. public void testEncodeGna() throws EncoderException {
  97. BeiderMorseEncoder bmpm = createGenericApproxEncoder();
  98. bmpm.encode("gna");
  99. }
  100. @Test(expected = IllegalArgumentException.class)
  101. public void testInvalidLangIllegalArgumentException() {
  102. Rule.getInstance(NameType.GENERIC, RuleType.APPROX, "noSuchLanguage");
  103. }
  104. @Test(expected = IllegalStateException.class)
  105. public void testInvalidLangIllegalStateException() {
  106. Lang.loadFromResource("thisIsAMadeUpResourceName", Languages.getInstance(NameType.GENERIC));
  107. }
  108. @Test(expected = IllegalArgumentException.class)
  109. public void testInvalidLanguageIllegalArgumentException() {
  110. Languages.getInstance("thereIsNoSuchLanguage");
  111. }
  112. @Test(timeout = 10000L)
  113. public void testLongestEnglishSurname() throws EncoderException {
  114. BeiderMorseEncoder bmpm = createGenericApproxEncoder();
  115. bmpm.encode("MacGhilleseatheanaich");
  116. }
  117. @Test(expected = IndexOutOfBoundsException.class)
  118. public void testNegativeIndexForRuleMatchIndexOutOfBoundsException() {
  119. Rule r = new Rule("a", "", "", new Rule.Phoneme("", Languages.ANY_LANGUAGE));
  120. r.patternAndContextMatches("bob", -1);
  121. }
  122. @Test
  123. public void testSetConcat() {
  124. BeiderMorseEncoder bmpm = new BeiderMorseEncoder();
  125. bmpm.setConcat(false);
  126. assertFalse("Should be able to set concat to false", bmpm.isConcat());
  127. }
  128. @Test
  129. public void testSetNameTypeAsh() {
  130. BeiderMorseEncoder bmpm = new BeiderMorseEncoder();
  131. bmpm.setNameType(NameType.ASHKENAZI);
  132. assertEquals("Name type should have been set to ash", NameType.ASHKENAZI, bmpm.getNameType());
  133. }
  134. @Test
  135. public void testSetRuleTypeExact() {
  136. BeiderMorseEncoder bmpm = new BeiderMorseEncoder();
  137. bmpm.setRuleType(RuleType.EXACT);
  138. assertEquals("Rule type should have been set to exact", RuleType.EXACT, bmpm.getRuleType());
  139. }
  140. @Test(expected = IllegalArgumentException.class)
  141. public void testSetRuleTypeToRulesIllegalArgumentException() {
  142. BeiderMorseEncoder bmpm = new BeiderMorseEncoder();
  143. bmpm.setRuleType(RuleType.RULES);
  144. }
  145. /**
  146. * (Un)luckily, the worse performing test because of the data in {@link #TEST_CHARS}
  147. *
  148. * @throws EncoderException
  149. */
  150. @Test(/* timeout = 20000L */)
  151. public void testSpeedCheck() throws EncoderException {
  152. BeiderMorseEncoder bmpm = this.createGenericApproxEncoder();
  153. StringBuffer stringBuffer = new StringBuffer();
  154. stringBuffer.append(TEST_CHARS[0]);
  155. for (int i = 0, j = 1; i < 40; i++, j++) {
  156. if (j == TEST_CHARS.length) {
  157. j = 0;
  158. }
  159. bmpm.encode(stringBuffer.toString());
  160. stringBuffer.append(TEST_CHARS[j]);
  161. }
  162. }
  163. @Test
  164. public void testSpeedCheck2() throws EncoderException {
  165. BeiderMorseEncoder bmpm = this.createGenericApproxEncoder();
  166. String phrase = "ItstheendoftheworldasweknowitandIfeelfine";
  167. for (int i = 1; i <= phrase.length(); i++) {
  168. bmpm.encode(phrase.subSequence(0, i));
  169. }
  170. }
  171. @Test
  172. public void testSpeedCheck3() throws EncoderException {
  173. BeiderMorseEncoder bmpm = this.createGenericApproxEncoder();
  174. String phrase = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
  175. for (int i = 1; i <= phrase.length(); i++) {
  176. bmpm.encode(phrase.subSequence(0, i));
  177. }
  178. }
  179. }