OSDN Git Service

remove isTerminated() from StringUtils.
authorOlyutorskii <olyutorskii@users.osdn.me>
Tue, 25 Feb 2020 01:51:59 +0000 (10:51 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Tue, 25 Feb 2020 01:51:59 +0000 (10:51 +0900)
src/main/java/jp/sfjp/jindolf/data/Talk.java
src/main/java/jp/sfjp/jindolf/util/StringUtils.java
src/test/java/jp/sfjp/jindolf/data/TalkTest.java [new file with mode: 0644]
src/test/java/jp/sfjp/jindolf/util/StringUtilsTest.java

index fe8ff46..8725ef2 100644 (file)
@@ -7,7 +7,9 @@
 
 package jp.sfjp.jindolf.data;
 
-import jp.sfjp.jindolf.util.StringUtils;
+import java.util.EnumMap;
+import java.util.Map;
+import java.util.Objects;
 import jp.sourceforge.jindolf.corelib.TalkType;
 
 /**
@@ -15,7 +17,18 @@ import jp.sourceforge.jindolf.corelib.TalkType;
  */
 public class Talk implements Topic{
 
-    private static final String MEINICHI_LAST = "!\u0020今日がお前の命日だ!";
+    private static final String MEINICHI_LAST =
+            "!\u0020今日がお前の命日だ!";
+
+    private static final Map<TalkType, String> COLOR_MAP;
+
+    static{
+        COLOR_MAP = new EnumMap<>(TalkType.class);
+        COLOR_MAP.put(TalkType.PUBLIC,   "白");
+        COLOR_MAP.put(TalkType.PRIVATE,  "灰");
+        COLOR_MAP.put(TalkType.WOLFONLY, "赤");
+        COLOR_MAP.put(TalkType.GRAVE,    "青");
+    }
 
 
     private final Period homePeriod;
@@ -82,19 +95,39 @@ public class Talk implements Topic{
      * @return 色名
      */
     public static String encodeColorName(TalkType type){
-        String result;
+        Objects.requireNonNull(type);
+        String result = COLOR_MAP.get(type);
+        return result;
+    }
 
-        switch(type){
-        case PUBLIC:   result = "白"; break;
-        case PRIVATE:  result = "灰"; break;
-        case WOLFONLY: result = "赤"; break;
-        case GRAVE:    result = "青"; break;
-        default:
-            assert false;
-            return null;
+    /**
+     * ある文字列の末尾が別の文字列に一致するか判定する。
+     *
+     * @param target 判定対象
+     * @param term 末尾文字
+     * @return 一致すればtrue
+     * @throws java.lang.NullPointerException 引数がnull
+     * @see String#endsWith(String)
+     */
+    static boolean isTerminated(CharSequence target,
+                                CharSequence term)
+            throws NullPointerException{
+        Objects.requireNonNull(target);
+        Objects.requireNonNull(term);
+
+        int targetLength = target.length();
+        int termLength   = term  .length();
+
+        int offset = targetLength - termLength;
+        if(offset < 0) return false;
+
+        for(int pos = 0; pos < termLength; pos++){
+            char targetch = target.charAt(offset + pos);
+            char termch   = term  .charAt(0      + pos);
+            if(targetch != termch) return false;
         }
 
-        return result;
+        return true;
     }
 
     /**
@@ -288,7 +321,7 @@ public class Talk implements Topic{
         if( ! isWolf) return false;
 
         boolean meinichida;
-        meinichida = StringUtils.isTerminated(getDialog(), MEINICHI_LAST);
+        meinichida = isTerminated(getDialog(), MEINICHI_LAST);
         if( ! meinichida) return false;
 
         return true;
@@ -296,22 +329,37 @@ public class Talk implements Topic{
 
     /**
      * {@inheritDoc}
-     * 会話のString表現を返す。
+     *
+     * <p>会話のString表現を返す。
      * 実体参照やHTMLタグも含まれる。
+     *
      * @return 会話のString表現
      */
     @Override
     public String toString(){
-        StringBuilder result = new StringBuilder();
-
-        result.append(this.avatar.getFullName());
-
-        if     (this.talkType == TalkType.PUBLIC)   result.append(" says ");
-        else if(this.talkType == TalkType.PRIVATE)  result.append(" think ");
-        else if(this.talkType == TalkType.WOLFONLY) result.append(" howl ");
-        else if(this.talkType == TalkType.GRAVE)    result.append(" groan ");
+        String fullName = this.avatar.getFullName();
+
+        String verb;
+        switch (this.talkType) {
+        case PUBLIC:
+            verb=" says ";
+            break;
+        case PRIVATE:
+            verb=" think ";
+            break;
+        case WOLFONLY:
+            verb=" howl ";
+            break;
+        case GRAVE:
+            verb=" groan ";
+            break;
+        default:
+            assert false;
+            return null;
+        }
 
-        result.append(this.dialog);
+        StringBuilder result = new StringBuilder();
+        result.append(fullName).append(verb).append(this.dialog);
 
         return result.toString();
     }
index 692369f..120a9b6 100644 (file)
@@ -94,34 +94,6 @@ public final class StringUtils{
     }
 
     /**
-     * ある文字列の末尾が別の文字列に一致するか判定する。
-     * @param target 判定対象
-     * @param term 末尾文字
-     * @return 一致すればtrue
-     * @throws java.lang.NullPointerException 引数がnull
-     * @see String#endsWith(String)
-     */
-    public static boolean isTerminated(CharSequence target,
-                                         CharSequence term)
-            throws NullPointerException{
-        if(target == null || term == null) throw new NullPointerException();
-
-        int targetLength = target.length();
-        int termLength   = term  .length();
-
-        int offset = targetLength - termLength;
-        if(offset < 0) return false;
-
-        for(int pos = 0; pos < termLength; pos++){
-            char targetch = target.charAt(offset + pos);
-            char termch   = term  .charAt(0      + pos);
-            if(targetch != termch) return false;
-        }
-
-        return true;
-    }
-
-    /**
      * サブシーケンス同士を比較する。
      * @param seq1 サブシーケンス1
      * @param start1 開始インデックス1
diff --git a/src/test/java/jp/sfjp/jindolf/data/TalkTest.java b/src/test/java/jp/sfjp/jindolf/data/TalkTest.java
new file mode 100644 (file)
index 0000000..103fb99
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ */
+
+package jp.sfjp.jindolf.data;
+
+import jp.sourceforge.jindolf.corelib.TalkType;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ */
+public class TalkTest {
+
+    public TalkTest() {
+    }
+
+    @BeforeClass
+    public static void setUpClass() {
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+    }
+
+    @Before
+    public void setUp() {
+    }
+
+    @After
+    public void tearDown() {
+    }
+
+    /**
+     * Test of encodeColorName method, of class Talk.
+     */
+    @Test
+    public void testEncodeColorName() {
+        System.out.println("encodeColorName");
+
+        assertEquals("白", Talk.encodeColorName(TalkType.PUBLIC));
+        assertEquals("灰", Talk.encodeColorName(TalkType.PRIVATE));
+        assertEquals("赤", Talk.encodeColorName(TalkType.WOLFONLY));
+        assertEquals("青", Talk.encodeColorName(TalkType.GRAVE));
+
+        try{
+            Talk.encodeColorName(null);
+            fail();
+        }catch(NullPointerException e){
+            assert true;
+        }
+
+        return;
+    }
+
+    /**
+     * Test of isTerminated method, of class Talk.
+     */
+    @Test
+    public void testIsTerminated() {
+        System.out.println("isTerminated");
+
+        try{
+            Talk.isTerminated(null, null);
+            fail();
+        }catch(NullPointerException e){
+            assert true;
+        }
+
+        try{
+            Talk.isTerminated("A", null);
+            fail();
+        }catch(NullPointerException e){
+            assert true;
+        }
+
+        try{
+            Talk.isTerminated(null, "X");
+            fail();
+        }catch(NullPointerException e){
+            assert true;
+        }
+
+        assertTrue(Talk.isTerminated("ABCXYZ", "XYZ"));
+        assertTrue(Talk.isTerminated("ABCXYZ", "ABCXYZ"));
+        assertTrue(Talk.isTerminated("ABCXYZ", ""));
+        assertTrue(Talk.isTerminated("", ""));
+
+        assertFalse(Talk.isTerminated("ABCXYZ", "PQR"));
+        assertFalse(Talk.isTerminated("ABCXYZ", "1ABCXYZ"));
+        assertFalse(Talk.isTerminated("ABC", "ABCXYZ"));
+        assertFalse(Talk.isTerminated("", "XYZ"));
+
+        return;
+    }
+
+}
index c8b70fe..92c82ed 100644 (file)
@@ -187,42 +187,6 @@ public class StringUtilsTest {
     }
 
     /**
-     * Test of isTerminated method, of class StringUtils.
-     */
-    @Test
-    public void testIsTerminated(){
-        System.out.println("isTerminated");
-
-        try{
-            StringUtils.isTerminated(null, null);
-            fail();
-        }catch(NullPointerException e){
-        }
-
-        try{
-            StringUtils.isTerminated("A", null);
-            fail();
-        }catch(NullPointerException e){
-        }
-
-        try{
-            StringUtils.isTerminated(null, "X");
-            fail();
-        }catch(NullPointerException e){
-        }
-
-        assertTrue(StringUtils.isTerminated("ABCXYZ", "XYZ"));
-        assertTrue(StringUtils.isTerminated("ABCXYZ", ""));
-        assertTrue(StringUtils.isTerminated("", ""));
-
-        assertFalse(StringUtils.isTerminated("ABCXYZ", "PQR"));
-        assertFalse(StringUtils.isTerminated("ABC", "ABCXYZ"));
-        assertFalse(StringUtils.isTerminated("", "XYZ"));
-
-        return;
-    }
-
-    /**
      * Test of compareSubSequence method, of class StringUtils.
      */
     @Test