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;
/**
*/
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;
* @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;
}
/**
if( ! isWolf) return false;
boolean meinichida;
- meinichida = StringUtils.isTerminated(getDialog(), MEINICHI_LAST);
+ meinichida = isTerminated(getDialog(), MEINICHI_LAST);
if( ! meinichida) return false;
return true;
/**
* {@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();
}
}
/**
- * ある文字列の末尾が別の文字列に一致するか判定する。
- * @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
--- /dev/null
+/*
+ */
+
+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;
+ }
+
+}
}
/**
- * 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