--- /dev/null
+[patterns]
+
+**.txt = native
+
+**.java = native
+**.properties = LF
+
+**.xml = LF
+**.xsd = LF
+
+**.css = LF
+**.html = LF
+**.png = BIN
-[UTF-8 Japanese]\r
-\r
-\r
-JinCore 変更履歴\r
-\r
-\r
-1.206.4 (2011-05-10)\r
- ・リファクタリングのみ、仕様変更無し。\r
- ・Mavenプラグイン更新。\r
-\r
-1.206.2 (2010-12-02)\r
- ・CHECKOUTイベントの追加。\r
-\r
-1.205.2 (2010-11-29)\r
- ・SHORTMEMBERイベントの追加。\r
-\r
-1.204.2 (2010-08-26)\r
- ・G国定員増(Max16名)に対処。\r
-\r
-1.203.4 (2010-08-26)\r
- ・MavenとMercurialによる開発体制に移行。\r
-\r
-1.203.2 (2010-03-16)\r
- ・VANISH(失踪)イベントの追加。\r
-\r
-1.202.2 (2010-03-15)\r
- ・F国亡国に対応。\r
-\r
-1.201.2 (2010-03-14)\r
- ・G国定義の追加。\r
- ・G国で追加されたシステムイベントを追加。\r
-\r
-1.110.2 (2009-10-22)\r
- ・DisclosureTypeの追加。\r
- ・各種XML名定義を追加。\r
-\r
-1.109.2 (2009-09-10)\r
- ・過去ログ提供サーバの移動に対処。\r
-\r
-1.108.2 (2009-09-09)\r
- ・システムイベントとイベントファミリの対応付け。\r
-\r
-1.107.2 (2009-08-29)\r
- ・ビルド環境の整備。\r
- ・ユニットテストの整備。\r
- ・各種ソースコード診断に対処。\r
- ・Javadocコメントの大幅な改善。\r
- ・XMLスキーマを302系に合わせてXML関連の識別子整理。\r
-\r
-1.106.2 (2009-08-09)\r
- ・パッケージ名を修正。\r
-\r
-1.105.4 (2009-08-08)\r
- ・マニフェストの不備を修正。\r
-\r
-1.105.2 (2009-08-08)\r
- ・初期化時の不要なDNS問い合わせを抑止。\r
- ・カスタムビルドファイルの提供。\r
- ・XMLスキーマを301系に変更。\r
-\r
-1.104.2 (2009-08-04)\r
- ・XML関連の実装を分離。\r
- ・役職から陣営を求める処理を追加\r
- ・F国欠番情報追加\r
- ・ハム溶けのケースを追加\r
-\r
-1.103.2 (2009-06-02)\r
- ・初回リリース。\r
- ・Jindolfプロジェクトより分離独立。\r
-\r
---- EOF ---\r
+[UTF-8 Japanese]
+
+
+JinCore 変更履歴
+
+
+1.206.4 (2011-05-10)
+ ・リファクタリングのみ、仕様変更無し。
+ ・Mavenプラグイン更新。
+
+1.206.2 (2010-12-02)
+ ・CHECKOUTイベントの追加。
+
+1.205.2 (2010-11-29)
+ ・SHORTMEMBERイベントの追加。
+
+1.204.2 (2010-08-26)
+ ・G国定員増(Max16名)に対処。
+
+1.203.4 (2010-08-26)
+ ・MavenとMercurialによる開発体制に移行。
+
+1.203.2 (2010-03-16)
+ ・VANISH(失踪)イベントの追加。
+
+1.202.2 (2010-03-15)
+ ・F国亡国に対応。
+
+1.201.2 (2010-03-14)
+ ・G国定義の追加。
+ ・G国で追加されたシステムイベントを追加。
+
+1.110.2 (2009-10-22)
+ ・DisclosureTypeの追加。
+ ・各種XML名定義を追加。
+
+1.109.2 (2009-09-10)
+ ・過去ログ提供サーバの移動に対処。
+
+1.108.2 (2009-09-09)
+ ・システムイベントとイベントファミリの対応付け。
+
+1.107.2 (2009-08-29)
+ ・ビルド環境の整備。
+ ・ユニットテストの整備。
+ ・各種ソースコード診断に対処。
+ ・Javadocコメントの大幅な改善。
+ ・XMLスキーマを302系に合わせてXML関連の識別子整理。
+
+1.106.2 (2009-08-09)
+ ・パッケージ名を修正。
+
+1.105.4 (2009-08-08)
+ ・マニフェストの不備を修正。
+
+1.105.2 (2009-08-08)
+ ・初期化時の不要なDNS問い合わせを抑止。
+ ・カスタムビルドファイルの提供。
+ ・XMLスキーマを301系に変更。
+
+1.104.2 (2009-08-04)
+ ・XML関連の実装を分離。
+ ・役職から陣営を求める処理を追加
+ ・F国欠番情報追加
+ ・ハム溶けのケースを追加
+
+1.103.2 (2009-06-02)
+ ・初回リリース。
+ ・Jindolfプロジェクトより分離独立。
+
+--- EOF ---
-[UTF-8 Japanese]\r
-\r
-The MIT License\r
-\r
-\r
-Copyright(c) 2009 olyutorskii\r
-\r
-\r
-Permission is hereby granted, free of charge, to any person obtaining a copy\r
-of this software and associated documentation files (the "Software"), to deal\r
-in the Software without restriction, including without limitation the rights\r
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r
-copies of the Software, and to permit persons to whom the Software is\r
-furnished to do so, subject to the following conditions:\r
-\r
-The above copyright notice and this permission notice shall be included in\r
-all copies or substantial portions of the Software.\r
-\r
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r
-THE SOFTWARE.\r
-\r
-\r
-JinCore作者自身からのコメント:\r
-\r
- ※ 少なくともこのソフトウェアの実行、複製、配布、改造は自由です。\r
- ※ 少なくともこのソフトウェアは無保証です。\r
-\r
---- EOF ---\r
+[UTF-8 Japanese]
+
+The MIT License
+
+
+Copyright(c) 2009 olyutorskii
+
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+JinCore作者自身からのコメント:
+
+ ※ 少なくともこのソフトウェアの実行、複製、配布、改造は自由です。
+ ※ 少なくともこのソフトウェアは無保証です。
+
+--- EOF ---
-[UTF-8 Japanese]\r
-\r
- JinCoreライブラリ\r
- README\r
-\r
- Copyright(c) 2009 olyutorskii\r
-\r
-\r
-=== JinCoreとは ===\r
-\r
-\r
- JinCoreライブラリは、Jindolf プロジェクトのコア共通部分を構成する\r
-Javaパッケージです。\r
- このアーカイブは、JinCoreライブラリの開発資産を、ある時点で凍結したものです。\r
-\r
- Jindolfは、CGIゲーム「人狼BBS」の専用クライアント開発プロジェクトです。\r
- JinCoreは、Jindolf以外の人狼BBSクライアント製作者向けに、\r
-Jindolfの機能の一部を提供することを目的に発足した、派生プロジェクトです。\r
-\r
-※ このアーカイブにはJindolfの実行バイナリは含まれていません。\r
- Jindolfを動かしたい方は、jindolfで始まり拡張子が*.jarであるファイルを\r
- 別途入手してください。\r
-※ 人狼BBSのURLは [ http://homepage2.nifty.com/ninjinia/ ] まで\r
-※ 人狼BBSを主催するninjin氏は、JinCoreの製作に一切関与していません。\r
- JinCoreに関する問い合わせををninjin氏へ投げかけないように!約束だよ!\r
-\r
-\r
-=== ソースコードに関して ===\r
-\r
- - JinCoreはJava言語(JLS3)で記述されたプログラムです。\r
- - JinCoreは他のプログラムに組み込まれて利用されるライブラリです。\r
- JARファイルによるライブラリ提供や、他プロジェクトのソースツリーへの\r
- マージの形で利用される事を想定しています。\r
- - JinCoreはJRE1.5に準拠したJava実行環境で利用できるように作られています。\r
- 原則として、JRE1.5に準拠した実行系であれば、プラットフォームを選びません。\r
-\r
-\r
-=== アーカイブ管理体制 ===\r
-\r
- このアーカイブは、UTF-8による開発環境を前提として構成されています。\r
- このアーカイブの原本となる開発資産は、\r
- http://hg.sourceforge.jp/view/jindolf/JinCore\r
- を上位に持つMercurialリポジトリで管理されています。\r
-\r
-\r
-=== 開発プロジェクト運営元 ===\r
-\r
- http://sourceforge.jp/projects/jindolf/devel/ まで。\r
-\r
-\r
-=== ディレクトリ内訳構成 ===\r
-\r
-基本的にはMaven2のmaven-archetype-quickstart構成に準じます。\r
-\r
-./README.txt\r
- あなたが今見てるこれ。\r
-\r
-./CHANGELOG.txt\r
- 変更履歴。\r
-\r
-./LICENSE.txt\r
- ライセンスに関して。\r
-\r
-./pom.xml\r
- Maven2用プロジェクト構成定義ファイル。\r
-\r
-./build.xml\r
- Ant用追加タスク。\r
-\r
-./src/main/java/\r
- Javaのソースコード。\r
-\r
-./src/main/resources/\r
- プロパティファイルなどの各種リソース。\r
-\r
-./src/test/java/\r
- JUnit 4.* 用のユニットテストコード。\r
-\r
-./src/main/config/checks.xml\r
- Checkstyle用configファイル。\r
-\r
-./src/main/config/pmdrules.xml\r
- PMD用ルール定義ファイル。\r
-\r
-./src/main/assembly/descriptor.xml\r
- ソースアーカイブ構成定義ファイル。\r
-\r
-\r
---- EOF ---\r
+[UTF-8 Japanese]
+
+ JinCoreライブラリ
+ README
+
+ Copyright(c) 2009 olyutorskii
+
+
+=== JinCoreとは ===
+
+
+ JinCoreライブラリは、Jindolf プロジェクトのコア共通部分を構成する
+Javaパッケージです。
+ このアーカイブは、JinCoreライブラリの開発資産を、ある時点で凍結したものです。
+
+ Jindolfは、CGIゲーム「人狼BBS」の専用クライアント開発プロジェクトです。
+ JinCoreは、Jindolf以外の人狼BBSクライアント製作者向けに、
+Jindolfの機能の一部を提供することを目的に発足した、派生プロジェクトです。
+
+※ このアーカイブにはJindolfの実行バイナリは含まれていません。
+ Jindolfを動かしたい方は、jindolfで始まり拡張子が*.jarであるファイルを
+ 別途入手してください。
+※ 人狼BBSのURLは [ http://homepage2.nifty.com/ninjinia/ ] まで
+※ 人狼BBSを主催するninjin氏は、JinCoreの製作に一切関与していません。
+ JinCoreに関する問い合わせををninjin氏へ投げかけないように!約束だよ!
+
+
+=== ソースコードに関して ===
+
+ - JinCoreはJava言語(JLS3)で記述されたプログラムです。
+ - JinCoreは他のプログラムに組み込まれて利用されるライブラリです。
+ JARファイルによるライブラリ提供や、他プロジェクトのソースツリーへの
+ マージの形で利用される事を想定しています。
+ - JinCoreはJRE1.5に準拠したJava実行環境で利用できるように作られています。
+ 原則として、JRE1.5に準拠した実行系であれば、プラットフォームを選びません。
+
+
+=== アーカイブ管理体制 ===
+
+ このアーカイブは、UTF-8による開発環境を前提として構成されています。
+ このアーカイブの原本となる開発資産は、
+ http://hg.sourceforge.jp/view/jindolf/JinCore
+ を上位に持つMercurialリポジトリで管理されています。
+
+
+=== 開発プロジェクト運営元 ===
+
+ http://sourceforge.jp/projects/jindolf/devel/ まで。
+
+
+=== ディレクトリ内訳構成 ===
+
+基本的にはMaven2のmaven-archetype-quickstart構成に準じます。
+
+./README.txt
+ あなたが今見てるこれ。
+
+./CHANGELOG.txt
+ 変更履歴。
+
+./LICENSE.txt
+ ライセンスに関して。
+
+./pom.xml
+ Maven2用プロジェクト構成定義ファイル。
+
+./build.xml
+ Ant用追加タスク。
+
+./src/main/java/
+ Javaのソースコード。
+
+./src/main/resources/
+ プロパティファイルなどの各種リソース。
+
+./src/test/java/
+ JUnit 4.* 用のユニットテストコード。
+
+./src/main/config/checks.xml
+ Checkstyle用configファイル。
+
+./src/main/config/pmdrules.xml
+ PMD用ルール定義ファイル。
+
+./src/main/assembly/descriptor.xml
+ ソースアーカイブ構成定義ファイル。
+
+
+--- EOF ---
-/*\r
- * Date Utilities\r
- * (ISO8601)\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2011 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.util.Calendar;\r
-import java.util.GregorianCalendar;\r
-import java.util.TimeZone;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-/**\r
- * 日付ユーティリティ。\r
- */\r
-final class DateUtils{\r
-\r
- private static final Pattern ISO8601_PATTERN;\r
- private static final String REG_PLUS = "\\+";\r
- private static final String REG_HYPHEN = "\\-";\r
-\r
- static{\r
- String year = "([0-9][0-9][0-9][0-9])";\r
- String month = "([0-1][0-9])";\r
- String day = "([0-3][0-9])";\r
- String hour = "([0-2][0-9])";\r
- String minute = "([0-5][0-9])";\r
- String second = "([0-6][0-9])";\r
- String timezone =\r
- "("+\r
- "["+REG_PLUS+REG_HYPHEN+"][0-2][0-9]"+\r
- "(?:"+ ":?[0-5][0-9]" +")?"+\r
- "|"+\r
- "Z"+\r
- ")";\r
- String iso8601Regex =\r
- year +REG_HYPHEN+ month +REG_HYPHEN+ day\r
- +"T"+\r
- hour +":"+ minute +":"+ second\r
- +timezone;\r
-\r
- ISO8601_PATTERN = Pattern.compile(iso8601Regex);\r
- }\r
-\r
-\r
- /**\r
- * 隠しコンストラクタ。\r
- */\r
- private DateUtils(){\r
- assert false;\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * ISO8601形式の日付をエポック秒msに変換する。\r
- * JRE1.6 の javax.xml.bind.DatatypeConverter 代替品\r
- * @param date ISO8601形式の日付文字列\r
- * @return エポック秒ms\r
- * @throws IllegalArgumentException 形式が変な場合。\r
- */\r
- public static long parseISO8601(CharSequence date)\r
- throws IllegalArgumentException {\r
- Matcher matcher = ISO8601_PATTERN.matcher(date);\r
- if( ! matcher.matches() ){\r
- throw new IllegalArgumentException(date.toString());\r
- }\r
-\r
- int gid = 1;\r
- String yearStr = matcher.group(gid++);\r
- String monthStr = matcher.group(gid++);\r
- String dayStr = matcher.group(gid++);\r
- String hourStr = matcher.group(gid++);\r
- String minuteStr = matcher.group(gid++);\r
- String secondStr = matcher.group(gid++);\r
- String tzString = matcher.group(gid++);\r
-\r
- int year = Integer.parseInt(yearStr);\r
- int month = Integer.parseInt(monthStr);\r
- int day = Integer.parseInt(dayStr);\r
- int hour = Integer.parseInt(hourStr);\r
- int minute = Integer.parseInt(minuteStr);\r
- int second = Integer.parseInt(secondStr);\r
-\r
- String tzID = "GMT";\r
- if( tzString.compareToIgnoreCase("Z") == 0 ) tzID += "+00:00";\r
- else tzID += tzString;\r
- TimeZone timezone = TimeZone.getTimeZone(tzID);\r
-\r
- Calendar calendar = new GregorianCalendar();\r
- calendar.clear();\r
- calendar.setTimeZone(timezone);\r
- calendar.set(year, month - 1, day, hour, minute, second);\r
-\r
- long result = calendar.getTimeInMillis();\r
-\r
- return result;\r
- }\r
-\r
-}\r
+/*
+ * Date Utilities
+ * (ISO8601)
+ *
+ * License : The MIT License
+ * Copyright(c) 2011 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 日付ユーティリティ。
+ */
+final class DateUtils{
+
+ private static final Pattern ISO8601_PATTERN;
+ private static final String REG_PLUS = "\\+";
+ private static final String REG_HYPHEN = "\\-";
+
+ static{
+ String year = "([0-9][0-9][0-9][0-9])";
+ String month = "([0-1][0-9])";
+ String day = "([0-3][0-9])";
+ String hour = "([0-2][0-9])";
+ String minute = "([0-5][0-9])";
+ String second = "([0-6][0-9])";
+ String timezone =
+ "("+
+ "["+REG_PLUS+REG_HYPHEN+"][0-2][0-9]"+
+ "(?:"+ ":?[0-5][0-9]" +")?"+
+ "|"+
+ "Z"+
+ ")";
+ String iso8601Regex =
+ year +REG_HYPHEN+ month +REG_HYPHEN+ day
+ +"T"+
+ hour +":"+ minute +":"+ second
+ +timezone;
+
+ ISO8601_PATTERN = Pattern.compile(iso8601Regex);
+ }
+
+
+ /**
+ * 隠しコンストラクタ。
+ */
+ private DateUtils(){
+ assert false;
+ return;
+ }
+
+
+ /**
+ * ISO8601形式の日付をエポック秒msに変換する。
+ * JRE1.6 の javax.xml.bind.DatatypeConverter 代替品
+ * @param date ISO8601形式の日付文字列
+ * @return エポック秒ms
+ * @throws IllegalArgumentException 形式が変な場合。
+ */
+ public static long parseISO8601(CharSequence date)
+ throws IllegalArgumentException {
+ Matcher matcher = ISO8601_PATTERN.matcher(date);
+ if( ! matcher.matches() ){
+ throw new IllegalArgumentException(date.toString());
+ }
+
+ int gid = 1;
+ String yearStr = matcher.group(gid++);
+ String monthStr = matcher.group(gid++);
+ String dayStr = matcher.group(gid++);
+ String hourStr = matcher.group(gid++);
+ String minuteStr = matcher.group(gid++);
+ String secondStr = matcher.group(gid++);
+ String tzString = matcher.group(gid++);
+
+ int year = Integer.parseInt(yearStr);
+ int month = Integer.parseInt(monthStr);
+ int day = Integer.parseInt(dayStr);
+ int hour = Integer.parseInt(hourStr);
+ int minute = Integer.parseInt(minuteStr);
+ int second = Integer.parseInt(secondStr);
+
+ String tzID = "GMT";
+ if( tzString.compareToIgnoreCase("Z") == 0 ) tzID += "+00:00";
+ else tzID += tzString;
+ TimeZone timezone = TimeZone.getTimeZone(tzID);
+
+ Calendar calendar = new GregorianCalendar();
+ calendar.clear();
+ calendar.setTimeZone(timezone);
+ calendar.set(year, month - 1, day, hour, minute, second);
+
+ long result = calendar.getTimeInMillis();
+
+ return result;
+ }
+
+}
-/*\r
- * Destiny\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * プレイヤーの死因・運命。\r
- */\r
-public enum Destiny{\r
-\r
- /** 生存。 */\r
- ALIVE("生存"),\r
- /** 突然死。 */\r
- SUDDENDEATH("突然死"),\r
- /** 処刑死。 */\r
- EXECUTED("処刑死"),\r
- /** 襲撃死。 */\r
- EATEN("襲撃死"),\r
- /** ハム溶け。 */\r
- DISSOLVE("ハム溶け"),\r
- ;\r
-\r
- private final String message;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param message 死因メッセージ\r
- */\r
- private Destiny(String message){\r
- this.message = message.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * 死因メッセージを取得する。\r
- * @return 死因文字列\r
- */\r
- public String getMessage(){\r
- return this.message;\r
- }\r
-\r
-}\r
+/*
+ * Destiny
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * プレイヤーの死因・運命。
+ */
+public enum Destiny{
+
+ /** 生存。 */
+ ALIVE("生存"),
+ /** 突然死。 */
+ SUDDENDEATH("突然死"),
+ /** 処刑死。 */
+ EXECUTED("処刑死"),
+ /** 襲撃死。 */
+ EATEN("襲撃死"),
+ /** ハム溶け。 */
+ DISSOLVE("ハム溶け"),
+ ;
+
+ private final String message;
+
+ /**
+ * コンストラクタ。
+ * @param message 死因メッセージ
+ */
+ private Destiny(String message){
+ this.message = message.intern();
+ return;
+ }
+
+ /**
+ * 死因メッセージを取得する。
+ * @return 死因文字列
+ */
+ public String getMessage(){
+ return this.message;
+ }
+
+}
-/*\r
- * disclosure type\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * 各Periodの発言開示状況。\r
- */\r
-public enum DisclosureType{\r
-\r
- /** プレイ真っ最中の最新日。 */\r
- HOT("hot"),\r
- /** 未公開発言があり得る。 */\r
- UNCOMPLETE("uncomplete"),\r
- /** 全発言は完全に公開された。 */\r
- COMPLETE("complete"),\r
- ;\r
-\r
- private final String xmlName;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param xmlName XML用シンボル\r
- */\r
- private DisclosureType(String xmlName){\r
- this.xmlName = xmlName.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
-}\r
+/*
+ * disclosure type
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * 各Periodの発言開示状況。
+ */
+public enum DisclosureType{
+
+ /** プレイ真っ最中の最新日。 */
+ HOT("hot"),
+ /** 未公開発言があり得る。 */
+ UNCOMPLETE("uncomplete"),
+ /** 全発言は完全に公開された。 */
+ COMPLETE("complete"),
+ ;
+
+ private final String xmlName;
+
+ /**
+ * コンストラクタ。
+ * @param xmlName XML用シンボル
+ */
+ private DisclosureType(String xmlName){
+ this.xmlName = xmlName.intern();
+ return;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+}
-/*\r
- * DOM Utilities\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2011 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.net.URI;\r
-import java.net.URISyntaxException;\r
-import java.net.URL;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import javax.xml.parsers.DocumentBuilder;\r
-import org.w3c.dom.Attr;\r
-import org.w3c.dom.Document;\r
-import org.w3c.dom.Element;\r
-import org.w3c.dom.Node;\r
-import org.w3c.dom.NodeList;\r
-import org.xml.sax.SAXException;\r
-\r
-/**\r
- * DOM ユーティリティ。\r
- */\r
-final class DomUtils{\r
-\r
- /**\r
- * 隠しコンストラクタ。\r
- */\r
- private DomUtils(){\r
- assert false;\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * DOM要素のリストをXMLリソースからロードする。\r
- * @param builder DOMビルダ\r
- * @param url URL\r
- * @param childName 要素名\r
- * @return DOM要素のリスト\r
- * @throws IOException 入力エラー\r
- * @throws SAXException XMLパースエラー\r
- */\r
- static List<Element> loadElemList(\r
- DocumentBuilder builder,\r
- URL url,\r
- String childName )\r
- throws IOException, SAXException{\r
- Element root = loadElement(builder, url);\r
- List<Element> result = getChildElemList(root, childName);\r
- return result;\r
- }\r
-\r
- /**\r
- * root要素をXMLリソースからロードする。\r
- * @param builder DOMビルダ\r
- * @param url URL\r
- * @return root要素\r
- * @throws IOException 入力エラー\r
- * @throws SAXException XMLパースエラー\r
- */\r
- private static Element loadElement(DocumentBuilder builder, URL url)\r
- throws IOException, SAXException{\r
- InputStream istream = url.openStream();\r
-\r
- Document document;\r
- try{\r
- document = builder.parse(istream);\r
- }finally{\r
- istream.close();\r
- }\r
-\r
- Element root = document.getDocumentElement();\r
-\r
- return root;\r
- }\r
-\r
- /**\r
- * root要素から子要素のリストを得る。\r
- * @param root root要素\r
- * @param childName 子要素のタグ名\r
- * @return 子要素のリスト\r
- */\r
- private static List<Element> getChildElemList(\r
- Element root, String childName){\r
- NodeList nodeList = root.getElementsByTagName(childName);\r
- int childNum = nodeList.getLength();\r
-\r
- List<Element> result = new ArrayList<Element>(childNum);\r
-\r
- for(int index = 0; index < childNum; index++){\r
- Node node = nodeList.item(index);\r
- Element element = (Element) node;\r
- result.add(element);\r
- }\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * XMLタグの必須属性値を得る。\r
- * @param elem XML要素\r
- * @param attrName 属性名\r
- * @return 属性値\r
- * @throws SAXException 必須属性が無かった。\r
- */\r
- static String attrRequired(Element elem, String attrName)\r
- throws SAXException{\r
- Attr attr = elem.getAttributeNode(attrName);\r
- if(attr == null){\r
- throw new SAXException("no attribute[" + attrName + "]");\r
- }\r
- String result = attr.getValue();\r
- if(result == null){\r
- throw new SAXException("no value[" + attrName + "]");\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * XMLタグの属性値を得る。\r
- * @param elem XML要素\r
- * @param attrName 属性名\r
- * @return 属性値。なければnull\r
- */\r
- static String attrValue(Element elem, String attrName){\r
- Attr attr = elem.getAttributeNode(attrName);\r
- if(attr == null) return null;\r
-\r
- String result = attr.getValue();\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * XML属性値からURIを展開する。\r
- * @param elem XML国定義要素\r
- * @param attrName 属性名\r
- * @return URI\r
- * @throws SAXException 属性が未定義もしくはURI形式を満たさない。\r
- */\r
- static URI attrToUri(Element elem, String attrName)\r
- throws SAXException{\r
- Attr attr = elem.getAttributeNode(attrName);\r
- if(attr == null) return null;\r
-\r
- String uriText = attr.getValue();\r
- if(uriText == null) return null;\r
-\r
- URI uri;\r
- try{\r
- uri = new URI(uriText).normalize();\r
- }catch(URISyntaxException e){\r
- throw new SAXException("illegal URI " + uriText, e);\r
- }\r
-\r
- return uri;\r
- }\r
-\r
-}\r
+/*
+ * DOM Utilities
+ *
+ * License : The MIT License
+ * Copyright(c) 2011 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.parsers.DocumentBuilder;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+/**
+ * DOM ユーティリティ。
+ */
+final class DomUtils{
+
+ /**
+ * 隠しコンストラクタ。
+ */
+ private DomUtils(){
+ assert false;
+ return;
+ }
+
+
+ /**
+ * DOM要素のリストをXMLリソースからロードする。
+ * @param builder DOMビルダ
+ * @param url URL
+ * @param childName 要素名
+ * @return DOM要素のリスト
+ * @throws IOException 入力エラー
+ * @throws SAXException XMLパースエラー
+ */
+ static List<Element> loadElemList(
+ DocumentBuilder builder,
+ URL url,
+ String childName )
+ throws IOException, SAXException{
+ Element root = loadElement(builder, url);
+ List<Element> result = getChildElemList(root, childName);
+ return result;
+ }
+
+ /**
+ * root要素をXMLリソースからロードする。
+ * @param builder DOMビルダ
+ * @param url URL
+ * @return root要素
+ * @throws IOException 入力エラー
+ * @throws SAXException XMLパースエラー
+ */
+ private static Element loadElement(DocumentBuilder builder, URL url)
+ throws IOException, SAXException{
+ InputStream istream = url.openStream();
+
+ Document document;
+ try{
+ document = builder.parse(istream);
+ }finally{
+ istream.close();
+ }
+
+ Element root = document.getDocumentElement();
+
+ return root;
+ }
+
+ /**
+ * root要素から子要素のリストを得る。
+ * @param root root要素
+ * @param childName 子要素のタグ名
+ * @return 子要素のリスト
+ */
+ private static List<Element> getChildElemList(
+ Element root, String childName){
+ NodeList nodeList = root.getElementsByTagName(childName);
+ int childNum = nodeList.getLength();
+
+ List<Element> result = new ArrayList<Element>(childNum);
+
+ for(int index = 0; index < childNum; index++){
+ Node node = nodeList.item(index);
+ Element element = (Element) node;
+ result.add(element);
+ }
+
+ return result;
+ }
+
+ /**
+ * XMLタグの必須属性値を得る。
+ * @param elem XML要素
+ * @param attrName 属性名
+ * @return 属性値
+ * @throws SAXException 必須属性が無かった。
+ */
+ static String attrRequired(Element elem, String attrName)
+ throws SAXException{
+ Attr attr = elem.getAttributeNode(attrName);
+ if(attr == null){
+ throw new SAXException("no attribute[" + attrName + "]");
+ }
+ String result = attr.getValue();
+ if(result == null){
+ throw new SAXException("no value[" + attrName + "]");
+ }
+ return result;
+ }
+
+ /**
+ * XMLタグの属性値を得る。
+ * @param elem XML要素
+ * @param attrName 属性名
+ * @return 属性値。なければnull
+ */
+ static String attrValue(Element elem, String attrName){
+ Attr attr = elem.getAttributeNode(attrName);
+ if(attr == null) return null;
+
+ String result = attr.getValue();
+
+ return result;
+ }
+
+ /**
+ * XML属性値からURIを展開する。
+ * @param elem XML国定義要素
+ * @param attrName 属性名
+ * @return URI
+ * @throws SAXException 属性が未定義もしくはURI形式を満たさない。
+ */
+ static URI attrToUri(Element elem, String attrName)
+ throws SAXException{
+ Attr attr = elem.getAttributeNode(attrName);
+ if(attr == null) return null;
+
+ String uriText = attr.getValue();
+ if(uriText == null) return null;
+
+ URI uri;
+ try{
+ uri = new URI(uriText).normalize();
+ }catch(URISyntaxException e){
+ throw new SAXException("illegal URI " + uriText, e);
+ }
+
+ return uri;
+ }
+
+}
-/*\r
- * family of system-event-message\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * システムイベントメッセージのおおまかな種別。\r
- */\r
-public enum EventFamily{\r
-\r
- /** <div class="announce">メッセージに対応。 */\r
- ANNOUNCE("announce"),\r
- /** <div class="order">メッセージに対応。 */\r
- ORDER("order"),\r
- /** <div class="extra">メッセージに対応。 */\r
- EXTRA("extra"),\r
- ;\r
-\r
- private final String divClass;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param divClass divタグclass名\r
- */\r
- private EventFamily(String divClass){\r
- this.divClass = divClass;\r
- return;\r
- }\r
-\r
- /**\r
- * 由来となった<div>要素のclass属性値を得る。\r
- * @return class属性値\r
- */\r
- public String getDivClass(){\r
- return this.divClass;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.divClass;\r
- }\r
-\r
-}\r
+/*
+ * family of system-event-message
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * システムイベントメッセージのおおまかな種別。
+ */
+public enum EventFamily{
+
+ /** <div class="announce">メッセージに対応。 */
+ ANNOUNCE("announce"),
+ /** <div class="order">メッセージに対応。 */
+ ORDER("order"),
+ /** <div class="extra">メッセージに対応。 */
+ EXTRA("extra"),
+ ;
+
+ private final String divClass;
+
+ /**
+ * コンストラクタ。
+ * @param divClass divタグclass名
+ */
+ private EventFamily(String divClass){
+ this.divClass = divClass;
+ return;
+ }
+
+ /**
+ * 由来となった<div>要素のclass属性値を得る。
+ * @return class属性値
+ */
+ public String getDivClass(){
+ return this.divClass;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.divClass;
+ }
+
+}
-/*\r
- * Roles in game\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.util.Comparator;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-/**\r
- * 役職。\r
- */\r
-public enum GameRole{\r
-\r
- /** 村人。 */\r
- INNOCENT("村人", '村', "innocent", Team.VILLAGE),\r
- /** 人狼。 */\r
- WOLF("人狼", '狼', "wolf", Team.WOLF),\r
- /** 占い師。 */\r
- SEER("占い師", '占', "seer", Team.VILLAGE),\r
- /** 霊能者。 */\r
- SHAMAN("霊能者", '霊', "shaman", Team.VILLAGE),\r
- /** 狂人。 */\r
- MADMAN("狂人", '狂', "madman", Team.WOLF),\r
- /** 狩人。 */\r
- HUNTER("狩人", '狩', "hunter", Team.VILLAGE),\r
- /** 共有者。 */\r
- FRATER("共有者", '共', "frater", Team.VILLAGE),\r
- /** ハムスター人間。 */\r
- HAMSTER("ハムスター人間", '公', "hamster", Team.HAMSTER),\r
- ;\r
-\r
- private static final Comparator<GameRole> BALANCE_COMPARATOR =\r
- new PowerBalanceComparator();\r
-\r
- private static final Pattern ROLE_PATTERN;\r
-\r
- static{\r
- StringBuilder roleRegex = new StringBuilder();\r
- for(GameRole role : values()){\r
- if(roleRegex.length() > 0){\r
- roleRegex.append('|');\r
- }\r
- roleRegex.append('(')\r
- .append(Pattern.quote(role.getRoleName()))\r
- .append(')');\r
- }\r
- ROLE_PATTERN = Pattern.compile(roleRegex.toString());\r
- }\r
-\r
-\r
- private final String roleName;\r
- private final char shortName;\r
- private final String xmlName;\r
- private final Team team;\r
-\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param roleName 役職名\r
- * @param shortName 短縮名\r
- * @param xmlName XML用シンボル\r
- * @param team 陣営\r
- */\r
- private GameRole(String roleName,\r
- char shortName,\r
- String xmlName,\r
- Team team ){\r
- this.roleName = roleName.intern();\r
- this.shortName = shortName;\r
- this.xmlName = xmlName.intern();\r
- this.team = team;\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * 与えられたマッチャ先頭が定義済みRole名に一致しないか調べる。\r
- * @param matcher マッチャ\r
- * @return 一致した役職。どれにも一致しなければnull。\r
- */\r
- public static GameRole lookingAtRole(Matcher matcher){\r
- matcher.usePattern(ROLE_PATTERN);\r
-\r
- if( ! matcher.lookingAt() ) return null;\r
- int groupCt = matcher.groupCount();\r
- for(int group = 1; group <= groupCt; group++){\r
- if(matcher.start(group) >= 0){\r
- GameRole role = values()[group - 1];\r
- return role;\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
- /**\r
- * 勢力バランス表記用Comparatorを得る。\r
- * 「村共占霊狩公狂狼」の順で役職を一意に順序づける。\r
- * @return Comparator\r
- */\r
- public static Comparator<GameRole> getPowerBalanceComparator(){\r
- return BALANCE_COMPARATOR;\r
- }\r
-\r
-\r
- /**\r
- * 役職名を返す。\r
- * @return 役職名\r
- */\r
- public String getRoleName(){\r
- return this.roleName;\r
- }\r
-\r
- /**\r
- * 一文字に短縮された役職名を得る。\r
- * @return 短縮された役職名\r
- */\r
- public char getShortName(){\r
- return this.shortName;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
- /**\r
- * 各役職のチームを得る。\r
- * @return チーム\r
- */\r
- public Team getTeam(){\r
- return this.team;\r
- }\r
-\r
- /**\r
- * 勢力バランス表記用Comparator。\r
- * 「村共占霊狩公狂狼」の順で役職を一意に順序づける。\r
- */\r
- private static final class PowerBalanceComparator\r
- implements Comparator<GameRole> {\r
-\r
- /**\r
- * コンストラクタ。\r
- */\r
- private PowerBalanceComparator(){\r
- super();\r
- return;\r
- }\r
-\r
- /**\r
- * 役職に順序を割り当てる。\r
- * 村人陣営のほうが狼陣営より小さい値を返す。\r
- * @param role 役職\r
- * @return 強さ\r
- */\r
- private static int getPowerValue(GameRole role){\r
- int power;\r
-\r
- if(role == null) return Integer.MIN_VALUE;\r
-\r
- switch(role){\r
- case INNOCENT: power = -50; break;\r
- case FRATER: power = -40; break;\r
- case SEER: power = -30; break;\r
- case SHAMAN: power = -20; break;\r
- case HUNTER: power = -10; break;\r
- case HAMSTER: power = 0; break;\r
- case MADMAN: power = +10; break;\r
- case WOLF: power = +20; break;\r
- default:\r
- assert false;\r
- throw new AssertionError();\r
- }\r
-\r
- return power;\r
- }\r
-\r
- /**\r
- * {@inheritDoc}\r
- * @param role1 {@inheritDoc}\r
- * @param role2 {@inheritDoc}\r
- * @return {@inheritDoc}\r
- */\r
- @Override\r
- public int compare(GameRole role1, GameRole role2){\r
- int power1 = getPowerValue(role1);\r
- int power2 = getPowerValue(role2);\r
- return power1 - power2;\r
- }\r
-\r
- }\r
-\r
-}\r
+/*
+ * Roles in game
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.util.Comparator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 役職。
+ */
+public enum GameRole{
+
+ /** 村人。 */
+ INNOCENT("村人", '村', "innocent", Team.VILLAGE),
+ /** 人狼。 */
+ WOLF("人狼", '狼', "wolf", Team.WOLF),
+ /** 占い師。 */
+ SEER("占い師", '占', "seer", Team.VILLAGE),
+ /** 霊能者。 */
+ SHAMAN("霊能者", '霊', "shaman", Team.VILLAGE),
+ /** 狂人。 */
+ MADMAN("狂人", '狂', "madman", Team.WOLF),
+ /** 狩人。 */
+ HUNTER("狩人", '狩', "hunter", Team.VILLAGE),
+ /** 共有者。 */
+ FRATER("共有者", '共', "frater", Team.VILLAGE),
+ /** ハムスター人間。 */
+ HAMSTER("ハムスター人間", '公', "hamster", Team.HAMSTER),
+ ;
+
+ private static final Comparator<GameRole> BALANCE_COMPARATOR =
+ new PowerBalanceComparator();
+
+ private static final Pattern ROLE_PATTERN;
+
+ static{
+ StringBuilder roleRegex = new StringBuilder();
+ for(GameRole role : values()){
+ if(roleRegex.length() > 0){
+ roleRegex.append('|');
+ }
+ roleRegex.append('(')
+ .append(Pattern.quote(role.getRoleName()))
+ .append(')');
+ }
+ ROLE_PATTERN = Pattern.compile(roleRegex.toString());
+ }
+
+
+ private final String roleName;
+ private final char shortName;
+ private final String xmlName;
+ private final Team team;
+
+
+ /**
+ * コンストラクタ。
+ * @param roleName 役職名
+ * @param shortName 短縮名
+ * @param xmlName XML用シンボル
+ * @param team 陣営
+ */
+ private GameRole(String roleName,
+ char shortName,
+ String xmlName,
+ Team team ){
+ this.roleName = roleName.intern();
+ this.shortName = shortName;
+ this.xmlName = xmlName.intern();
+ this.team = team;
+ return;
+ }
+
+
+ /**
+ * 与えられたマッチャ先頭が定義済みRole名に一致しないか調べる。
+ * @param matcher マッチャ
+ * @return 一致した役職。どれにも一致しなければnull。
+ */
+ public static GameRole lookingAtRole(Matcher matcher){
+ matcher.usePattern(ROLE_PATTERN);
+
+ if( ! matcher.lookingAt() ) return null;
+ int groupCt = matcher.groupCount();
+ for(int group = 1; group <= groupCt; group++){
+ if(matcher.start(group) >= 0){
+ GameRole role = values()[group - 1];
+ return role;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * 勢力バランス表記用Comparatorを得る。
+ * 「村共占霊狩公狂狼」の順で役職を一意に順序づける。
+ * @return Comparator
+ */
+ public static Comparator<GameRole> getPowerBalanceComparator(){
+ return BALANCE_COMPARATOR;
+ }
+
+
+ /**
+ * 役職名を返す。
+ * @return 役職名
+ */
+ public String getRoleName(){
+ return this.roleName;
+ }
+
+ /**
+ * 一文字に短縮された役職名を得る。
+ * @return 短縮された役職名
+ */
+ public char getShortName(){
+ return this.shortName;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+ /**
+ * 各役職のチームを得る。
+ * @return チーム
+ */
+ public Team getTeam(){
+ return this.team;
+ }
+
+ /**
+ * 勢力バランス表記用Comparator。
+ * 「村共占霊狩公狂狼」の順で役職を一意に順序づける。
+ */
+ private static final class PowerBalanceComparator
+ implements Comparator<GameRole> {
+
+ /**
+ * コンストラクタ。
+ */
+ private PowerBalanceComparator(){
+ super();
+ return;
+ }
+
+ /**
+ * 役職に順序を割り当てる。
+ * 村人陣営のほうが狼陣営より小さい値を返す。
+ * @param role 役職
+ * @return 強さ
+ */
+ private static int getPowerValue(GameRole role){
+ int power;
+
+ if(role == null) return Integer.MIN_VALUE;
+
+ switch(role){
+ case INNOCENT: power = -50; break;
+ case FRATER: power = -40; break;
+ case SEER: power = -30; break;
+ case SHAMAN: power = -20; break;
+ case HUNTER: power = -10; break;
+ case HAMSTER: power = 0; break;
+ case MADMAN: power = +10; break;
+ case WOLF: power = +20; break;
+ default:
+ assert false;
+ throw new AssertionError();
+ }
+
+ return power;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @param role1 {@inheritDoc}
+ * @param role2 {@inheritDoc}
+ * @return {@inheritDoc}
+ */
+ @Override
+ public int compare(GameRole role1, GameRole role2){
+ int power1 = getPowerValue(role1);
+ int power2 = getPowerValue(role2);
+ return power1 - power2;
+ }
+
+ }
+
+}
-/*\r
- * land information definition\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.IOException;\r
-import java.net.URI;\r
-import java.nio.charset.Charset;\r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.Collections;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-import java.util.Locale;\r
-import java.util.Map;\r
-import java.util.Set;\r
-import java.util.SortedSet;\r
-import java.util.TimeZone;\r
-import java.util.TreeSet;\r
-import javax.xml.parsers.DocumentBuilder;\r
-import org.w3c.dom.Element;\r
-import org.xml.sax.SAXException;\r
-\r
-/**\r
- * 人狼BBSの各国設定。\r
- */\r
-public final class LandDef{\r
-\r
- /** 各種イメージの相対なベースURI。 */\r
- public static final String IMAGE_RELPATH = "./plugin_wolf/img/";\r
-\r
- /** 顔アイコンURIのテンプレート。 */\r
- public static final String DEF_FACE_URI_TMPL =\r
- IMAGE_RELPATH + "face{0,number,#00}.jpg";\r
- /** デカキャラURIのテンプレート。 */\r
- public static final String DEF_BODY_URI_TMPL =\r
- IMAGE_RELPATH + "body{0,number,#00}.jpg";\r
-\r
- /** 墓小アイコンのデフォルト相対URI。 */\r
- public static final URI DEF_TOMBFACE_URI =\r
- URI.create(IMAGE_RELPATH + "face99.jpg").normalize();\r
- /** 墓大アイコンのデフォルト相対URI。 */\r
- public static final URI DEF_TOMBBODY_URI =\r
- URI.create(IMAGE_RELPATH + "body99.jpg").normalize();\r
-\r
- private static final Map<String, LandState> STATE_MAP;\r
-\r
-\r
- static{\r
- STATE_MAP = new HashMap<String, LandState>();\r
- STATE_MAP.put("closed", LandState.CLOSED);\r
- STATE_MAP.put("historical", LandState.HISTORICAL);\r
- STATE_MAP.put("active", LandState.ACTIVE);\r
- }\r
-\r
-\r
- private String landName;\r
- private String landId;\r
- private String formalName;\r
- private String landPrefix;\r
- private LandState landState;\r
- private int minMembers;\r
- private int maxMembers;\r
- private URI webURI;\r
- private URI cgiURI;\r
- private URI tombFaceIconURI;\r
- private URI tombBodyIconURI;\r
- private String faceURITemplate;\r
- private String bodyURITemplate;\r
- private Locale locale;\r
- private Charset encoding;\r
- private TimeZone timeZone;\r
- private long startDateTime;\r
- private long endDateTime;\r
- private String description;\r
- private String contactInfo;\r
- private int[] invalidVid;\r
-\r
-\r
- /**\r
- * コンストラクタ。\r
- */\r
- private LandDef(){\r
- super();\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * ハイフンで区切られた整数範囲をパースする。\r
- * 「1-3」なら1,2,3を結果に格納する。\r
- * @param intSet 格納先Set\r
- * @param seq パース対象\r
- * @throws IllegalArgumentException 形式が変\r
- */\r
- private static void parseIntPair(Set<Integer> intSet, CharSequence seq)\r
- throws IllegalArgumentException{\r
- String token = seq.toString();\r
-\r
- String[] ivalues = token.split("-");\r
- assert ivalues.length >= 1;\r
- if(ivalues.length >= 3){\r
- throw new IllegalArgumentException(token);\r
- }\r
-\r
- int ivalStart;\r
- int ivalEnd;\r
- try{\r
- ivalStart = Integer.parseInt(ivalues[0]);\r
- if(ivalues.length >= 2) ivalEnd = Integer.parseInt(ivalues[1]);\r
- else ivalEnd = ivalStart;\r
- }catch(NumberFormatException e){\r
- throw new IllegalArgumentException(token, e);\r
- }\r
-\r
- if(ivalStart > ivalEnd){\r
- int dummy = ivalStart;\r
- ivalStart = ivalEnd;\r
- ivalEnd = dummy;\r
- assert ivalStart <= ivalEnd;\r
- }\r
-\r
- for(int ival = ivalStart; ival <= ivalEnd; ival++){\r
- intSet.add(ival);\r
- }\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * コンマとハイフンで区切られた整数の羅列をパースする。\r
- * 「10,23-25」なら10,23,24,25を結果に返す。\r
- * @param seq パース対象文字列\r
- * @return ソートされたIntegerのList\r
- * @throws IllegalArgumentException 形式が変。\r
- */\r
- public static SortedSet<Integer> parseIntList(CharSequence seq)\r
- throws IllegalArgumentException{\r
- SortedSet<Integer> result = new TreeSet<Integer>();\r
-\r
- if(seq.length() <= 0 ) return result;\r
- String str = seq.toString();\r
- str = str.replaceAll("\\p{Blank}", "");\r
-\r
- String[] tokens = str.split(",");\r
- assert tokens.length >= 1;\r
- for(String token : tokens){\r
- if(token.length() <= 0) continue;\r
- if( token.charAt(0) == '-'\r
- || token.endsWith("-") ){\r
- throw new IllegalArgumentException(token);\r
- }\r
- parseIntPair(result, token);\r
- }\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * 国設定のListを返す。\r
- * @param builder DOMビルダ\r
- * @return List 国設定リスト\r
- * @throws IOException IOエラー\r
- * @throws SAXException パースエラー\r
- */\r
- public static List<LandDef> buildLandDefList(DocumentBuilder builder)\r
- throws IOException,\r
- SAXException{\r
- List<Element> elemList = DomUtils.loadElemList(\r
- builder, XmlResource.I_URL_LANDDEF, "landDef");\r
-\r
- List<LandDef> result = new ArrayList<LandDef>(elemList.size());\r
-\r
- for(Element elem : elemList){\r
- LandDef landDef = buildLandDef(elem);\r
- result.add(landDef);\r
- }\r
-\r
- result = Collections.unmodifiableList(result);\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * ハイフンをデリミタに持つロケール指定文字列からLocaleを生成する。\r
- * @param attrVal ロケール指定文字列\r
- * @return Locale\r
- */\r
- public static Locale buildLocale(CharSequence attrVal){\r
- String lang = "";\r
- String country = "";\r
- String variant = "";\r
-\r
- String[] lcstr = attrVal.toString().split("-", 3);\r
- if(lcstr.length >= 1) lang = lcstr[0];\r
- if(lcstr.length >= 2) country = lcstr[1];\r
- if(lcstr.length >= 3) variant = lcstr[2];\r
-\r
- Locale locale = new Locale(lang, country, variant);\r
-\r
- return locale;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義の識別子情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillIdInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- String landName = DomUtils.attrRequired(elem, "landName");\r
- String landId = DomUtils.attrRequired(elem, "landId");\r
- String formalName = DomUtils.attrRequired(elem, "formalName");\r
- String landPrefix = DomUtils.attrRequired(elem, "landPrefix");\r
-\r
- if( landName .length() <= 0\r
- || landId .length() <= 0\r
- || formalName.length() <= 0 ){\r
- throw new SAXException("no identification info");\r
- }\r
-\r
- result.landName = landName;\r
- result.landId = landId;\r
- result.formalName = formalName;\r
- result.landPrefix = landPrefix;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義の定員情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillMemberInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- String minStr = DomUtils.attrRequired(elem, "minMembers");\r
- String maxStr = DomUtils.attrRequired(elem, "maxMembers");\r
-\r
- int minMembers = Integer.parseInt(minStr);\r
- int maxMembers = Integer.parseInt(maxStr);\r
-\r
- if( minMembers <= 0\r
- || minMembers > maxMembers ){\r
- throw new SAXException("invalid member limitation");\r
- }\r
-\r
- result.minMembers = minMembers;\r
- result.maxMembers = maxMembers;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義のURI情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillUriInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- URI webURI = DomUtils.attrToUri(elem, "webURI");\r
- URI cgiURI = DomUtils.attrToUri(elem, "cgiURI");\r
- if(webURI == null || cgiURI == null){\r
- throw new SAXException("no URI");\r
- }\r
- if( ! webURI.isAbsolute()\r
- || ! cgiURI.isAbsolute() ){\r
- throw new SAXException("relative URI");\r
- }\r
-\r
- URI tombFaceIconURI = DomUtils.attrToUri(elem, "tombFaceIconURI");\r
- URI tombBodyIconURI = DomUtils.attrToUri(elem, "tombBodyIconURI");\r
- if(tombFaceIconURI == null) tombFaceIconURI = DEF_TOMBFACE_URI;\r
- if(tombBodyIconURI == null) tombBodyIconURI = DEF_TOMBBODY_URI;\r
-\r
- result.webURI = webURI;\r
- result.cgiURI = cgiURI;\r
- result.tombFaceIconURI = tombFaceIconURI;\r
- result.tombBodyIconURI = tombBodyIconURI;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義のURIテンプレート情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillTemplateInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- String faceURITemplate;\r
- String bodyURITemplate;\r
-\r
- faceURITemplate = DomUtils.attrValue(elem, "faceIconURITemplate");\r
- bodyURITemplate = DomUtils.attrValue(elem, "bodyIconURITemplate");\r
-\r
- if(faceURITemplate == null) faceURITemplate = DEF_FACE_URI_TMPL;\r
- if(bodyURITemplate == null) bodyURITemplate = DEF_BODY_URI_TMPL;\r
-\r
- result.faceURITemplate = faceURITemplate;\r
- result.bodyURITemplate = bodyURITemplate;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義の国際化情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillI18NInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- String localeText = DomUtils.attrRequired(elem, "locale");\r
- String encodingText = DomUtils.attrRequired(elem, "encoding");\r
- String timeZoneText = DomUtils.attrRequired(elem, "timeZone");\r
-\r
- Locale locale = buildLocale(localeText);\r
- Charset encoding = Charset.forName(encodingText);\r
- TimeZone timeZone = TimeZone.getTimeZone(timeZoneText);\r
-\r
- result.locale = locale;\r
- result.encoding = encoding;\r
- result.timeZone = timeZone;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義の日付情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillDateInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- long startDateTime;\r
- long endDateTime;\r
-\r
- String startDateText = DomUtils.attrRequired(elem, "startDate");\r
- String endDateText = elem.getAttribute("endDate");\r
-\r
- startDateTime = DateUtils.parseISO8601(startDateText);\r
-\r
- if(endDateText.length() > 0){\r
- endDateTime = DateUtils.parseISO8601(endDateText);\r
- }else{\r
- endDateTime = -1;\r
- }\r
-\r
- if(startDateTime < 0){\r
- throw new SAXException("illegal start date " + startDateText);\r
- }\r
-\r
- if(endDateTime >= 0 && startDateTime > endDateTime){\r
- throw new SAXException("start date is too old " + startDateText);\r
- }\r
-\r
- result.startDateTime = startDateTime;\r
- result.endDateTime = endDateTime;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * XML属性を使って国定義の各種ステータス情報を埋める。\r
- * @param result 国定義\r
- * @param elem 個別のXML国定義要素\r
- * @throws SAXException XML属性の記述に関する異常系\r
- */\r
- private static void fillLandInfo(LandDef result, Element elem)\r
- throws SAXException{\r
- String state = DomUtils.attrRequired(elem, "landState");\r
- LandState landState = STATE_MAP.get(state);\r
- if(landState == null){\r
- throw new SAXException("illegal land status " + state);\r
- }\r
-\r
- String description = DomUtils.attrRequired(elem, "description");\r
- String contactInfo = DomUtils.attrRequired(elem, "contactInfo");\r
-\r
- String invalidVid = elem.getAttribute("invalidVid");\r
- SortedSet<Integer> invalidSet = parseIntList(invalidVid);\r
- int[] invalidArray = new int[invalidSet.size()];\r
- int pos = 0;\r
- for(int vid : invalidSet){\r
- invalidArray[pos++] = vid;\r
- }\r
-\r
- result.landState = landState;\r
- result.description = description;\r
- result.contactInfo = contactInfo;\r
- result.invalidVid = invalidArray;\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * 個々の国設定をオブジェクトに変換する。\r
- * @param elem 国設定要素\r
- * @return 国設定オブジェクト\r
- * @throws SAXException パースエラー\r
- */\r
- private static LandDef buildLandDef(Element elem)\r
- throws SAXException{\r
- LandDef result = new LandDef();\r
-\r
- fillLandInfo (result, elem);\r
- fillIdInfo (result, elem);\r
- fillMemberInfo (result, elem);\r
- fillUriInfo (result, elem);\r
- fillTemplateInfo(result, elem);\r
- fillI18NInfo (result, elem);\r
- fillDateInfo (result, elem);\r
-\r
- return result;\r
- }\r
-\r
-\r
- /**\r
- * 国名を得る。\r
- * @return 国名\r
- */\r
- public String getLandName(){\r
- return this.landName;\r
- }\r
-\r
- /**\r
- * 国識別子を得る。\r
- * @return 識別子\r
- */\r
- public String getLandId(){\r
- return this.landId;\r
- }\r
-\r
- /**\r
- * 正式名称を得る。\r
- * @return 正式名称\r
- */\r
- public String getFormalName(){\r
- return this.formalName;\r
- }\r
-\r
- /**\r
- * 各村の前置文字。\r
- * F国なら「F」\r
- * @return 前置文字\r
- */\r
- public String getLandPrefix(){\r
- return this.landPrefix;\r
- }\r
-\r
- /**\r
- * 国の状態を得る。\r
- * @return 状態\r
- */\r
- public LandState getLandState(){\r
- return this.landState;\r
- }\r
-\r
- /**\r
- * 最小定員を得る。\r
- * @return 最小定員\r
- */\r
- public int getMinMembers(){\r
- return this.minMembers;\r
- }\r
-\r
- /**\r
- * 最大定員を得る。\r
- * @return 最大定員\r
- */\r
- public int getMaxMembers(){\r
- return this.maxMembers;\r
- }\r
-\r
- /**\r
- * Webアクセス用の入り口URIを得る。\r
- * @return 入り口URI\r
- */\r
- public URI getWebURI(){\r
- return this.webURI;\r
- }\r
-\r
- /**\r
- * クエリーを投げるCGIのURIを得る。\r
- * @return CGIのURI\r
- */\r
- public URI getCgiURI(){\r
- return this.cgiURI;\r
- }\r
-\r
- /**\r
- * 墓画像のURIを得る。\r
- * @return 墓URI\r
- */\r
- public URI getTombFaceIconURI(){\r
- return this.tombFaceIconURI;\r
- }\r
-\r
- /**\r
- * 大きな墓画像のURIを得る。\r
- * @return 墓URI\r
- */\r
- public URI getTombBodyIconURI(){\r
- return this.tombBodyIconURI;\r
- }\r
-\r
- /**\r
- * 顔アイコンURIのテンプレートを得る。\r
- * @return Formatter用テンプレート\r
- */\r
- public String getFaceURITemplate(){\r
- return this.faceURITemplate;\r
- }\r
-\r
- /**\r
- * 全身像アイコンURIのテンプレートを得る。\r
- * @return Formatter用テンプレート\r
- */\r
- public String getBodyURITemplate(){\r
- return this.bodyURITemplate;\r
- }\r
-\r
- /**\r
- * この国のロケールを得る。\r
- * @return ロケール\r
- */\r
- public Locale getLocale(){\r
- return this.locale;\r
- }\r
-\r
- /**\r
- * この国が使うエンコーディングを得る。\r
- * @return エンコーディング\r
- */\r
- public Charset getEncoding(){\r
- return this.encoding;\r
- }\r
-\r
- /**\r
- * この国の時刻表記で使うタイムゾーンのコピーを得る。\r
- * @return タイムゾーン\r
- */\r
- public TimeZone getTimeZone(){\r
- TimeZone result = (TimeZone)( this.timeZone.clone() );\r
- return result;\r
- }\r
-\r
- /**\r
- * この国の始まった時刻を得る。\r
- * @return 始まった時刻(エポックミリ秒)。\r
- */\r
- public long getStartDateTime(){\r
- return this.startDateTime;\r
- }\r
-\r
- /**\r
- * この国が発言を打ち切った時刻を得る。\r
- * @return 打ち切った時刻(エポックミリ秒)。まだ打ち切っていない場合は負。\r
- */\r
- public long getEndDateTime(){\r
- return this.endDateTime;\r
- }\r
-\r
- /**\r
- * この国の説明を得る。\r
- * @return 説明文字列\r
- */\r
- public String getDescription(){\r
- return this.description;\r
- }\r
-\r
- /**\r
- * この国の連絡先を得る。\r
- * @return 連絡先文字列\r
- */\r
- public String getContactInfo(){\r
- return this.contactInfo;\r
- }\r
-\r
- /**\r
- * 有効な村IDか否か判定する。\r
- * @param vid 村ID\r
- * @return 無効な村ならfalse\r
- */\r
- public boolean isValidVillageId(int vid){\r
- int pos = Arrays.binarySearch(this.invalidVid, vid);\r
- if(pos >= 0) return false;\r
- return true;\r
- }\r
-\r
-}\r
+/*
+ * land information definition
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.IOException;
+import java.net.URI;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TimeZone;
+import java.util.TreeSet;
+import javax.xml.parsers.DocumentBuilder;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+/**
+ * 人狼BBSの各国設定。
+ */
+public final class LandDef{
+
+ /** 各種イメージの相対なベースURI。 */
+ public static final String IMAGE_RELPATH = "./plugin_wolf/img/";
+
+ /** 顔アイコンURIのテンプレート。 */
+ public static final String DEF_FACE_URI_TMPL =
+ IMAGE_RELPATH + "face{0,number,#00}.jpg";
+ /** デカキャラURIのテンプレート。 */
+ public static final String DEF_BODY_URI_TMPL =
+ IMAGE_RELPATH + "body{0,number,#00}.jpg";
+
+ /** 墓小アイコンのデフォルト相対URI。 */
+ public static final URI DEF_TOMBFACE_URI =
+ URI.create(IMAGE_RELPATH + "face99.jpg").normalize();
+ /** 墓大アイコンのデフォルト相対URI。 */
+ public static final URI DEF_TOMBBODY_URI =
+ URI.create(IMAGE_RELPATH + "body99.jpg").normalize();
+
+ private static final Map<String, LandState> STATE_MAP;
+
+
+ static{
+ STATE_MAP = new HashMap<String, LandState>();
+ STATE_MAP.put("closed", LandState.CLOSED);
+ STATE_MAP.put("historical", LandState.HISTORICAL);
+ STATE_MAP.put("active", LandState.ACTIVE);
+ }
+
+
+ private String landName;
+ private String landId;
+ private String formalName;
+ private String landPrefix;
+ private LandState landState;
+ private int minMembers;
+ private int maxMembers;
+ private URI webURI;
+ private URI cgiURI;
+ private URI tombFaceIconURI;
+ private URI tombBodyIconURI;
+ private String faceURITemplate;
+ private String bodyURITemplate;
+ private Locale locale;
+ private Charset encoding;
+ private TimeZone timeZone;
+ private long startDateTime;
+ private long endDateTime;
+ private String description;
+ private String contactInfo;
+ private int[] invalidVid;
+
+
+ /**
+ * コンストラクタ。
+ */
+ private LandDef(){
+ super();
+ return;
+ }
+
+
+ /**
+ * ハイフンで区切られた整数範囲をパースする。
+ * 「1-3」なら1,2,3を結果に格納する。
+ * @param intSet 格納先Set
+ * @param seq パース対象
+ * @throws IllegalArgumentException 形式が変
+ */
+ private static void parseIntPair(Set<Integer> intSet, CharSequence seq)
+ throws IllegalArgumentException{
+ String token = seq.toString();
+
+ String[] ivalues = token.split("-");
+ assert ivalues.length >= 1;
+ if(ivalues.length >= 3){
+ throw new IllegalArgumentException(token);
+ }
+
+ int ivalStart;
+ int ivalEnd;
+ try{
+ ivalStart = Integer.parseInt(ivalues[0]);
+ if(ivalues.length >= 2) ivalEnd = Integer.parseInt(ivalues[1]);
+ else ivalEnd = ivalStart;
+ }catch(NumberFormatException e){
+ throw new IllegalArgumentException(token, e);
+ }
+
+ if(ivalStart > ivalEnd){
+ int dummy = ivalStart;
+ ivalStart = ivalEnd;
+ ivalEnd = dummy;
+ assert ivalStart <= ivalEnd;
+ }
+
+ for(int ival = ivalStart; ival <= ivalEnd; ival++){
+ intSet.add(ival);
+ }
+
+ return;
+ }
+
+ /**
+ * コンマとハイフンで区切られた整数の羅列をパースする。
+ * 「10,23-25」なら10,23,24,25を結果に返す。
+ * @param seq パース対象文字列
+ * @return ソートされたIntegerのList
+ * @throws IllegalArgumentException 形式が変。
+ */
+ public static SortedSet<Integer> parseIntList(CharSequence seq)
+ throws IllegalArgumentException{
+ SortedSet<Integer> result = new TreeSet<Integer>();
+
+ if(seq.length() <= 0 ) return result;
+ String str = seq.toString();
+ str = str.replaceAll("\\p{Blank}", "");
+
+ String[] tokens = str.split(",");
+ assert tokens.length >= 1;
+ for(String token : tokens){
+ if(token.length() <= 0) continue;
+ if( token.charAt(0) == '-'
+ || token.endsWith("-") ){
+ throw new IllegalArgumentException(token);
+ }
+ parseIntPair(result, token);
+ }
+
+ return result;
+ }
+
+ /**
+ * 国設定のListを返す。
+ * @param builder DOMビルダ
+ * @return List 国設定リスト
+ * @throws IOException IOエラー
+ * @throws SAXException パースエラー
+ */
+ public static List<LandDef> buildLandDefList(DocumentBuilder builder)
+ throws IOException,
+ SAXException{
+ List<Element> elemList = DomUtils.loadElemList(
+ builder, XmlResource.I_URL_LANDDEF, "landDef");
+
+ List<LandDef> result = new ArrayList<LandDef>(elemList.size());
+
+ for(Element elem : elemList){
+ LandDef landDef = buildLandDef(elem);
+ result.add(landDef);
+ }
+
+ result = Collections.unmodifiableList(result);
+
+ return result;
+ }
+
+ /**
+ * ハイフンをデリミタに持つロケール指定文字列からLocaleを生成する。
+ * @param attrVal ロケール指定文字列
+ * @return Locale
+ */
+ public static Locale buildLocale(CharSequence attrVal){
+ String lang = "";
+ String country = "";
+ String variant = "";
+
+ String[] lcstr = attrVal.toString().split("-", 3);
+ if(lcstr.length >= 1) lang = lcstr[0];
+ if(lcstr.length >= 2) country = lcstr[1];
+ if(lcstr.length >= 3) variant = lcstr[2];
+
+ Locale locale = new Locale(lang, country, variant);
+
+ return locale;
+ }
+
+ /**
+ * XML属性を使って国定義の識別子情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillIdInfo(LandDef result, Element elem)
+ throws SAXException{
+ String landName = DomUtils.attrRequired(elem, "landName");
+ String landId = DomUtils.attrRequired(elem, "landId");
+ String formalName = DomUtils.attrRequired(elem, "formalName");
+ String landPrefix = DomUtils.attrRequired(elem, "landPrefix");
+
+ if( landName .length() <= 0
+ || landId .length() <= 0
+ || formalName.length() <= 0 ){
+ throw new SAXException("no identification info");
+ }
+
+ result.landName = landName;
+ result.landId = landId;
+ result.formalName = formalName;
+ result.landPrefix = landPrefix;
+
+ return;
+ }
+
+ /**
+ * XML属性を使って国定義の定員情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillMemberInfo(LandDef result, Element elem)
+ throws SAXException{
+ String minStr = DomUtils.attrRequired(elem, "minMembers");
+ String maxStr = DomUtils.attrRequired(elem, "maxMembers");
+
+ int minMembers = Integer.parseInt(minStr);
+ int maxMembers = Integer.parseInt(maxStr);
+
+ if( minMembers <= 0
+ || minMembers > maxMembers ){
+ throw new SAXException("invalid member limitation");
+ }
+
+ result.minMembers = minMembers;
+ result.maxMembers = maxMembers;
+
+ return;
+ }
+
+ /**
+ * XML属性を使って国定義のURI情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillUriInfo(LandDef result, Element elem)
+ throws SAXException{
+ URI webURI = DomUtils.attrToUri(elem, "webURI");
+ URI cgiURI = DomUtils.attrToUri(elem, "cgiURI");
+ if(webURI == null || cgiURI == null){
+ throw new SAXException("no URI");
+ }
+ if( ! webURI.isAbsolute()
+ || ! cgiURI.isAbsolute() ){
+ throw new SAXException("relative URI");
+ }
+
+ URI tombFaceIconURI = DomUtils.attrToUri(elem, "tombFaceIconURI");
+ URI tombBodyIconURI = DomUtils.attrToUri(elem, "tombBodyIconURI");
+ if(tombFaceIconURI == null) tombFaceIconURI = DEF_TOMBFACE_URI;
+ if(tombBodyIconURI == null) tombBodyIconURI = DEF_TOMBBODY_URI;
+
+ result.webURI = webURI;
+ result.cgiURI = cgiURI;
+ result.tombFaceIconURI = tombFaceIconURI;
+ result.tombBodyIconURI = tombBodyIconURI;
+
+ return;
+ }
+
+ /**
+ * XML属性を使って国定義のURIテンプレート情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillTemplateInfo(LandDef result, Element elem)
+ throws SAXException{
+ String faceURITemplate;
+ String bodyURITemplate;
+
+ faceURITemplate = DomUtils.attrValue(elem, "faceIconURITemplate");
+ bodyURITemplate = DomUtils.attrValue(elem, "bodyIconURITemplate");
+
+ if(faceURITemplate == null) faceURITemplate = DEF_FACE_URI_TMPL;
+ if(bodyURITemplate == null) bodyURITemplate = DEF_BODY_URI_TMPL;
+
+ result.faceURITemplate = faceURITemplate;
+ result.bodyURITemplate = bodyURITemplate;
+
+ return;
+ }
+
+ /**
+ * XML属性を使って国定義の国際化情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillI18NInfo(LandDef result, Element elem)
+ throws SAXException{
+ String localeText = DomUtils.attrRequired(elem, "locale");
+ String encodingText = DomUtils.attrRequired(elem, "encoding");
+ String timeZoneText = DomUtils.attrRequired(elem, "timeZone");
+
+ Locale locale = buildLocale(localeText);
+ Charset encoding = Charset.forName(encodingText);
+ TimeZone timeZone = TimeZone.getTimeZone(timeZoneText);
+
+ result.locale = locale;
+ result.encoding = encoding;
+ result.timeZone = timeZone;
+
+ return;
+ }
+
+ /**
+ * XML属性を使って国定義の日付情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillDateInfo(LandDef result, Element elem)
+ throws SAXException{
+ long startDateTime;
+ long endDateTime;
+
+ String startDateText = DomUtils.attrRequired(elem, "startDate");
+ String endDateText = elem.getAttribute("endDate");
+
+ startDateTime = DateUtils.parseISO8601(startDateText);
+
+ if(endDateText.length() > 0){
+ endDateTime = DateUtils.parseISO8601(endDateText);
+ }else{
+ endDateTime = -1;
+ }
+
+ if(startDateTime < 0){
+ throw new SAXException("illegal start date " + startDateText);
+ }
+
+ if(endDateTime >= 0 && startDateTime > endDateTime){
+ throw new SAXException("start date is too old " + startDateText);
+ }
+
+ result.startDateTime = startDateTime;
+ result.endDateTime = endDateTime;
+
+ return;
+ }
+
+ /**
+ * XML属性を使って国定義の各種ステータス情報を埋める。
+ * @param result 国定義
+ * @param elem 個別のXML国定義要素
+ * @throws SAXException XML属性の記述に関する異常系
+ */
+ private static void fillLandInfo(LandDef result, Element elem)
+ throws SAXException{
+ String state = DomUtils.attrRequired(elem, "landState");
+ LandState landState = STATE_MAP.get(state);
+ if(landState == null){
+ throw new SAXException("illegal land status " + state);
+ }
+
+ String description = DomUtils.attrRequired(elem, "description");
+ String contactInfo = DomUtils.attrRequired(elem, "contactInfo");
+
+ String invalidVid = elem.getAttribute("invalidVid");
+ SortedSet<Integer> invalidSet = parseIntList(invalidVid);
+ int[] invalidArray = new int[invalidSet.size()];
+ int pos = 0;
+ for(int vid : invalidSet){
+ invalidArray[pos++] = vid;
+ }
+
+ result.landState = landState;
+ result.description = description;
+ result.contactInfo = contactInfo;
+ result.invalidVid = invalidArray;
+
+ return;
+ }
+
+ /**
+ * 個々の国設定をオブジェクトに変換する。
+ * @param elem 国設定要素
+ * @return 国設定オブジェクト
+ * @throws SAXException パースエラー
+ */
+ private static LandDef buildLandDef(Element elem)
+ throws SAXException{
+ LandDef result = new LandDef();
+
+ fillLandInfo (result, elem);
+ fillIdInfo (result, elem);
+ fillMemberInfo (result, elem);
+ fillUriInfo (result, elem);
+ fillTemplateInfo(result, elem);
+ fillI18NInfo (result, elem);
+ fillDateInfo (result, elem);
+
+ return result;
+ }
+
+
+ /**
+ * 国名を得る。
+ * @return 国名
+ */
+ public String getLandName(){
+ return this.landName;
+ }
+
+ /**
+ * 国識別子を得る。
+ * @return 識別子
+ */
+ public String getLandId(){
+ return this.landId;
+ }
+
+ /**
+ * 正式名称を得る。
+ * @return 正式名称
+ */
+ public String getFormalName(){
+ return this.formalName;
+ }
+
+ /**
+ * 各村の前置文字。
+ * F国なら「F」
+ * @return 前置文字
+ */
+ public String getLandPrefix(){
+ return this.landPrefix;
+ }
+
+ /**
+ * 国の状態を得る。
+ * @return 状態
+ */
+ public LandState getLandState(){
+ return this.landState;
+ }
+
+ /**
+ * 最小定員を得る。
+ * @return 最小定員
+ */
+ public int getMinMembers(){
+ return this.minMembers;
+ }
+
+ /**
+ * 最大定員を得る。
+ * @return 最大定員
+ */
+ public int getMaxMembers(){
+ return this.maxMembers;
+ }
+
+ /**
+ * Webアクセス用の入り口URIを得る。
+ * @return 入り口URI
+ */
+ public URI getWebURI(){
+ return this.webURI;
+ }
+
+ /**
+ * クエリーを投げるCGIのURIを得る。
+ * @return CGIのURI
+ */
+ public URI getCgiURI(){
+ return this.cgiURI;
+ }
+
+ /**
+ * 墓画像のURIを得る。
+ * @return 墓URI
+ */
+ public URI getTombFaceIconURI(){
+ return this.tombFaceIconURI;
+ }
+
+ /**
+ * 大きな墓画像のURIを得る。
+ * @return 墓URI
+ */
+ public URI getTombBodyIconURI(){
+ return this.tombBodyIconURI;
+ }
+
+ /**
+ * 顔アイコンURIのテンプレートを得る。
+ * @return Formatter用テンプレート
+ */
+ public String getFaceURITemplate(){
+ return this.faceURITemplate;
+ }
+
+ /**
+ * 全身像アイコンURIのテンプレートを得る。
+ * @return Formatter用テンプレート
+ */
+ public String getBodyURITemplate(){
+ return this.bodyURITemplate;
+ }
+
+ /**
+ * この国のロケールを得る。
+ * @return ロケール
+ */
+ public Locale getLocale(){
+ return this.locale;
+ }
+
+ /**
+ * この国が使うエンコーディングを得る。
+ * @return エンコーディング
+ */
+ public Charset getEncoding(){
+ return this.encoding;
+ }
+
+ /**
+ * この国の時刻表記で使うタイムゾーンのコピーを得る。
+ * @return タイムゾーン
+ */
+ public TimeZone getTimeZone(){
+ TimeZone result = (TimeZone)( this.timeZone.clone() );
+ return result;
+ }
+
+ /**
+ * この国の始まった時刻を得る。
+ * @return 始まった時刻(エポックミリ秒)。
+ */
+ public long getStartDateTime(){
+ return this.startDateTime;
+ }
+
+ /**
+ * この国が発言を打ち切った時刻を得る。
+ * @return 打ち切った時刻(エポックミリ秒)。まだ打ち切っていない場合は負。
+ */
+ public long getEndDateTime(){
+ return this.endDateTime;
+ }
+
+ /**
+ * この国の説明を得る。
+ * @return 説明文字列
+ */
+ public String getDescription(){
+ return this.description;
+ }
+
+ /**
+ * この国の連絡先を得る。
+ * @return 連絡先文字列
+ */
+ public String getContactInfo(){
+ return this.contactInfo;
+ }
+
+ /**
+ * 有効な村IDか否か判定する。
+ * @param vid 村ID
+ * @return 無効な村ならfalse
+ */
+ public boolean isValidVillageId(int vid){
+ int pos = Arrays.binarySearch(this.invalidVid, vid);
+ if(pos >= 0) return false;
+ return true;
+ }
+
+}
-/*\r
- * status of land\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * 国の状態。\r
- */\r
-public enum LandState{\r
-\r
- /** アクセス不可。 */\r
- CLOSED("closed"),\r
- /** 過去ログの閲覧のみが可能。 */\r
- HISTORICAL("historical"),\r
- /** ゲームへの参加が可能。 */\r
- ACTIVE("active"),\r
- ;\r
-\r
- private final String xmlName;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param xmlName XML用シンボル\r
- */\r
- private LandState(String xmlName){\r
- this.xmlName = xmlName.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
-}\r
+/*
+ * status of land
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * 国の状態。
+ */
+public enum LandState{
+
+ /** アクセス不可。 */
+ CLOSED("closed"),
+ /** 過去ログの閲覧のみが可能。 */
+ HISTORICAL("historical"),
+ /** ゲームへの参加が可能。 */
+ ACTIVE("active"),
+ ;
+
+ private final String xmlName;
+
+ /**
+ * コンストラクタ。
+ * @param xmlName XML用シンボル
+ */
+ private LandState(String xmlName){
+ this.xmlName = xmlName.intern();
+ return;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+}
-/*\r
- * type of period\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * Period(個別の日々)の種別。\r
- */\r
-public enum PeriodType{\r
-\r
- /** プロローグ。 */\r
- PROLOGUE("prologue"),\r
- /** 通常のゲーム進行。 */\r
- PROGRESS("progress"),\r
- /** エピローグ。 */\r
- EPILOGUE("epilogue"),\r
- ;\r
-\r
- private final String xmlName;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param xmlName XML用シンボル\r
- */\r
- private PeriodType(String xmlName){\r
- this.xmlName = xmlName.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
-}\r
+/*
+ * type of period
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * Period(個別の日々)の種別。
+ */
+public enum PeriodType{
+
+ /** プロローグ。 */
+ PROLOGUE("prologue"),
+ /** 通常のゲーム進行。 */
+ PROGRESS("progress"),
+ /** エピローグ。 */
+ EPILOGUE("epilogue"),
+ ;
+
+ private final String xmlName;
+
+ /**
+ * コンストラクタ。
+ * @param xmlName XML用シンボル
+ */
+ private PeriodType(String xmlName){
+ this.xmlName = xmlName.intern();
+ return;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+}
-/*\r
- * pre-defined avatar info\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-import java.util.Collections;\r
-import java.util.List;\r
-import javax.xml.parsers.DocumentBuilder;\r
-import org.w3c.dom.Element;\r
-import org.xml.sax.SAXException;\r
-\r
-/**\r
- * プリセット済みAvatarに関する情報。\r
- * F国運用の時点で20キャラクタ。\r
- */\r
-public final class PreDefAvatar{\r
-\r
- private final String avatarId;\r
- private final String fullName;\r
- private final String jobTitle;\r
- private final String shortName;\r
- private final int serialNo;\r
-\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param avatarId Avatar識別子\r
- * @param fullName フルネーム\r
- * @param jobTitle 職業名\r
- * @param shortName 省略名\r
- * @param serialNo 通し番号\r
- */\r
- private PreDefAvatar(String avatarId,\r
- String fullName,\r
- String jobTitle,\r
- String shortName,\r
- int serialNo ){\r
- super();\r
-\r
- if( avatarId == null\r
- || fullName == null\r
- || jobTitle == null\r
- || shortName == null ){\r
- throw new NullPointerException();\r
- }\r
-\r
- if( avatarId.length() <= 0\r
- || fullName.length() <= 0\r
- || serialNo < 0 ){\r
- throw new IllegalArgumentException();\r
- }\r
-\r
- this.avatarId = avatarId.intern();\r
- this.fullName = fullName.intern();\r
- this.jobTitle = jobTitle.intern();\r
- this.shortName = shortName.intern();\r
- this.serialNo = serialNo;\r
-\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * プリセット済みAvatar一覧リストを生成する。\r
- * @param builder DOMビルダ\r
- * @return プリセット済みAvatar一覧リスト\r
- * @throws IOException IOエラー\r
- * @throws SAXException パースエラー\r
- */\r
- public static List<PreDefAvatar> buildPreDefAvatarList(\r
- DocumentBuilder builder)\r
- throws IOException,\r
- SAXException {\r
- List<Element> elemList = DomUtils.loadElemList(\r
- builder, XmlResource.I_URL_AVATARDEF, "preDefinedAvatar");\r
-\r
- List<PreDefAvatar> result =\r
- new ArrayList<PreDefAvatar>(elemList.size());\r
-\r
- for(Element elem : elemList){\r
- PreDefAvatar avatar = buildAvatar(elem);\r
- result.add(avatar);\r
- }\r
-\r
- result = Collections.unmodifiableList(result);\r
-\r
- return result;\r
- }\r
-\r
- /**\r
- * 個々のプリセットAvatar定義をオブジェクトに変換する。\r
- * @param avatarDef プリセットAvatar定義要素\r
- * @return プリセットAvatar定義オブジェクト\r
- * @throws SAXException パースエラー\r
- */\r
- private static PreDefAvatar buildAvatar(Element avatarDef)\r
- throws SAXException {\r
- String avatarId = avatarDef.getAttribute("avatarId");\r
- String jobTitle = avatarDef.getAttribute("jobTitle");\r
- String shortName = avatarDef.getAttribute("shortName");\r
- String serialNum = avatarDef.getAttribute("serialNum");\r
-\r
- String fullName = jobTitle + "\u0020" + shortName;\r
-\r
- int serialNo;\r
- try{\r
- serialNo = Integer.parseInt(serialNum);\r
- }catch(NumberFormatException e){\r
- throw new SAXException("illegal number form", e);\r
- }\r
-\r
- PreDefAvatar avatar = new PreDefAvatar(avatarId,\r
- fullName,\r
- jobTitle,\r
- shortName,\r
- serialNo );\r
-\r
- return avatar;\r
- }\r
-\r
-\r
- /**\r
- * Avatar識別子を返す。\r
- * @return Avatar識別子\r
- */\r
- public String getAvatarId(){\r
- return this.avatarId;\r
- }\r
-\r
- /**\r
- * フルネームを返す。\r
- * @return フルネーム\r
- */\r
- public String getFullName(){\r
- return this.fullName;\r
- }\r
-\r
- /**\r
- * 職業名を返す。\r
- * @return 職業名\r
- */\r
- public String getJobTitle(){\r
- return this.jobTitle;\r
- }\r
-\r
- /**\r
- * 省略名を返す。\r
- * @return 省略名\r
- */\r
- public String getShortName(){\r
- return this.shortName;\r
- }\r
-\r
- /**\r
- * 通し番号を返す。\r
- * @return 通し番号\r
- */\r
- public int getSerialNo(){\r
- return this.serialNo;\r
- }\r
-\r
-}\r
+/*
+ * pre-defined avatar info
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import javax.xml.parsers.DocumentBuilder;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+/**
+ * プリセット済みAvatarに関する情報。
+ * F国運用の時点で20キャラクタ。
+ */
+public final class PreDefAvatar{
+
+ private final String avatarId;
+ private final String fullName;
+ private final String jobTitle;
+ private final String shortName;
+ private final int serialNo;
+
+
+ /**
+ * コンストラクタ。
+ * @param avatarId Avatar識別子
+ * @param fullName フルネーム
+ * @param jobTitle 職業名
+ * @param shortName 省略名
+ * @param serialNo 通し番号
+ */
+ private PreDefAvatar(String avatarId,
+ String fullName,
+ String jobTitle,
+ String shortName,
+ int serialNo ){
+ super();
+
+ if( avatarId == null
+ || fullName == null
+ || jobTitle == null
+ || shortName == null ){
+ throw new NullPointerException();
+ }
+
+ if( avatarId.length() <= 0
+ || fullName.length() <= 0
+ || serialNo < 0 ){
+ throw new IllegalArgumentException();
+ }
+
+ this.avatarId = avatarId.intern();
+ this.fullName = fullName.intern();
+ this.jobTitle = jobTitle.intern();
+ this.shortName = shortName.intern();
+ this.serialNo = serialNo;
+
+ return;
+ }
+
+
+ /**
+ * プリセット済みAvatar一覧リストを生成する。
+ * @param builder DOMビルダ
+ * @return プリセット済みAvatar一覧リスト
+ * @throws IOException IOエラー
+ * @throws SAXException パースエラー
+ */
+ public static List<PreDefAvatar> buildPreDefAvatarList(
+ DocumentBuilder builder)
+ throws IOException,
+ SAXException {
+ List<Element> elemList = DomUtils.loadElemList(
+ builder, XmlResource.I_URL_AVATARDEF, "preDefinedAvatar");
+
+ List<PreDefAvatar> result =
+ new ArrayList<PreDefAvatar>(elemList.size());
+
+ for(Element elem : elemList){
+ PreDefAvatar avatar = buildAvatar(elem);
+ result.add(avatar);
+ }
+
+ result = Collections.unmodifiableList(result);
+
+ return result;
+ }
+
+ /**
+ * 個々のプリセットAvatar定義をオブジェクトに変換する。
+ * @param avatarDef プリセットAvatar定義要素
+ * @return プリセットAvatar定義オブジェクト
+ * @throws SAXException パースエラー
+ */
+ private static PreDefAvatar buildAvatar(Element avatarDef)
+ throws SAXException {
+ String avatarId = avatarDef.getAttribute("avatarId");
+ String jobTitle = avatarDef.getAttribute("jobTitle");
+ String shortName = avatarDef.getAttribute("shortName");
+ String serialNum = avatarDef.getAttribute("serialNum");
+
+ String fullName = jobTitle + "\u0020" + shortName;
+
+ int serialNo;
+ try{
+ serialNo = Integer.parseInt(serialNum);
+ }catch(NumberFormatException e){
+ throw new SAXException("illegal number form", e);
+ }
+
+ PreDefAvatar avatar = new PreDefAvatar(avatarId,
+ fullName,
+ jobTitle,
+ shortName,
+ serialNo );
+
+ return avatar;
+ }
+
+
+ /**
+ * Avatar識別子を返す。
+ * @return Avatar識別子
+ */
+ public String getAvatarId(){
+ return this.avatarId;
+ }
+
+ /**
+ * フルネームを返す。
+ * @return フルネーム
+ */
+ public String getFullName(){
+ return this.fullName;
+ }
+
+ /**
+ * 職業名を返す。
+ * @return 職業名
+ */
+ public String getJobTitle(){
+ return this.jobTitle;
+ }
+
+ /**
+ * 省略名を返す。
+ * @return 省略名
+ */
+ public String getShortName(){
+ return this.shortName;
+ }
+
+ /**
+ * 通し番号を返す。
+ * @return 通し番号
+ */
+ public int getSerialNo(){
+ return this.serialNo;
+ }
+
+}
-/*\r
- * type of system-event-message\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * イベント種別。\r
- */\r
-public enum SysEventType{\r
-\r
- /** エントリースタート。 */\r
- STARTENTRY(EventFamily.ANNOUNCE),\r
- /** キャラ初登場。 */\r
- ONSTAGE(EventFamily.ANNOUNCE),\r
- /** 役職確定。 */\r
- STARTMIRROR(EventFamily.ANNOUNCE),\r
- /** 役職人数内訳発表。 */\r
- OPENROLE(EventFamily.ANNOUNCE),\r
- /** 襲撃成功。 */\r
- MURDERED(EventFamily.ANNOUNCE),\r
- /** 襲撃開始。 */\r
- STARTASSAULT(EventFamily.ANNOUNCE),\r
- /** 生存者確認。 */\r
- SURVIVOR(EventFamily.ANNOUNCE),\r
- /** 投票結果。 */\r
- COUNTING(EventFamily.ANNOUNCE),\r
- /** 突然死。 */\r
- SUDDENDEATH(EventFamily.ANNOUNCE),\r
- /** 襲撃失敗。 */\r
- NOMURDER(EventFamily.ANNOUNCE),\r
- /** 村側勝利。 */\r
- WINVILLAGE(EventFamily.ANNOUNCE),\r
- /** 狼側勝利。 */\r
- WINWOLF(EventFamily.ANNOUNCE),\r
- /** ハムスター勝利。 */\r
- WINHAMSTER(EventFamily.ANNOUNCE),\r
- /** 役職&ログイン名公開。 */\r
- PLAYERLIST(EventFamily.ANNOUNCE),\r
- /** 何らかのシステムトラブル。A国末期で頻発。 */\r
- PANIC(EventFamily.ANNOUNCE),\r
- /** 参加者募集。 */\r
- ASKENTRY(EventFamily.ORDER),\r
- /** 行動確定要求。 */\r
- ASKCOMMIT(EventFamily.ORDER),\r
- /** 未発言者一覧。 */\r
- NOCOMMENT(EventFamily.ORDER),\r
- /** エピローグ案内。 */\r
- STAYEPILOGUE(EventFamily.ORDER),\r
- /** 村終了。 */\r
- GAMEOVER(EventFamily.ORDER),\r
- /** 占い先表示。 */\r
- JUDGE(EventFamily.EXTRA),\r
- /** 護衛先表示。 */\r
- GUARD(EventFamily.EXTRA),\r
- /** 襲撃。 */\r
- ASSAULT(null),\r
- /** 処刑結果表示。 */\r
- EXECUTION(EventFamily.ANNOUNCE),\r
- /** 投票結果表示(G国版)。 */\r
- COUNTING2(EventFamily.EXTRA),\r
- /** 失踪。 */\r
- VANISH(EventFamily.ANNOUNCE),\r
- /** チェックアウト。 */\r
- CHECKOUT(EventFamily.ANNOUNCE),\r
- /** 定員不足。 */\r
- SHORTMEMBER(EventFamily.ANNOUNCE),\r
- /** 未定義。 */\r
- UNKNOWN(null),\r
- ;\r
-\r
-\r
- private final EventFamily family;\r
-\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param family イベントファミリ\r
- */\r
- private SysEventType(EventFamily family){\r
- this.family = family;\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * イベントファミリを得る。\r
- * ASSAULTとUNKNOWNに関してはnullを返す。\r
- * @return イベントファミリ\r
- */\r
- public EventFamily getEventFamily(){\r
- return this.family;\r
- }\r
-\r
-}\r
+/*
+ * type of system-event-message
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * イベント種別。
+ */
+public enum SysEventType{
+
+ /** エントリースタート。 */
+ STARTENTRY(EventFamily.ANNOUNCE),
+ /** キャラ初登場。 */
+ ONSTAGE(EventFamily.ANNOUNCE),
+ /** 役職確定。 */
+ STARTMIRROR(EventFamily.ANNOUNCE),
+ /** 役職人数内訳発表。 */
+ OPENROLE(EventFamily.ANNOUNCE),
+ /** 襲撃成功。 */
+ MURDERED(EventFamily.ANNOUNCE),
+ /** 襲撃開始。 */
+ STARTASSAULT(EventFamily.ANNOUNCE),
+ /** 生存者確認。 */
+ SURVIVOR(EventFamily.ANNOUNCE),
+ /** 投票結果。 */
+ COUNTING(EventFamily.ANNOUNCE),
+ /** 突然死。 */
+ SUDDENDEATH(EventFamily.ANNOUNCE),
+ /** 襲撃失敗。 */
+ NOMURDER(EventFamily.ANNOUNCE),
+ /** 村側勝利。 */
+ WINVILLAGE(EventFamily.ANNOUNCE),
+ /** 狼側勝利。 */
+ WINWOLF(EventFamily.ANNOUNCE),
+ /** ハムスター勝利。 */
+ WINHAMSTER(EventFamily.ANNOUNCE),
+ /** 役職&ログイン名公開。 */
+ PLAYERLIST(EventFamily.ANNOUNCE),
+ /** 何らかのシステムトラブル。A国末期で頻発。 */
+ PANIC(EventFamily.ANNOUNCE),
+ /** 参加者募集。 */
+ ASKENTRY(EventFamily.ORDER),
+ /** 行動確定要求。 */
+ ASKCOMMIT(EventFamily.ORDER),
+ /** 未発言者一覧。 */
+ NOCOMMENT(EventFamily.ORDER),
+ /** エピローグ案内。 */
+ STAYEPILOGUE(EventFamily.ORDER),
+ /** 村終了。 */
+ GAMEOVER(EventFamily.ORDER),
+ /** 占い先表示。 */
+ JUDGE(EventFamily.EXTRA),
+ /** 護衛先表示。 */
+ GUARD(EventFamily.EXTRA),
+ /** 襲撃。 */
+ ASSAULT(null),
+ /** 処刑結果表示。 */
+ EXECUTION(EventFamily.ANNOUNCE),
+ /** 投票結果表示(G国版)。 */
+ COUNTING2(EventFamily.EXTRA),
+ /** 失踪。 */
+ VANISH(EventFamily.ANNOUNCE),
+ /** チェックアウト。 */
+ CHECKOUT(EventFamily.ANNOUNCE),
+ /** 定員不足。 */
+ SHORTMEMBER(EventFamily.ANNOUNCE),
+ /** 未定義。 */
+ UNKNOWN(null),
+ ;
+
+
+ private final EventFamily family;
+
+
+ /**
+ * コンストラクタ。
+ * @param family イベントファミリ
+ */
+ private SysEventType(EventFamily family){
+ this.family = family;
+ return;
+ }
+
+
+ /**
+ * イベントファミリを得る。
+ * ASSAULTとUNKNOWNに関してはnullを返す。
+ * @return イベントファミリ
+ */
+ public EventFamily getEventFamily(){
+ return this.family;
+ }
+
+}
-/*\r
- * type of talk\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * 発言種別。\r
- */\r
-public enum TalkType{\r
-\r
- /** 公開発言。白発言。say属性。 */\r
- PUBLIC("public"),\r
- /** 狼発言。赤発言。whisper属性。 */\r
- WOLFONLY("wolf"),\r
- /** 独り言。灰発言。think属性。 */\r
- PRIVATE("private"),\r
- /** 墓下発言。青発言。groan属性。 */\r
- GRAVE("grave"),\r
- ;\r
-\r
- private final String xmlName;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param xmlName XML用シンボル\r
- */\r
- private TalkType(String xmlName){\r
- this.xmlName = xmlName.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
-}\r
+/*
+ * type of talk
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * 発言種別。
+ */
+public enum TalkType{
+
+ /** 公開発言。白発言。say属性。 */
+ PUBLIC("public"),
+ /** 狼発言。赤発言。whisper属性。 */
+ WOLFONLY("wolf"),
+ /** 独り言。灰発言。think属性。 */
+ PRIVATE("private"),
+ /** 墓下発言。青発言。groan属性。 */
+ GRAVE("grave"),
+ ;
+
+ private final String xmlName;
+
+ /**
+ * コンストラクタ。
+ * @param xmlName XML用シンボル
+ */
+ private TalkType(String xmlName){
+ this.xmlName = xmlName.intern();
+ return;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+}
-/*\r
- * team in game\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * 陣営種別。\r
- */\r
-public enum Team{\r
-\r
- /** 村陣営。 */\r
- VILLAGE ("村陣営", "village"),\r
- /** 狼陣営。 */\r
- WOLF ("狼陣営", "wolf"),\r
- /** ハムスター陣営。 */\r
- HAMSTER ("ハムスター人間", "hamster"),\r
- ;\r
-\r
- private final String teamName;\r
- private final String xmlName;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param teamName 陣営名\r
- * @param xmlName XML用シンボル\r
- */\r
- private Team(String teamName, String xmlName){\r
- this.teamName = teamName.intern();\r
- this.xmlName = xmlName.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * チーム名を取得する。\r
- * @return チーム名\r
- */\r
- public String getTeamName(){\r
- return this.teamName;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
-}\r
+/*
+ * team in game
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * 陣営種別。
+ */
+public enum Team{
+
+ /** 村陣営。 */
+ VILLAGE ("村陣営", "village"),
+ /** 狼陣営。 */
+ WOLF ("狼陣営", "wolf"),
+ /** ハムスター陣営。 */
+ HAMSTER ("ハムスター人間", "hamster"),
+ ;
+
+ private final String teamName;
+ private final String xmlName;
+
+ /**
+ * コンストラクタ。
+ * @param teamName 陣営名
+ * @param xmlName XML用シンボル
+ */
+ private Team(String teamName, String xmlName){
+ this.teamName = teamName.intern();
+ this.xmlName = xmlName.intern();
+ return;
+ }
+
+ /**
+ * チーム名を取得する。
+ * @return チーム名
+ */
+ public String getTeamName(){
+ return this.teamName;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+}
-/*\r
- * state of village\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/**\r
- * 村の状態。\r
- * 滅んだ国の村は全てGAMEOVERとする。\r
- */\r
-public enum VillageState{\r
-\r
- /** プロローグ進行中。 */\r
- PROLOGUE("prologue"),\r
- /** ゲーム進行中。 */\r
- PROGRESS("progress"),\r
- /** エピローグ進行中。 */\r
- EPILOGUE("epilogue"),\r
- /** ゲーム終了。 */\r
- GAMEOVER("gameover"),\r
- /** 状況不明だが村の存在は確認。 */\r
- UNKNOWN("unknown"),\r
- ;\r
-\r
- private final String xmlName;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param xmlName XML用シンボル\r
- */\r
- private VillageState(String xmlName){\r
- this.xmlName = xmlName.intern();\r
- return;\r
- }\r
-\r
- /**\r
- * XML用シンボルを取得する。\r
- * @return XML用シンボル\r
- */\r
- public String getXmlName(){\r
- return this.xmlName;\r
- }\r
-\r
-}\r
+/*
+ * state of village
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/**
+ * 村の状態。
+ * 滅んだ国の村は全てGAMEOVERとする。
+ */
+public enum VillageState{
+
+ /** プロローグ進行中。 */
+ PROLOGUE("prologue"),
+ /** ゲーム進行中。 */
+ PROGRESS("progress"),
+ /** エピローグ進行中。 */
+ EPILOGUE("epilogue"),
+ /** ゲーム終了。 */
+ GAMEOVER("gameover"),
+ /** 状況不明だが村の存在は確認。 */
+ UNKNOWN("unknown"),
+ ;
+
+ private final String xmlName;
+
+ /**
+ * コンストラクタ。
+ * @param xmlName XML用シンボル
+ */
+ private VillageState(String xmlName){
+ this.xmlName = xmlName.intern();
+ return;
+ }
+
+ /**
+ * XML用シンボルを取得する。
+ * @return XML用シンボル
+ */
+ public String getXmlName(){
+ return this.xmlName;
+ }
+
+}
-/*\r
- * village tag-name\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-/**\r
- * 村名一覧。\r
- */\r
-public enum VillageTag{\r
-\r
- /** 平凡な村。 */\r
- HEIBON ("平凡な村"),\r
- /** 星狩りの村。 */\r
- HOSHIKARI ("星狩りの村"),\r
- /** 日の差さぬ村。 */\r
- HINOSASANU ("日の差さぬ村"),\r
- /** 隠された村。 */\r
- KAKUSARETA ("隠された村"),\r
- /** 日の沈まぬ村。 */\r
- HINOSHIZUMANU ("日の沈まぬ村"),\r
- /** 消え行く村。 */\r
- KIEYUKU ("消え行く村"),\r
- /** 怪しげな村。 */\r
- AYASHIGE ("怪しげな村"),\r
- /** 山影の村。 */\r
- YAMAKAGE ("山影の村"),\r
- /** 平和な村。 */\r
- HEIWA ("平和な村"),\r
- /** 嘘つきの村。 */\r
- USOTSUKI ("嘘つきの村"),\r
- /** 悲しみの村。 */\r
- KANASHIMI ("悲しみの村"),\r
- /** 恐ろしい村。 */\r
- OSOROSHII ("恐ろしい村"),\r
- /** 盆地の村。 */\r
- BONCHI ("盆地の村"),\r
- /** 幻の村。 */\r
- MABOROSHI ("幻の村"),\r
- /** 謀略の村。 */\r
- BOURYAKU ("謀略の村"),\r
- /** 最果ての村。 */\r
- SAIHATE ("最果ての村"),\r
- /** 封印の村。 */\r
- HUUIN ("封印の村"),\r
- /** 海辺の村。 */\r
- UMIBE ("海辺の村"),\r
- /** 開拓者の村。 */\r
- KAITAKUSHA ("開拓者の村"),\r
- /** 断崖の村。 */\r
- DANGAI ("断崖の村"),\r
- /** 出会いの村。 */\r
- DEAI ("出会いの村"),\r
- /** ふもとの村。 */\r
- HUMOTO ("ふもとの村"),\r
- /** 峠の村。 */\r
- TOUGE ("峠の村"),\r
- /** 血塗られた村。 */\r
- CHINURARETA ("血塗られた村"),\r
- /** 僻地の村。 */\r
- HEKICHI ("僻地の村"),\r
- /** 安らぎの村。 */\r
- YASURAGI ("安らぎの村"),\r
- /** 最後の村。 */\r
- SAIGO ("最後の村"),\r
- /** 疑心暗鬼の村。 */\r
- GISHINANKI ("疑心暗鬼の村"),\r
- /** 呪われた村。 */\r
- NOROWARETA ("呪われた村"),\r
- /** 新緑の村。 */\r
- SHINRYOKU ("新緑の村"),\r
- /** 荒地の村。 */\r
- ARECHI ("荒地の村"),\r
- /** 残された村。 */\r
- NOKOSARETA ("残された村"),\r
- /** 小さな村。 */\r
- CHIISANA ("小さな村"),\r
- /** 極寒の村。 */\r
- GOKUKAN ("極寒の村"),\r
- /** 見捨てられた村。 */\r
- MISUTERARETA ("見捨てられた村"),\r
- /** 希望の村。 */\r
- KIBOU ("希望の村"),\r
- /** 裏切りの村。 */\r
- URAGIRI ("裏切りの村"),\r
- /** 沈黙の村。 */\r
- CHINMOKU ("沈黙の村"),\r
- /** 雨の止まぬ村。 */\r
- AMENOYAMANU ("雨の止まぬ村"),\r
- /** 辺境の村。 */\r
- HENKYOU ("辺境の村"),\r
- /** 忘れられた村。 */\r
- WASURERARETA ("忘れられた村"),\r
- /** 谷底の村。 */\r
- TANIZOKO ("谷底の村"),\r
- ;\r
-\r
- private static final Map<String, VillageTag> TAGMAP =\r
- new HashMap<String, VillageTag>();\r
- private static final VillageTag[] VALUES = values();\r
- private static final int VALUE_NUM = values().length;\r
- private static final Pattern VTAG_PATTERN;\r
-\r
- static{\r
- for(VillageTag vtag : VALUES){\r
- String tagName = vtag.getTagName();\r
- TAGMAP.put(tagName, vtag);\r
- }\r
-\r
- StringBuilder vtagRegex = new StringBuilder();\r
- for(VillageTag tag : values()){\r
- if(vtagRegex.length() > 0){\r
- vtagRegex.append('|');\r
- }\r
- vtagRegex.append('(')\r
- .append(Pattern.quote(tag.getTagName()))\r
- .append(')');\r
- }\r
- VTAG_PATTERN = Pattern.compile(vtagRegex.toString());\r
- }\r
-\r
-\r
- private final String tagName;\r
-\r
-\r
- /**\r
- * 隠しコンストラクタ。\r
- * @param tagName 村名\r
- */\r
- private VillageTag(String tagName){\r
- this.tagName = tagName.intern();\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * 村名からEnumメンバを得る。\r
- * @param tagName 村名\r
- * @return Enumメンバ\r
- */\r
- public static VillageTag tagNameToVillageTag(String tagName){\r
- VillageTag result = TAGMAP.get(tagName);\r
- return result;\r
- }\r
-\r
- /**\r
- * 与えられたマッチャ先頭がいずれかの村名に一致しないか調べる。\r
- * @param matcher マッチャ\r
- * @return 一致した村名。どれにも一致しなければnull。\r
- */\r
- public static VillageTag lookingAtVillageTag(Matcher matcher){\r
- matcher.usePattern(VTAG_PATTERN);\r
-\r
- if( ! matcher.lookingAt() ) return null;\r
- int groupCt = matcher.groupCount();\r
- for(int group = 1; group <= groupCt; group++){\r
- if(matcher.start(group) >= 0){\r
- VillageTag tag = values()[group - 1];\r
- return tag;\r
- }\r
- }\r
-\r
- return null;\r
- }\r
-\r
-\r
- /**\r
- * 村名を得る。\r
- * @return 村名\r
- */\r
- public String getTagName(){\r
- return this.tagName;\r
- }\r
-\r
- /**\r
- * 次のEnumメンバを得る。\r
- * 先頭と末尾は循環する。\r
- * @return 次のEnumメンバ\r
- */\r
- public VillageTag getNextVillageTag(){\r
- int ordinal = ordinal();\r
- ordinal = (ordinal+1) % VALUE_NUM;\r
- VillageTag result = VALUES[ordinal];\r
- return result;\r
- }\r
-\r
- /**\r
- * 前のEnumメンバを得る。\r
- * 先頭と末尾は循環する。\r
- * @return 前のEnumメンバ\r
- */\r
- public VillageTag getPrevVillageTag(){\r
- int ordinal = ordinal();\r
- ordinal--;\r
- if(ordinal < 0) ordinal += VALUE_NUM;\r
- VillageTag result = VALUES[ordinal];\r
- return result;\r
- }\r
-\r
-}\r
+/*
+ * village tag-name
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * 村名一覧。
+ */
+public enum VillageTag{
+
+ /** 平凡な村。 */
+ HEIBON ("平凡な村"),
+ /** 星狩りの村。 */
+ HOSHIKARI ("星狩りの村"),
+ /** 日の差さぬ村。 */
+ HINOSASANU ("日の差さぬ村"),
+ /** 隠された村。 */
+ KAKUSARETA ("隠された村"),
+ /** 日の沈まぬ村。 */
+ HINOSHIZUMANU ("日の沈まぬ村"),
+ /** 消え行く村。 */
+ KIEYUKU ("消え行く村"),
+ /** 怪しげな村。 */
+ AYASHIGE ("怪しげな村"),
+ /** 山影の村。 */
+ YAMAKAGE ("山影の村"),
+ /** 平和な村。 */
+ HEIWA ("平和な村"),
+ /** 嘘つきの村。 */
+ USOTSUKI ("嘘つきの村"),
+ /** 悲しみの村。 */
+ KANASHIMI ("悲しみの村"),
+ /** 恐ろしい村。 */
+ OSOROSHII ("恐ろしい村"),
+ /** 盆地の村。 */
+ BONCHI ("盆地の村"),
+ /** 幻の村。 */
+ MABOROSHI ("幻の村"),
+ /** 謀略の村。 */
+ BOURYAKU ("謀略の村"),
+ /** 最果ての村。 */
+ SAIHATE ("最果ての村"),
+ /** 封印の村。 */
+ HUUIN ("封印の村"),
+ /** 海辺の村。 */
+ UMIBE ("海辺の村"),
+ /** 開拓者の村。 */
+ KAITAKUSHA ("開拓者の村"),
+ /** 断崖の村。 */
+ DANGAI ("断崖の村"),
+ /** 出会いの村。 */
+ DEAI ("出会いの村"),
+ /** ふもとの村。 */
+ HUMOTO ("ふもとの村"),
+ /** 峠の村。 */
+ TOUGE ("峠の村"),
+ /** 血塗られた村。 */
+ CHINURARETA ("血塗られた村"),
+ /** 僻地の村。 */
+ HEKICHI ("僻地の村"),
+ /** 安らぎの村。 */
+ YASURAGI ("安らぎの村"),
+ /** 最後の村。 */
+ SAIGO ("最後の村"),
+ /** 疑心暗鬼の村。 */
+ GISHINANKI ("疑心暗鬼の村"),
+ /** 呪われた村。 */
+ NOROWARETA ("呪われた村"),
+ /** 新緑の村。 */
+ SHINRYOKU ("新緑の村"),
+ /** 荒地の村。 */
+ ARECHI ("荒地の村"),
+ /** 残された村。 */
+ NOKOSARETA ("残された村"),
+ /** 小さな村。 */
+ CHIISANA ("小さな村"),
+ /** 極寒の村。 */
+ GOKUKAN ("極寒の村"),
+ /** 見捨てられた村。 */
+ MISUTERARETA ("見捨てられた村"),
+ /** 希望の村。 */
+ KIBOU ("希望の村"),
+ /** 裏切りの村。 */
+ URAGIRI ("裏切りの村"),
+ /** 沈黙の村。 */
+ CHINMOKU ("沈黙の村"),
+ /** 雨の止まぬ村。 */
+ AMENOYAMANU ("雨の止まぬ村"),
+ /** 辺境の村。 */
+ HENKYOU ("辺境の村"),
+ /** 忘れられた村。 */
+ WASURERARETA ("忘れられた村"),
+ /** 谷底の村。 */
+ TANIZOKO ("谷底の村"),
+ ;
+
+ private static final Map<String, VillageTag> TAGMAP =
+ new HashMap<String, VillageTag>();
+ private static final VillageTag[] VALUES = values();
+ private static final int VALUE_NUM = values().length;
+ private static final Pattern VTAG_PATTERN;
+
+ static{
+ for(VillageTag vtag : VALUES){
+ String tagName = vtag.getTagName();
+ TAGMAP.put(tagName, vtag);
+ }
+
+ StringBuilder vtagRegex = new StringBuilder();
+ for(VillageTag tag : values()){
+ if(vtagRegex.length() > 0){
+ vtagRegex.append('|');
+ }
+ vtagRegex.append('(')
+ .append(Pattern.quote(tag.getTagName()))
+ .append(')');
+ }
+ VTAG_PATTERN = Pattern.compile(vtagRegex.toString());
+ }
+
+
+ private final String tagName;
+
+
+ /**
+ * 隠しコンストラクタ。
+ * @param tagName 村名
+ */
+ private VillageTag(String tagName){
+ this.tagName = tagName.intern();
+ return;
+ }
+
+
+ /**
+ * 村名からEnumメンバを得る。
+ * @param tagName 村名
+ * @return Enumメンバ
+ */
+ public static VillageTag tagNameToVillageTag(String tagName){
+ VillageTag result = TAGMAP.get(tagName);
+ return result;
+ }
+
+ /**
+ * 与えられたマッチャ先頭がいずれかの村名に一致しないか調べる。
+ * @param matcher マッチャ
+ * @return 一致した村名。どれにも一致しなければnull。
+ */
+ public static VillageTag lookingAtVillageTag(Matcher matcher){
+ matcher.usePattern(VTAG_PATTERN);
+
+ if( ! matcher.lookingAt() ) return null;
+ int groupCt = matcher.groupCount();
+ for(int group = 1; group <= groupCt; group++){
+ if(matcher.start(group) >= 0){
+ VillageTag tag = values()[group - 1];
+ return tag;
+ }
+ }
+
+ return null;
+ }
+
+
+ /**
+ * 村名を得る。
+ * @return 村名
+ */
+ public String getTagName(){
+ return this.tagName;
+ }
+
+ /**
+ * 次のEnumメンバを得る。
+ * 先頭と末尾は循環する。
+ * @return 次のEnumメンバ
+ */
+ public VillageTag getNextVillageTag(){
+ int ordinal = ordinal();
+ ordinal = (ordinal+1) % VALUE_NUM;
+ VillageTag result = VALUES[ordinal];
+ return result;
+ }
+
+ /**
+ * 前のEnumメンバを得る。
+ * 先頭と末尾は循環する。
+ * @return 前のEnumメンバ
+ */
+ public VillageTag getPrevVillageTag(){
+ int ordinal = ordinal();
+ ordinal--;
+ if(ordinal < 0) ordinal += VALUE_NUM;
+ VillageTag result = VALUES[ordinal];
+ return result;
+ }
+
+}
-/*\r
- * XML resources\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.FileNotFoundException;\r
-import java.net.MalformedURLException;\r
-import java.net.URI;\r
-import java.net.URISyntaxException;\r
-import java.net.URL;\r
-import java.util.Collections;\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-/**\r
- * このパッケージに含まれるXML関連の各種リソース、およびWeb上の原本。\r
- * 相対URIのベースはこのクラスのコードベース。\r
- */\r
-public final class XmlResource{\r
-\r
- /** 独自XMLスキーマ 外部URI名の前置詞。 {@value} */\r
- public static final String O_XSDBASE =\r
- "http://jindolf.sourceforge.jp/xml/xsd/";\r
- /** 独自XMLスキーマ 内部リソース名の前置詞。 {@value} */\r
- public static final String I_XSDBASE = "resources/xsd/";\r
- /** XML 内部リソース名の前置詞。 {@value} */\r
- public static final String I_XMLBASE = "resources/xml/";\r
-\r
- /** パブリックXMLスキーマ 外部URI名。 {@value} */\r
- public static final String O_RES_EXTXML =\r
- "http://www.w3.org/2001/xml.xsd";\r
- /** 基本型定義XMLスキーマ 外部URI名。 {@value} */\r
- public static final String O_RES_CORETYPE =\r
- O_XSDBASE + "coreType-090829.xsd";\r
- /** 文書定義XMLスキーマ 外部URI名。 {@value} */\r
- public static final String O_RES_COREXML =\r
- O_XSDBASE + "coreXML-090829.xsd";\r
-\r
- /** パブリックXMLスキーマ 内部リソース名。 {@value} */\r
- public static final String I_RES_EXTXML =\r
- I_XSDBASE + "ext/xml-2009-01.xsd";\r
- /** 基本型定義XMLスキーマ 内部リソース名。 {@value} */\r
- public static final String I_RES_CORETYPE =\r
- I_XSDBASE + "private/coreType-090829.xsd";\r
- /** 文書定義XMLスキーマ 内部リソース名。 {@value} */\r
- public static final String I_RES_COREXML =\r
- I_XSDBASE + "private/coreXML-090829.xsd";\r
-\r
- /** 国定義 内部リソース名。 {@value} */\r
- public static final String I_RES_LANDDEF =\r
- I_XMLBASE + "landDefList.xml";\r
- /** キャラ定義 内部リソース名。 {@value} */\r
- public static final String I_RES_AVATARDEF =\r
- I_XMLBASE + "preDefAvatarList.xml";\r
-\r
- /** パブリックXMLスキーマ 外部URI。 */\r
- public static final URI O_URI_EXTXML;\r
- /** 基本型定義XMLスキーマ 外部URI。 */\r
- public static final URI O_URI_CORETYPE;\r
- /** 文書定義XMLスキーマ 外部URI。 */\r
- public static final URI O_URI_COREXML;\r
-\r
- /** パブリックXMLスキーマ 内部リソースURI。 */\r
- public static final URI I_URI_EXTXML;\r
- /** 基本型定義XMLスキーマ 内部リソースURI。 */\r
- public static final URI I_URI_CORETYPE;\r
- /** 文書定義XMLスキーマ 内部リソースURI。 */\r
- public static final URI I_URI_COREXML;\r
-\r
- /** 国定義 内部リソースURI。 */\r
- public static final URI I_URI_LANDDEF;\r
- /** キャラ定義 内部リソースURI。 */\r
- public static final URI I_URI_AVATARDEF;\r
-\r
-\r
- /** 文書定義XMLスキーマ 内部リソースURL。 */\r
- public static final URL I_URL_COREXML;\r
- /** 国定義 内部リソースURL。 */\r
- public static final URL I_URL_LANDDEF;\r
- /** キャラ定義 内部リソースURL。 */\r
- public static final URL I_URL_AVATARDEF;\r
-\r
-\r
- /**\r
- * Web上の原本からリソースへの変換を記述したマップ。\r
- */\r
- public static final Map<URI, URI> RESOLVE_MAP;\r
-\r
-\r
- private static final Class<?> THISCLASS = XmlResource.class;\r
-\r
-\r
- static{\r
- new XmlResource();\r
-\r
- O_URI_EXTXML = loadOuter(O_RES_EXTXML);\r
- O_URI_CORETYPE = loadOuter(O_RES_CORETYPE);\r
- O_URI_COREXML = loadOuter(O_RES_COREXML);\r
-\r
- try{\r
- I_URI_EXTXML = loadInner(I_RES_EXTXML);\r
- I_URI_CORETYPE = loadInner(I_RES_CORETYPE);\r
- I_URI_COREXML = loadInner(I_RES_COREXML);\r
- I_URI_LANDDEF = loadInner(I_RES_LANDDEF);\r
- I_URI_AVATARDEF = loadInner(I_RES_AVATARDEF);\r
- }catch(FileNotFoundException e){\r
- throw new ExceptionInInitializerError(e);\r
- }catch(URISyntaxException e){\r
- throw new ExceptionInInitializerError(e);\r
- }\r
-\r
- try{\r
- I_URL_COREXML = I_URI_COREXML.toURL();\r
- I_URL_LANDDEF = I_URI_LANDDEF.toURL();\r
- I_URL_AVATARDEF = I_URI_AVATARDEF.toURL();\r
- }catch(MalformedURLException e){\r
- throw new ExceptionInInitializerError(e);\r
- }\r
-\r
- Map<URI, URI> map = new HashMap<URI, URI>();\r
- map.put(O_URI_EXTXML, I_URI_EXTXML);\r
- map.put(O_URI_CORETYPE, I_URI_CORETYPE);\r
- map.put(O_URI_COREXML, I_URI_COREXML);\r
- RESOLVE_MAP = Collections.unmodifiableMap(map);\r
- }\r
-\r
-\r
- /**\r
- * 隠れコンストラクタ。\r
- */\r
- private XmlResource(){\r
- super();\r
- assert this.getClass().equals(THISCLASS);\r
- return;\r
- }\r
-\r
-\r
- /**\r
- * 内部リソースのURIを得る。\r
- * @param res リソース名\r
- * @return URI\r
- * @throws FileNotFoundException リソースが見つからない。\r
- * @throws URISyntaxException URI書式が変。\r
- */\r
- private static URI loadInner(String res)\r
- throws FileNotFoundException,\r
- URISyntaxException {\r
- URL url = THISCLASS.getResource(res);\r
- if(url == null) throw new FileNotFoundException(res);\r
- URI result = url.toURI().normalize();\r
- return result;\r
- }\r
-\r
- /**\r
- * 外部リソースのURIを得る。\r
- * @param http 外部リソース名\r
- * @return URI\r
- */\r
- private static URI loadOuter(String http){\r
- URI uri = URI.create(http).normalize();\r
- return uri;\r
- }\r
-\r
-}\r
+/*
+ * XML resources
+ *
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.FileNotFoundException;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * このパッケージに含まれるXML関連の各種リソース、およびWeb上の原本。
+ * 相対URIのベースはこのクラスのコードベース。
+ */
+public final class XmlResource{
+
+ /** 独自XMLスキーマ 外部URI名の前置詞。 {@value} */
+ public static final String O_XSDBASE =
+ "http://jindolf.sourceforge.jp/xml/xsd/";
+ /** 独自XMLスキーマ 内部リソース名の前置詞。 {@value} */
+ public static final String I_XSDBASE = "resources/xsd/";
+ /** XML 内部リソース名の前置詞。 {@value} */
+ public static final String I_XMLBASE = "resources/xml/";
+
+ /** パブリックXMLスキーマ 外部URI名。 {@value} */
+ public static final String O_RES_EXTXML =
+ "http://www.w3.org/2001/xml.xsd";
+ /** 基本型定義XMLスキーマ 外部URI名。 {@value} */
+ public static final String O_RES_CORETYPE =
+ O_XSDBASE + "coreType-090829.xsd";
+ /** 文書定義XMLスキーマ 外部URI名。 {@value} */
+ public static final String O_RES_COREXML =
+ O_XSDBASE + "coreXML-090829.xsd";
+
+ /** パブリックXMLスキーマ 内部リソース名。 {@value} */
+ public static final String I_RES_EXTXML =
+ I_XSDBASE + "ext/xml-2009-01.xsd";
+ /** 基本型定義XMLスキーマ 内部リソース名。 {@value} */
+ public static final String I_RES_CORETYPE =
+ I_XSDBASE + "private/coreType-090829.xsd";
+ /** 文書定義XMLスキーマ 内部リソース名。 {@value} */
+ public static final String I_RES_COREXML =
+ I_XSDBASE + "private/coreXML-090829.xsd";
+
+ /** 国定義 内部リソース名。 {@value} */
+ public static final String I_RES_LANDDEF =
+ I_XMLBASE + "landDefList.xml";
+ /** キャラ定義 内部リソース名。 {@value} */
+ public static final String I_RES_AVATARDEF =
+ I_XMLBASE + "preDefAvatarList.xml";
+
+ /** パブリックXMLスキーマ 外部URI。 */
+ public static final URI O_URI_EXTXML;
+ /** 基本型定義XMLスキーマ 外部URI。 */
+ public static final URI O_URI_CORETYPE;
+ /** 文書定義XMLスキーマ 外部URI。 */
+ public static final URI O_URI_COREXML;
+
+ /** パブリックXMLスキーマ 内部リソースURI。 */
+ public static final URI I_URI_EXTXML;
+ /** 基本型定義XMLスキーマ 内部リソースURI。 */
+ public static final URI I_URI_CORETYPE;
+ /** 文書定義XMLスキーマ 内部リソースURI。 */
+ public static final URI I_URI_COREXML;
+
+ /** 国定義 内部リソースURI。 */
+ public static final URI I_URI_LANDDEF;
+ /** キャラ定義 内部リソースURI。 */
+ public static final URI I_URI_AVATARDEF;
+
+
+ /** 文書定義XMLスキーマ 内部リソースURL。 */
+ public static final URL I_URL_COREXML;
+ /** 国定義 内部リソースURL。 */
+ public static final URL I_URL_LANDDEF;
+ /** キャラ定義 内部リソースURL。 */
+ public static final URL I_URL_AVATARDEF;
+
+
+ /**
+ * Web上の原本からリソースへの変換を記述したマップ。
+ */
+ public static final Map<URI, URI> RESOLVE_MAP;
+
+
+ private static final Class<?> THISCLASS = XmlResource.class;
+
+
+ static{
+ new XmlResource();
+
+ O_URI_EXTXML = loadOuter(O_RES_EXTXML);
+ O_URI_CORETYPE = loadOuter(O_RES_CORETYPE);
+ O_URI_COREXML = loadOuter(O_RES_COREXML);
+
+ try{
+ I_URI_EXTXML = loadInner(I_RES_EXTXML);
+ I_URI_CORETYPE = loadInner(I_RES_CORETYPE);
+ I_URI_COREXML = loadInner(I_RES_COREXML);
+ I_URI_LANDDEF = loadInner(I_RES_LANDDEF);
+ I_URI_AVATARDEF = loadInner(I_RES_AVATARDEF);
+ }catch(FileNotFoundException e){
+ throw new ExceptionInInitializerError(e);
+ }catch(URISyntaxException e){
+ throw new ExceptionInInitializerError(e);
+ }
+
+ try{
+ I_URL_COREXML = I_URI_COREXML.toURL();
+ I_URL_LANDDEF = I_URI_LANDDEF.toURL();
+ I_URL_AVATARDEF = I_URI_AVATARDEF.toURL();
+ }catch(MalformedURLException e){
+ throw new ExceptionInInitializerError(e);
+ }
+
+ Map<URI, URI> map = new HashMap<URI, URI>();
+ map.put(O_URI_EXTXML, I_URI_EXTXML);
+ map.put(O_URI_CORETYPE, I_URI_CORETYPE);
+ map.put(O_URI_COREXML, I_URI_COREXML);
+ RESOLVE_MAP = Collections.unmodifiableMap(map);
+ }
+
+
+ /**
+ * 隠れコンストラクタ。
+ */
+ private XmlResource(){
+ super();
+ assert this.getClass().equals(THISCLASS);
+ return;
+ }
+
+
+ /**
+ * 内部リソースのURIを得る。
+ * @param res リソース名
+ * @return URI
+ * @throws FileNotFoundException リソースが見つからない。
+ * @throws URISyntaxException URI書式が変。
+ */
+ private static URI loadInner(String res)
+ throws FileNotFoundException,
+ URISyntaxException {
+ URL url = THISCLASS.getResource(res);
+ if(url == null) throw new FileNotFoundException(res);
+ URI result = url.toURI().normalize();
+ return result;
+ }
+
+ /**
+ * 外部リソースのURIを得る。
+ * @param http 外部リソース名
+ * @return URI
+ */
+ private static URI loadOuter(String http){
+ URI uri = URI.create(http).normalize();
+ return uri;
+ }
+
+}
-/*\r
- * Jindolf core パッケージコメント\r
- *\r
- * このファイルは、SunJDK5.0以降に含まれるJavadoc用に用意された、\r
- * 特別な名前を持つソースファイルです。\r
- * このファイルはソースコードを含まず、\r
- * パッケージコメントとパッケージ宣言のみが含まれます。\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2008 olyutorskii\r
- */\r
-\r
-/**\r
- * このライブラリ「JinCore」は、\r
- * Jindolf プロジェクトのコア共通部分を構成するパッケージです。\r
- *\r
- * Jindolfは、CGIゲーム「人狼BBS」の専用クライアント開発プロジェクトです。\r
- *\r
- * JinCoreライブラリは、Jindolf以外の人狼BBSクライアント制作者向けに、\r
- * Jindolfの機能の一部を提供することを目的に発足した、派生プロジェクトです。\r
- *\r
- * <hr>\r
- *\r
- * <p>\r
- * The MIT License\r
- * </p>\r
- * <p>\r
- * Copyright(c) 2009 olyutorskii\r
- * </p>\r
- * <p>\r
- * Permission is hereby granted, free of charge, to any person obtaining a\r
- * copy of this software and associated documentation files (the "Software"),\r
- * to deal in the Software without restriction, including without limitation\r
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,\r
- * and/or sell copies of the Software, and to permit persons to whom the\r
- * Software is furnished to do so, subject to the following conditions:\r
- * </p>\r
- * <p>\r
- * The above copyright notice and this permission notice shall be included in\r
- * all copies or substantial portions of the Software.\r
- * </p>\r
- * <p>\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\r
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r
- * OTHER DEALINGS IN THE SOFTWARE.\r
- * </p>\r
- *\r
- * <hr>\r
- *\r
- * @see <a href="http://jindolf.sourceforge.jp/">\r
- * Jindolfポータルサイト</a>\r
- * @see <a href="http://sourceforge.jp/projects/jindolf/devel/">\r
- * Jindolf開発プロジェクト</a>\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-/* EOF */\r
+/*
+ * Jindolf core パッケージコメント
+ *
+ * このファイルは、SunJDK5.0以降に含まれるJavadoc用に用意された、
+ * 特別な名前を持つソースファイルです。
+ * このファイルはソースコードを含まず、
+ * パッケージコメントとパッケージ宣言のみが含まれます。
+ *
+ * License : The MIT License
+ * Copyright(c) 2008 olyutorskii
+ */
+
+/**
+ * このライブラリ「JinCore」は、
+ * Jindolf プロジェクトのコア共通部分を構成するパッケージです。
+ *
+ * Jindolfは、CGIゲーム「人狼BBS」の専用クライアント開発プロジェクトです。
+ *
+ * JinCoreライブラリは、Jindolf以外の人狼BBSクライアント制作者向けに、
+ * Jindolfの機能の一部を提供することを目的に発足した、派生プロジェクトです。
+ *
+ * <hr>
+ *
+ * <p>
+ * The MIT License
+ * </p>
+ * <p>
+ * Copyright(c) 2009 olyutorskii
+ * </p>
+ * <p>
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ * </p>
+ * <p>
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * </p>
+ * <p>
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ * </p>
+ *
+ * <hr>
+ *
+ * @see <a href="http://jindolf.sourceforge.jp/">
+ * Jindolfポータルサイト</a>
+ * @see <a href="http://sourceforge.jp/projects/jindolf/devel/">
+ * Jindolf開発プロジェクト</a>
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+/* EOF */
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2011 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.util.GregorianCalendar;\r
-import java.util.TimeZone;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- *\r
- */\r
-public class DateUtilsTest {\r
-\r
- public DateUtilsTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception {\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception {\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of parseISO8601 method, of class LandDef.\r
- */\r
- @Test\r
- public void testParseISO8601(){\r
- System.out.println("parseISO8601");\r
-\r
- CharSequence seq;\r
- long result;\r
-\r
- GregorianCalendar cal;\r
- cal = new GregorianCalendar();\r
- cal.clear();\r
-\r
- TimeZone tz;\r
- tz = TimeZone.getTimeZone("GMT+00");\r
- cal.setTimeZone(tz);\r
-\r
- seq = "1990-01-01T00:00:00Z";\r
- result = DateUtils.parseISO8601(seq);\r
- cal.set(1990, 1-1, 1, 0, 0, 0);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "1991-02-03T04:05:06Z";\r
- result = DateUtils.parseISO8601(seq);\r
- cal.set(1991, 2-1, 3, 4, 5, 6);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "2099-12-31T23:59:59Z";\r
- result = DateUtils.parseISO8601(seq);\r
- cal.set(2099, 12-1, 31, 23, 59, 59);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "1991-02-03T04:05:06+23";\r
- result = DateUtils.parseISO8601(seq);\r
- tz = TimeZone.getTimeZone("GMT+23");\r
- cal.setTimeZone(tz);\r
- cal.set(1991, 2-1, 3, 4, 5, 6);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "1991-02-03T04:05:06-23";\r
- result = DateUtils.parseISO8601(seq);\r
- tz = TimeZone.getTimeZone("GMT-23");\r
- cal.setTimeZone(tz);\r
- cal.set(1991, 2-1, 3, 4, 5, 6);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "1991-02-03T04:05:06+2345";\r
- result = DateUtils.parseISO8601(seq);\r
- tz = TimeZone.getTimeZone("GMT+2345");\r
- cal.setTimeZone(tz);\r
- cal.set(1991, 2-1, 3, 4, 5, 6);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "1991-02-03T04:05:06+23:45";\r
- result = DateUtils.parseISO8601(seq);\r
- tz = TimeZone.getTimeZone("GMT+2345");\r
- cal.setTimeZone(tz);\r
- cal.set(1991, 2-1, 3, 4, 5, 6);\r
- assertEquals(cal.getTimeInMillis(), result);\r
-\r
- seq = "!!!";\r
- try{\r
- result = DateUtils.parseISO8601(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- // GOOD\r
- }\r
-\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2011 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+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 DateUtilsTest {
+
+ public DateUtilsTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of parseISO8601 method, of class LandDef.
+ */
+ @Test
+ public void testParseISO8601(){
+ System.out.println("parseISO8601");
+
+ CharSequence seq;
+ long result;
+
+ GregorianCalendar cal;
+ cal = new GregorianCalendar();
+ cal.clear();
+
+ TimeZone tz;
+ tz = TimeZone.getTimeZone("GMT+00");
+ cal.setTimeZone(tz);
+
+ seq = "1990-01-01T00:00:00Z";
+ result = DateUtils.parseISO8601(seq);
+ cal.set(1990, 1-1, 1, 0, 0, 0);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "1991-02-03T04:05:06Z";
+ result = DateUtils.parseISO8601(seq);
+ cal.set(1991, 2-1, 3, 4, 5, 6);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "2099-12-31T23:59:59Z";
+ result = DateUtils.parseISO8601(seq);
+ cal.set(2099, 12-1, 31, 23, 59, 59);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "1991-02-03T04:05:06+23";
+ result = DateUtils.parseISO8601(seq);
+ tz = TimeZone.getTimeZone("GMT+23");
+ cal.setTimeZone(tz);
+ cal.set(1991, 2-1, 3, 4, 5, 6);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "1991-02-03T04:05:06-23";
+ result = DateUtils.parseISO8601(seq);
+ tz = TimeZone.getTimeZone("GMT-23");
+ cal.setTimeZone(tz);
+ cal.set(1991, 2-1, 3, 4, 5, 6);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "1991-02-03T04:05:06+2345";
+ result = DateUtils.parseISO8601(seq);
+ tz = TimeZone.getTimeZone("GMT+2345");
+ cal.setTimeZone(tz);
+ cal.set(1991, 2-1, 3, 4, 5, 6);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "1991-02-03T04:05:06+23:45";
+ result = DateUtils.parseISO8601(seq);
+ tz = TimeZone.getTimeZone("GMT+2345");
+ cal.setTimeZone(tz);
+ cal.set(1991, 2-1, 3, 4, 5, 6);
+ assertEquals(cal.getTimeInMillis(), result);
+
+ seq = "!!!";
+ try{
+ result = DateUtils.parseISO8601(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ // GOOD
+ }
+
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class DestinyTest {\r
-\r
- public DestinyTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class Destiny.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- Destiny[] values = Destiny.values();\r
- assertEquals(5, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class Destiny.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getMessage method, of class Destiny.\r
- */\r
- @Test\r
- public void testGetMessage(){\r
- System.out.println("getMessage");\r
- assertEquals("生存", Destiny.ALIVE.getMessage());\r
- assertEquals("突然死", Destiny.SUDDENDEATH.getMessage());\r
- assertEquals("処刑死", Destiny.EXECUTED.getMessage());\r
- assertEquals("襲撃死", Destiny.EATEN.getMessage());\r
- assertEquals("ハム溶け", Destiny.DISSOLVE.getMessage());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 DestinyTest {
+
+ public DestinyTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class Destiny.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ Destiny[] values = Destiny.values();
+ assertEquals(5, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class Destiny.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getMessage method, of class Destiny.
+ */
+ @Test
+ public void testGetMessage(){
+ System.out.println("getMessage");
+ assertEquals("生存", Destiny.ALIVE.getMessage());
+ assertEquals("突然死", Destiny.SUDDENDEATH.getMessage());
+ assertEquals("処刑死", Destiny.EXECUTED.getMessage());
+ assertEquals("襲撃死", Destiny.EATEN.getMessage());
+ assertEquals("ハム溶け", Destiny.DISSOLVE.getMessage());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class DisclosureTypeTest{\r
-\r
- public DisclosureTypeTest(){\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp(){\r
- }\r
-\r
- @After\r
- public void tearDown(){\r
- }\r
-\r
- /**\r
- * Test of values method, of class DisclosureType.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- DisclosureType[] types = DisclosureType.values();\r
- assertEquals(3, types.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class DisclosureType.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class DisclosureType.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals("complete", DisclosureType.COMPLETE.getXmlName());\r
- assertEquals("uncomplete", DisclosureType.UNCOMPLETE.getXmlName());\r
- assertEquals("hot", DisclosureType.HOT.getXmlName());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 DisclosureTypeTest{
+
+ public DisclosureTypeTest(){
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp(){
+ }
+
+ @After
+ public void tearDown(){
+ }
+
+ /**
+ * Test of values method, of class DisclosureType.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ DisclosureType[] types = DisclosureType.values();
+ assertEquals(3, types.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class DisclosureType.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class DisclosureType.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals("complete", DisclosureType.COMPLETE.getXmlName());
+ assertEquals("uncomplete", DisclosureType.UNCOMPLETE.getXmlName());
+ assertEquals("hot", DisclosureType.HOT.getXmlName());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class EventFamilyTest {\r
-\r
- public EventFamilyTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class EventFamily.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- EventFamily[] values = EventFamily.values();\r
- assertEquals(3, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class EventFamily.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getDivClass method, of class EventFamily.\r
- */\r
- @Test\r
- public void testGetDivClass(){\r
- System.out.println("getDivClass");\r
- assertEquals("announce", EventFamily.ANNOUNCE.getDivClass());\r
- assertEquals("order", EventFamily.ORDER.getDivClass());\r
- assertEquals("extra", EventFamily.EXTRA.getDivClass());\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class EventFamily.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals(EventFamily.ANNOUNCE.getXmlName(), EventFamily.ANNOUNCE.getDivClass());\r
- assertEquals(EventFamily.ORDER.getXmlName(), EventFamily.ORDER.getDivClass());\r
- assertEquals(EventFamily.EXTRA.getXmlName(), EventFamily.EXTRA.getDivClass());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 EventFamilyTest {
+
+ public EventFamilyTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class EventFamily.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ EventFamily[] values = EventFamily.values();
+ assertEquals(3, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class EventFamily.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getDivClass method, of class EventFamily.
+ */
+ @Test
+ public void testGetDivClass(){
+ System.out.println("getDivClass");
+ assertEquals("announce", EventFamily.ANNOUNCE.getDivClass());
+ assertEquals("order", EventFamily.ORDER.getDivClass());
+ assertEquals("extra", EventFamily.EXTRA.getDivClass());
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class EventFamily.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals(EventFamily.ANNOUNCE.getXmlName(), EventFamily.ANNOUNCE.getDivClass());
+ assertEquals(EventFamily.ORDER.getXmlName(), EventFamily.ORDER.getDivClass());
+ assertEquals(EventFamily.EXTRA.getXmlName(), EventFamily.EXTRA.getDivClass());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.util.Comparator;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class GameRoleTest {\r
-\r
- public GameRoleTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class GameRole.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- GameRole[] values = GameRole.values();\r
- assertEquals(8, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class GameRole.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of lookingAtRole method, of class GameRole.\r
- */\r
- @Test\r
- public void testLookingAtRole(){\r
- System.out.println("lookingAtRole");\r
-\r
- Pattern pattern = Pattern.compile("");\r
-\r
- Matcher matcher;\r
-\r
- matcher = pattern.matcher("村人");\r
- assertEquals(GameRole.INNOCENT, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("人狼");\r
- assertEquals(GameRole.WOLF, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("占い師");\r
- assertEquals(GameRole.SEER, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("霊能者");\r
- assertEquals(GameRole.SHAMAN, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("狂人");\r
- assertEquals(GameRole.MADMAN, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("狩人");\r
- assertEquals(GameRole.HUNTER, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("共有者");\r
- assertEquals(GameRole.FRATER, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("ハムスター人間");\r
- assertEquals(GameRole.HAMSTER, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("xxx");\r
- assertNull(GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("");\r
- assertNull(GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("x村人");\r
- assertNull(GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("村");\r
- assertNull(GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("村人x");\r
- assertEquals(GameRole.INNOCENT, GameRole.lookingAtRole(matcher));\r
-\r
- matcher = pattern.matcher("x村人x");\r
- assertNull(GameRole.lookingAtRole(matcher));\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getPowerBalanceComparator method, of class GameRole.\r
- */\r
- @Test\r
- public void testGetPowerBalanceComparator(){\r
- System.out.println("getPowerBalanceComparator");\r
-\r
- Comparator<GameRole> cmp = GameRole.getPowerBalanceComparator();\r
- assertNotNull(cmp);\r
- Comparator<GameRole> cmp2 = GameRole.getPowerBalanceComparator();\r
- assertTrue(cmp == cmp2);\r
-\r
- assertTrue(cmp.compare(GameRole.INNOCENT, GameRole.INNOCENT) == 0);\r
- assertTrue(cmp.compare(GameRole.INNOCENT, GameRole.FRATER) < 0);\r
- assertTrue(cmp.compare(GameRole.FRATER, GameRole.SEER) < 0);\r
- assertTrue(cmp.compare(GameRole.SEER, GameRole.SHAMAN) < 0);\r
- assertTrue(cmp.compare(GameRole.SHAMAN, GameRole.HUNTER) < 0);\r
- assertTrue(cmp.compare(GameRole.HUNTER, GameRole.HAMSTER) < 0);\r
- assertTrue(cmp.compare(GameRole.HAMSTER, GameRole.MADMAN) < 0);\r
- assertTrue(cmp.compare(GameRole.MADMAN, GameRole.WOLF) < 0);\r
- assertTrue(cmp.compare(GameRole.WOLF, GameRole.INNOCENT) > 0);\r
- assertTrue(cmp.compare(GameRole.FRATER, GameRole.INNOCENT) > 0);\r
-\r
- assertTrue(cmp.compare(null, null) == 0);\r
- assertTrue(cmp.compare(GameRole.INNOCENT, null) > 0);\r
- assertTrue(cmp.compare(null, GameRole.INNOCENT) < 0);\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getRoleName method, of class GameRole.\r
- */\r
- @Test\r
- public void testGetRoleName(){\r
- System.out.println("getRoleName");\r
- assertEquals("村人", GameRole.INNOCENT.getRoleName());\r
- assertEquals("人狼", GameRole.WOLF.getRoleName());\r
- assertEquals("占い師", GameRole.SEER.getRoleName());\r
- assertEquals("霊能者", GameRole.SHAMAN.getRoleName());\r
- assertEquals("狂人", GameRole.MADMAN.getRoleName());\r
- assertEquals("狩人", GameRole.HUNTER.getRoleName());\r
- assertEquals("共有者", GameRole.FRATER.getRoleName());\r
- assertEquals("ハムスター人間", GameRole.HAMSTER.getRoleName());\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getShortName method, of class GameRole.\r
- */\r
- @Test\r
- public void testGetShortName(){\r
- System.out.println("getShortName");\r
- assertEquals('村', GameRole.INNOCENT.getShortName());\r
- assertEquals('狼', GameRole.WOLF.getShortName());\r
- assertEquals('占', GameRole.SEER.getShortName());\r
- assertEquals('霊', GameRole.SHAMAN.getShortName());\r
- assertEquals('狂', GameRole.MADMAN.getShortName());\r
- assertEquals('狩', GameRole.HUNTER.getShortName());\r
- assertEquals('共', GameRole.FRATER.getShortName());\r
- assertEquals('公', GameRole.HAMSTER.getShortName());\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getTeam method, of class GameRole.\r
- */\r
- @Test\r
- public void testGetTeam(){\r
- System.out.println("getTeam");\r
- assertEquals(Team.VILLAGE, GameRole.INNOCENT.getTeam());\r
- assertEquals(Team.WOLF, GameRole.WOLF.getTeam());\r
- assertEquals(Team.VILLAGE, GameRole.SEER.getTeam());\r
- assertEquals(Team.VILLAGE, GameRole.SHAMAN.getTeam());\r
- assertEquals(Team.WOLF, GameRole.MADMAN.getTeam());\r
- assertEquals(Team.VILLAGE, GameRole.HUNTER.getTeam());\r
- assertEquals(Team.VILLAGE, GameRole.FRATER.getTeam());\r
- assertEquals(Team.HAMSTER, GameRole.HAMSTER.getTeam());\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class GameRole.\r
- */\r
- @Test\r
- public void testGetXmlName() {\r
- System.out.println("getXmlName");\r
- assertEquals("innocent", GameRole.INNOCENT.getXmlName());\r
- assertEquals("wolf", GameRole.WOLF.getXmlName());\r
- assertEquals("seer", GameRole.SEER.getXmlName());\r
- assertEquals("shaman", GameRole.SHAMAN.getXmlName());\r
- assertEquals("madman", GameRole.MADMAN.getXmlName());\r
- assertEquals("hunter", GameRole.HUNTER.getXmlName());\r
- assertEquals("frater", GameRole.FRATER.getXmlName());\r
- assertEquals("hamster", GameRole.HAMSTER.getXmlName());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.util.Comparator;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+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 GameRoleTest {
+
+ public GameRoleTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class GameRole.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ GameRole[] values = GameRole.values();
+ assertEquals(8, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class GameRole.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of lookingAtRole method, of class GameRole.
+ */
+ @Test
+ public void testLookingAtRole(){
+ System.out.println("lookingAtRole");
+
+ Pattern pattern = Pattern.compile("");
+
+ Matcher matcher;
+
+ matcher = pattern.matcher("村人");
+ assertEquals(GameRole.INNOCENT, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("人狼");
+ assertEquals(GameRole.WOLF, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("占い師");
+ assertEquals(GameRole.SEER, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("霊能者");
+ assertEquals(GameRole.SHAMAN, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("狂人");
+ assertEquals(GameRole.MADMAN, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("狩人");
+ assertEquals(GameRole.HUNTER, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("共有者");
+ assertEquals(GameRole.FRATER, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("ハムスター人間");
+ assertEquals(GameRole.HAMSTER, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("xxx");
+ assertNull(GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("");
+ assertNull(GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("x村人");
+ assertNull(GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("村");
+ assertNull(GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("村人x");
+ assertEquals(GameRole.INNOCENT, GameRole.lookingAtRole(matcher));
+
+ matcher = pattern.matcher("x村人x");
+ assertNull(GameRole.lookingAtRole(matcher));
+
+ return;
+ }
+
+ /**
+ * Test of getPowerBalanceComparator method, of class GameRole.
+ */
+ @Test
+ public void testGetPowerBalanceComparator(){
+ System.out.println("getPowerBalanceComparator");
+
+ Comparator<GameRole> cmp = GameRole.getPowerBalanceComparator();
+ assertNotNull(cmp);
+ Comparator<GameRole> cmp2 = GameRole.getPowerBalanceComparator();
+ assertTrue(cmp == cmp2);
+
+ assertTrue(cmp.compare(GameRole.INNOCENT, GameRole.INNOCENT) == 0);
+ assertTrue(cmp.compare(GameRole.INNOCENT, GameRole.FRATER) < 0);
+ assertTrue(cmp.compare(GameRole.FRATER, GameRole.SEER) < 0);
+ assertTrue(cmp.compare(GameRole.SEER, GameRole.SHAMAN) < 0);
+ assertTrue(cmp.compare(GameRole.SHAMAN, GameRole.HUNTER) < 0);
+ assertTrue(cmp.compare(GameRole.HUNTER, GameRole.HAMSTER) < 0);
+ assertTrue(cmp.compare(GameRole.HAMSTER, GameRole.MADMAN) < 0);
+ assertTrue(cmp.compare(GameRole.MADMAN, GameRole.WOLF) < 0);
+ assertTrue(cmp.compare(GameRole.WOLF, GameRole.INNOCENT) > 0);
+ assertTrue(cmp.compare(GameRole.FRATER, GameRole.INNOCENT) > 0);
+
+ assertTrue(cmp.compare(null, null) == 0);
+ assertTrue(cmp.compare(GameRole.INNOCENT, null) > 0);
+ assertTrue(cmp.compare(null, GameRole.INNOCENT) < 0);
+
+ return;
+ }
+
+ /**
+ * Test of getRoleName method, of class GameRole.
+ */
+ @Test
+ public void testGetRoleName(){
+ System.out.println("getRoleName");
+ assertEquals("村人", GameRole.INNOCENT.getRoleName());
+ assertEquals("人狼", GameRole.WOLF.getRoleName());
+ assertEquals("占い師", GameRole.SEER.getRoleName());
+ assertEquals("霊能者", GameRole.SHAMAN.getRoleName());
+ assertEquals("狂人", GameRole.MADMAN.getRoleName());
+ assertEquals("狩人", GameRole.HUNTER.getRoleName());
+ assertEquals("共有者", GameRole.FRATER.getRoleName());
+ assertEquals("ハムスター人間", GameRole.HAMSTER.getRoleName());
+ return;
+ }
+
+ /**
+ * Test of getShortName method, of class GameRole.
+ */
+ @Test
+ public void testGetShortName(){
+ System.out.println("getShortName");
+ assertEquals('村', GameRole.INNOCENT.getShortName());
+ assertEquals('狼', GameRole.WOLF.getShortName());
+ assertEquals('占', GameRole.SEER.getShortName());
+ assertEquals('霊', GameRole.SHAMAN.getShortName());
+ assertEquals('狂', GameRole.MADMAN.getShortName());
+ assertEquals('狩', GameRole.HUNTER.getShortName());
+ assertEquals('共', GameRole.FRATER.getShortName());
+ assertEquals('公', GameRole.HAMSTER.getShortName());
+ return;
+ }
+
+ /**
+ * Test of getTeam method, of class GameRole.
+ */
+ @Test
+ public void testGetTeam(){
+ System.out.println("getTeam");
+ assertEquals(Team.VILLAGE, GameRole.INNOCENT.getTeam());
+ assertEquals(Team.WOLF, GameRole.WOLF.getTeam());
+ assertEquals(Team.VILLAGE, GameRole.SEER.getTeam());
+ assertEquals(Team.VILLAGE, GameRole.SHAMAN.getTeam());
+ assertEquals(Team.WOLF, GameRole.MADMAN.getTeam());
+ assertEquals(Team.VILLAGE, GameRole.HUNTER.getTeam());
+ assertEquals(Team.VILLAGE, GameRole.FRATER.getTeam());
+ assertEquals(Team.HAMSTER, GameRole.HAMSTER.getTeam());
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class GameRole.
+ */
+ @Test
+ public void testGetXmlName() {
+ System.out.println("getXmlName");
+ assertEquals("innocent", GameRole.INNOCENT.getXmlName());
+ assertEquals("wolf", GameRole.WOLF.getXmlName());
+ assertEquals("seer", GameRole.SEER.getXmlName());
+ assertEquals("shaman", GameRole.SHAMAN.getXmlName());
+ assertEquals("madman", GameRole.MADMAN.getXmlName());
+ assertEquals("hunter", GameRole.HUNTER.getXmlName());
+ assertEquals("frater", GameRole.FRATER.getXmlName());
+ assertEquals("hamster", GameRole.HAMSTER.getXmlName());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.IOException;\r
-import java.nio.charset.Charset;\r
-import java.util.ArrayList;\r
-import java.util.Collection;\r
-import java.util.GregorianCalendar;\r
-import java.util.List;\r
-import java.util.Locale;\r
-import java.util.TimeZone;\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-import javax.xml.parsers.ParserConfigurationException;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import org.xml.sax.SAXException;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class LandDefTest {\r
-\r
- private DocumentBuilder builder;\r
-\r
- public LandDefTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\r
- try{\r
- this.builder = factory.newDocumentBuilder();\r
- }catch(ParserConfigurationException e){\r
- fail();\r
- }\r
- return;\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of parseIntList method, of class LandDef.\r
- */\r
- @Test\r
- public void testParseIntList(){\r
- System.out.println("parseIntList");\r
- CharSequence seq;\r
- Collection<Integer> coll;\r
- List<Integer> result;\r
-\r
- seq = "1,2,3";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(3, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
-\r
- seq = "\u0020\t1\u0020,2,\u00203\t\u0020";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(3, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
-\r
- seq = "1-3";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(3, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
-\r
- seq = "1\u0020\t-\t\u00203";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(3, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
-\r
- seq = "3,2,1";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(3, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
-\r
- seq = "3-1";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(3, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
-\r
- seq = "1,2,3,11-13";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(6, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
- assertEquals(Integer.valueOf(11), result.get(3));\r
- assertEquals(Integer.valueOf(12), result.get(4));\r
- assertEquals(Integer.valueOf(13), result.get(5));\r
-\r
- seq = "1,2,11-13,3";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(6, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
- assertEquals(Integer.valueOf(11), result.get(3));\r
- assertEquals(Integer.valueOf(12), result.get(4));\r
- assertEquals(Integer.valueOf(13), result.get(5));\r
-\r
- seq = "1,1";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(1, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
-\r
- seq = "1,2,1";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(2, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
-\r
- seq = "1-3,2-4";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(4, result.size());\r
- assertEquals(Integer.valueOf(1), result.get(0));\r
- assertEquals(Integer.valueOf(2), result.get(1));\r
- assertEquals(Integer.valueOf(3), result.get(2));\r
- assertEquals(Integer.valueOf(4), result.get(3));\r
-\r
- seq = "";\r
- coll = LandDef.parseIntList(seq);\r
- result = new ArrayList<Integer>(coll);\r
- assertEquals(0, result.size());\r
-\r
- seq = "x";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "1,x,3";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "-";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "1-2-3";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "1-x";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "x-3";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "1-";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- seq = "-3";\r
- try{\r
- coll = LandDef.parseIntList(seq);\r
- fail();\r
- }catch(IllegalArgumentException e){\r
- }\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of buildLandDefList method, of class LandDef.\r
- */\r
- @Test\r
- public void testBuildLandDefList(){\r
- System.out.println("buildLandDefList");\r
-\r
- List<LandDef> result;\r
- try{\r
- result = LandDef.buildLandDefList(this.builder);\r
- }catch(SAXException e){\r
- fail();\r
- return;\r
- }catch(IOException e){\r
- fail();\r
- return;\r
- }\r
-\r
- assertEquals(9, result.size());\r
-\r
- assertEquals("wolf", result.get(0).getLandId());\r
- assertEquals("wolff", result.get(7).getLandId());\r
- assertEquals("wolfg", result.get(8).getLandId());\r
-\r
- return;\r
- }\r
-\r
- private List<LandDef> loadList(){\r
- List<LandDef> result;\r
- try{\r
- result = LandDef.buildLandDefList(this.builder);\r
- }catch(SAXException e){\r
- fail();\r
- return null;\r
- }catch(IOException e){\r
- fail();\r
- return null;\r
- }\r
- return result;\r
- }\r
-\r
- private LandDef selectLand(String id){\r
- for(LandDef land : loadList()){\r
- if(land.getLandId().equals(id)) return land;\r
- }\r
- return null;\r
- }\r
-\r
- /**\r
- * Test of getLandName method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetLandName(){\r
- System.out.println("getLandName");\r
-\r
- assertEquals("人狼BBS:古国", selectLand("wolf").getLandName());\r
- assertEquals("人狼BBS:F国", selectLand("wolff").getLandName());\r
- assertEquals("人狼BBS:G国", selectLand("wolfg").getLandName());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getLandId method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetLandId(){\r
- System.out.println("getLandId");\r
-\r
- assertEquals("wolf", selectLand("wolf").getLandId());\r
- assertEquals("wolf0", selectLand("wolf0").getLandId());\r
- assertEquals("wolff", selectLand("wolff").getLandId());\r
- assertEquals("wolfg", selectLand("wolfg").getLandId());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getFormalName method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetFormalName(){\r
- System.out.println("getFormalName");\r
-\r
- assertEquals("旧人狼BBS 2", selectLand("wolf").getFormalName());\r
- assertEquals("人狼BBS:F", selectLand("wolff").getFormalName());\r
- assertEquals("人狼BBS:G", selectLand("wolfg").getFormalName());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getLandPrefix method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetLandPrefix(){\r
- System.out.println("getLandPrefix");\r
-\r
- assertEquals("", selectLand("wolf").getLandPrefix());\r
- assertEquals("", selectLand("wolf0").getLandPrefix());\r
- assertEquals("F", selectLand("wolff").getLandPrefix());\r
- assertEquals("G", selectLand("wolfg").getLandPrefix());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getLandState method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetLandState(){\r
- System.out.println("getLandState");\r
-\r
- assertEquals(LandState.HISTORICAL, selectLand("wolf0").getLandState());\r
- assertEquals(LandState.HISTORICAL, selectLand("wolff").getLandState());\r
- assertEquals(LandState.ACTIVE, selectLand("wolfg").getLandState());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getMinMembers method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetMinMembers(){\r
- System.out.println("getMinMembers");\r
-\r
- assertEquals(8, selectLand("wolf0").getMinMembers());\r
- assertEquals(11, selectLand("wolff").getMinMembers());\r
- assertEquals(10, selectLand("wolfg").getMinMembers());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getMaxMembers method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetMaxMembers(){\r
- System.out.println("getMaxMembers");\r
-\r
- assertEquals(16, selectLand("wolf0").getMaxMembers());\r
- assertEquals(16, selectLand("wolff").getMaxMembers());\r
- assertEquals(16, selectLand("wolfg").getMaxMembers());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getWebURI method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetWebURI(){\r
- System.out.println("getWebURI");\r
-\r
- assertEquals("http://ninjinix.x0.com/wolf/",\r
- selectLand("wolf").getWebURI().toString());\r
- assertEquals("http://ninjin002.x0.com/wolff/",\r
- selectLand("wolff").getWebURI().toString());\r
- assertEquals("http://www.wolfg.x0.com/",\r
- selectLand("wolfg").getWebURI().toString());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getCgiURI method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetCgiURI(){\r
- System.out.println("getCgiURI");\r
-\r
- assertEquals("http://ninjinix.x0.com/wolf/index.rb",\r
- selectLand("wolf").getCgiURI().toString());\r
- assertEquals("http://ninjin002.x0.com/wolff/index.rb",\r
- selectLand("wolff").getCgiURI().toString());\r
- assertEquals("http://www.wolfg.x0.com/index.rb",\r
- selectLand("wolfg").getCgiURI().toString());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getTombFaceIconURI method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetTombFaceIconURI(){\r
- System.out.println("getTombFaceIconURI");\r
-\r
- assertEquals("plugin_wolf/img/face99.jpg",\r
- selectLand("wolf").getTombFaceIconURI().toString());\r
- assertEquals("../img/face99.jpg",\r
- selectLand("wolf0").getTombFaceIconURI().toString());\r
- assertEquals("plugin_wolf/img/face99.jpg",\r
- selectLand("wolff").getTombFaceIconURI().toString());\r
- assertEquals("plugin_wolf/img/face99.jpg",\r
- selectLand("wolfg").getTombFaceIconURI().toString());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getTombBodyIconURI method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetTombBodyIconURI(){\r
- System.out.println("getTombBodyIconURI");\r
-\r
- assertEquals("plugin_wolf/img/body99.jpg",\r
- selectLand("wolf").getTombBodyIconURI().toString());\r
- assertEquals("../img/body99.jpg",\r
- selectLand("wolf0").getTombBodyIconURI().toString());\r
- assertEquals("plugin_wolf/img/body99.jpg",\r
- selectLand("wolff").getTombBodyIconURI().toString());\r
- assertEquals("plugin_wolf/img/body99.jpg",\r
- selectLand("wolfg").getTombBodyIconURI().toString());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getFaceURITemplate method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetFaceURITemplate(){\r
- System.out.println("getFaceURITemplate");\r
-\r
- assertEquals("./plugin_wolf/img/face{0,number,#00}.jpg",\r
- selectLand("wolf").getFaceURITemplate());\r
- assertEquals("../img/face{0,number,#00}.jpg",\r
- selectLand("wolf0").getFaceURITemplate());\r
- assertEquals("./plugin_wolf/img/face{0,number,#00}.jpg",\r
- selectLand("wolff").getFaceURITemplate());\r
- assertEquals("./plugin_wolf/img/face{0,number,#00}.jpg",\r
- selectLand("wolfg").getFaceURITemplate());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getBodyURITemplate method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetBodyURITemplate(){\r
- System.out.println("getBodyURITemplate");\r
-\r
- assertEquals("./plugin_wolf/img/body{0,number,#00}.jpg",\r
- selectLand("wolf").getBodyURITemplate());\r
- assertEquals("../img/body{0,number,#00}.jpg",\r
- selectLand("wolf0").getBodyURITemplate());\r
- assertEquals("./plugin_wolf/img/body{0,number,#00}.jpg",\r
- selectLand("wolff").getBodyURITemplate());\r
- assertEquals("./plugin_wolf/img/body{0,number,#00}.jpg",\r
- selectLand("wolfg").getBodyURITemplate());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getLocale method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetLocale(){\r
- System.out.println("getLocale");\r
-\r
- assertEquals(Locale.JAPAN, selectLand("wolf").getLocale());\r
- assertEquals(Locale.JAPAN, selectLand("wolff").getLocale());\r
- assertEquals(Locale.JAPAN, selectLand("wolfg").getLocale());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getEncoding method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetEncoding(){\r
- System.out.println("getEncoding");\r
-\r
- Charset sj = Charset.forName("Shift_JIS");\r
-\r
- assertEquals(sj, selectLand("wolf").getEncoding());\r
- assertEquals(sj, selectLand("wolff").getEncoding());\r
-\r
- Charset utf8 = Charset.forName("UTF-8");\r
-\r
- assertEquals(utf8, selectLand("wolfg").getEncoding());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getTimeZone method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetTimeZone(){\r
- System.out.println("getTimeZone");\r
-\r
- TimeZone tz = TimeZone.getTimeZone("GMT+09");\r
-\r
- assertTrue(tz.hasSameRules(selectLand("wolf0").getTimeZone()));\r
- assertTrue(tz.hasSameRules(selectLand("wolff").getTimeZone()));\r
- assertTrue(tz.hasSameRules(selectLand("wolfg").getTimeZone()));\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getStartDateTime method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetStartDateTime(){\r
- System.out.println("getStartDateTime");\r
-\r
- TimeZone tz = TimeZone.getTimeZone("GMT+09");\r
-\r
- GregorianCalendar cal = new GregorianCalendar();\r
- cal.clear();\r
- cal.setTimeZone(tz);\r
-\r
- cal.set(2004, 8-1, 15, 23, 31, 36);\r
- assertEquals(cal.getTimeInMillis(),\r
- selectLand("wolf").getStartDateTime());\r
-\r
- cal.set(2005, 9-1, 12, 20, 21, 3);\r
- assertEquals(cal.getTimeInMillis(),\r
- selectLand("wolff").getStartDateTime());\r
-\r
- cal.set(2010, 3-1, 7, 13, 53, 27);\r
- assertEquals(cal.getTimeInMillis(),\r
- selectLand("wolfg").getStartDateTime());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getEndDateTime method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetEndDateTime(){\r
- System.out.println("getEndDateTime");\r
-\r
- TimeZone tz = TimeZone.getTimeZone("GMT+09");\r
-\r
- GregorianCalendar cal = new GregorianCalendar();\r
- cal.clear();\r
- cal.setTimeZone(tz);\r
-\r
- cal.set(2004, 9-1, 30, 13, 58, 31);\r
- assertEquals(cal.getTimeInMillis(),\r
- selectLand("wolf").getEndDateTime());\r
-\r
- assertTrue(0 > selectLand("wolfg").getEndDateTime());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getDescription method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetDescription(){\r
- System.out.println("getDescription");\r
-\r
- assertNotNull(selectLand("wolf0").getDescription());\r
- assertNotNull(selectLand("wolff").getDescription());\r
- assertNotNull(selectLand("wolfg").getDescription());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getContactInfo method, of class LandDef.\r
- */\r
- @Test\r
- public void testGetContactInfo(){\r
- System.out.println("getContactInfo");\r
-\r
- assertNotNull(selectLand("wolf0").getContactInfo());\r
- assertNotNull(selectLand("wolff").getContactInfo());\r
- assertNotNull(selectLand("wolfg").getContactInfo());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of isValidVillageId method, of class LandDef.\r
- */\r
- @Test\r
- public void testIsValidVillageId(){\r
- System.out.println("isValidVillageId");\r
-\r
- assertTrue(selectLand("wolfa").isValidVillageId(339));\r
- assertFalse(selectLand("wolfa").isValidVillageId(340));\r
- assertTrue(selectLand("wolfa").isValidVillageId(343));\r
- assertTrue(selectLand("wolfa").isValidVillageId(366));\r
- assertFalse(selectLand("wolfa").isValidVillageId(367));\r
-\r
- assertFalse(selectLand("wolfb").isValidVillageId(149));\r
-\r
- assertFalse(selectLand("wolfc").isValidVillageId(451));\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of buildLocale method, of class LandDef.\r
- */\r
- @Test\r
- public void testBuildLocale(){\r
- System.out.println("buildLocale");\r
- assertEquals(Locale.JAPAN, LandDef.buildLocale("ja-JP"));\r
- assertEquals(Locale.JAPANESE, LandDef.buildLocale("ja"));\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.Locale;
+import java.util.TimeZone;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.xml.sax.SAXException;
+import static org.junit.Assert.*;
+
+/**
+ */
+public class LandDefTest {
+
+ private DocumentBuilder builder;
+
+ public LandDefTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try{
+ this.builder = factory.newDocumentBuilder();
+ }catch(ParserConfigurationException e){
+ fail();
+ }
+ return;
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of parseIntList method, of class LandDef.
+ */
+ @Test
+ public void testParseIntList(){
+ System.out.println("parseIntList");
+ CharSequence seq;
+ Collection<Integer> coll;
+ List<Integer> result;
+
+ seq = "1,2,3";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(3, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+
+ seq = "\u0020\t1\u0020,2,\u00203\t\u0020";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(3, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+
+ seq = "1-3";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(3, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+
+ seq = "1\u0020\t-\t\u00203";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(3, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+
+ seq = "3,2,1";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(3, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+
+ seq = "3-1";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(3, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+
+ seq = "1,2,3,11-13";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(6, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+ assertEquals(Integer.valueOf(11), result.get(3));
+ assertEquals(Integer.valueOf(12), result.get(4));
+ assertEquals(Integer.valueOf(13), result.get(5));
+
+ seq = "1,2,11-13,3";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(6, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+ assertEquals(Integer.valueOf(11), result.get(3));
+ assertEquals(Integer.valueOf(12), result.get(4));
+ assertEquals(Integer.valueOf(13), result.get(5));
+
+ seq = "1,1";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(1, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+
+ seq = "1,2,1";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(2, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+
+ seq = "1-3,2-4";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(4, result.size());
+ assertEquals(Integer.valueOf(1), result.get(0));
+ assertEquals(Integer.valueOf(2), result.get(1));
+ assertEquals(Integer.valueOf(3), result.get(2));
+ assertEquals(Integer.valueOf(4), result.get(3));
+
+ seq = "";
+ coll = LandDef.parseIntList(seq);
+ result = new ArrayList<Integer>(coll);
+ assertEquals(0, result.size());
+
+ seq = "x";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "1,x,3";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "-";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "1-2-3";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "1-x";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "x-3";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "1-";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ seq = "-3";
+ try{
+ coll = LandDef.parseIntList(seq);
+ fail();
+ }catch(IllegalArgumentException e){
+ }
+
+ return;
+ }
+
+ /**
+ * Test of buildLandDefList method, of class LandDef.
+ */
+ @Test
+ public void testBuildLandDefList(){
+ System.out.println("buildLandDefList");
+
+ List<LandDef> result;
+ try{
+ result = LandDef.buildLandDefList(this.builder);
+ }catch(SAXException e){
+ fail();
+ return;
+ }catch(IOException e){
+ fail();
+ return;
+ }
+
+ assertEquals(9, result.size());
+
+ assertEquals("wolf", result.get(0).getLandId());
+ assertEquals("wolff", result.get(7).getLandId());
+ assertEquals("wolfg", result.get(8).getLandId());
+
+ return;
+ }
+
+ private List<LandDef> loadList(){
+ List<LandDef> result;
+ try{
+ result = LandDef.buildLandDefList(this.builder);
+ }catch(SAXException e){
+ fail();
+ return null;
+ }catch(IOException e){
+ fail();
+ return null;
+ }
+ return result;
+ }
+
+ private LandDef selectLand(String id){
+ for(LandDef land : loadList()){
+ if(land.getLandId().equals(id)) return land;
+ }
+ return null;
+ }
+
+ /**
+ * Test of getLandName method, of class LandDef.
+ */
+ @Test
+ public void testGetLandName(){
+ System.out.println("getLandName");
+
+ assertEquals("人狼BBS:古国", selectLand("wolf").getLandName());
+ assertEquals("人狼BBS:F国", selectLand("wolff").getLandName());
+ assertEquals("人狼BBS:G国", selectLand("wolfg").getLandName());
+
+ return;
+ }
+
+ /**
+ * Test of getLandId method, of class LandDef.
+ */
+ @Test
+ public void testGetLandId(){
+ System.out.println("getLandId");
+
+ assertEquals("wolf", selectLand("wolf").getLandId());
+ assertEquals("wolf0", selectLand("wolf0").getLandId());
+ assertEquals("wolff", selectLand("wolff").getLandId());
+ assertEquals("wolfg", selectLand("wolfg").getLandId());
+
+ return;
+ }
+
+ /**
+ * Test of getFormalName method, of class LandDef.
+ */
+ @Test
+ public void testGetFormalName(){
+ System.out.println("getFormalName");
+
+ assertEquals("旧人狼BBS 2", selectLand("wolf").getFormalName());
+ assertEquals("人狼BBS:F", selectLand("wolff").getFormalName());
+ assertEquals("人狼BBS:G", selectLand("wolfg").getFormalName());
+
+ return;
+ }
+
+ /**
+ * Test of getLandPrefix method, of class LandDef.
+ */
+ @Test
+ public void testGetLandPrefix(){
+ System.out.println("getLandPrefix");
+
+ assertEquals("", selectLand("wolf").getLandPrefix());
+ assertEquals("", selectLand("wolf0").getLandPrefix());
+ assertEquals("F", selectLand("wolff").getLandPrefix());
+ assertEquals("G", selectLand("wolfg").getLandPrefix());
+
+ return;
+ }
+
+ /**
+ * Test of getLandState method, of class LandDef.
+ */
+ @Test
+ public void testGetLandState(){
+ System.out.println("getLandState");
+
+ assertEquals(LandState.HISTORICAL, selectLand("wolf0").getLandState());
+ assertEquals(LandState.HISTORICAL, selectLand("wolff").getLandState());
+ assertEquals(LandState.ACTIVE, selectLand("wolfg").getLandState());
+
+ return;
+ }
+
+ /**
+ * Test of getMinMembers method, of class LandDef.
+ */
+ @Test
+ public void testGetMinMembers(){
+ System.out.println("getMinMembers");
+
+ assertEquals(8, selectLand("wolf0").getMinMembers());
+ assertEquals(11, selectLand("wolff").getMinMembers());
+ assertEquals(10, selectLand("wolfg").getMinMembers());
+
+ return;
+ }
+
+ /**
+ * Test of getMaxMembers method, of class LandDef.
+ */
+ @Test
+ public void testGetMaxMembers(){
+ System.out.println("getMaxMembers");
+
+ assertEquals(16, selectLand("wolf0").getMaxMembers());
+ assertEquals(16, selectLand("wolff").getMaxMembers());
+ assertEquals(16, selectLand("wolfg").getMaxMembers());
+
+ return;
+ }
+
+ /**
+ * Test of getWebURI method, of class LandDef.
+ */
+ @Test
+ public void testGetWebURI(){
+ System.out.println("getWebURI");
+
+ assertEquals("http://ninjinix.x0.com/wolf/",
+ selectLand("wolf").getWebURI().toString());
+ assertEquals("http://ninjin002.x0.com/wolff/",
+ selectLand("wolff").getWebURI().toString());
+ assertEquals("http://www.wolfg.x0.com/",
+ selectLand("wolfg").getWebURI().toString());
+
+ return;
+ }
+
+ /**
+ * Test of getCgiURI method, of class LandDef.
+ */
+ @Test
+ public void testGetCgiURI(){
+ System.out.println("getCgiURI");
+
+ assertEquals("http://ninjinix.x0.com/wolf/index.rb",
+ selectLand("wolf").getCgiURI().toString());
+ assertEquals("http://ninjin002.x0.com/wolff/index.rb",
+ selectLand("wolff").getCgiURI().toString());
+ assertEquals("http://www.wolfg.x0.com/index.rb",
+ selectLand("wolfg").getCgiURI().toString());
+
+ return;
+ }
+
+ /**
+ * Test of getTombFaceIconURI method, of class LandDef.
+ */
+ @Test
+ public void testGetTombFaceIconURI(){
+ System.out.println("getTombFaceIconURI");
+
+ assertEquals("plugin_wolf/img/face99.jpg",
+ selectLand("wolf").getTombFaceIconURI().toString());
+ assertEquals("../img/face99.jpg",
+ selectLand("wolf0").getTombFaceIconURI().toString());
+ assertEquals("plugin_wolf/img/face99.jpg",
+ selectLand("wolff").getTombFaceIconURI().toString());
+ assertEquals("plugin_wolf/img/face99.jpg",
+ selectLand("wolfg").getTombFaceIconURI().toString());
+
+ return;
+ }
+
+ /**
+ * Test of getTombBodyIconURI method, of class LandDef.
+ */
+ @Test
+ public void testGetTombBodyIconURI(){
+ System.out.println("getTombBodyIconURI");
+
+ assertEquals("plugin_wolf/img/body99.jpg",
+ selectLand("wolf").getTombBodyIconURI().toString());
+ assertEquals("../img/body99.jpg",
+ selectLand("wolf0").getTombBodyIconURI().toString());
+ assertEquals("plugin_wolf/img/body99.jpg",
+ selectLand("wolff").getTombBodyIconURI().toString());
+ assertEquals("plugin_wolf/img/body99.jpg",
+ selectLand("wolfg").getTombBodyIconURI().toString());
+
+ return;
+ }
+
+ /**
+ * Test of getFaceURITemplate method, of class LandDef.
+ */
+ @Test
+ public void testGetFaceURITemplate(){
+ System.out.println("getFaceURITemplate");
+
+ assertEquals("./plugin_wolf/img/face{0,number,#00}.jpg",
+ selectLand("wolf").getFaceURITemplate());
+ assertEquals("../img/face{0,number,#00}.jpg",
+ selectLand("wolf0").getFaceURITemplate());
+ assertEquals("./plugin_wolf/img/face{0,number,#00}.jpg",
+ selectLand("wolff").getFaceURITemplate());
+ assertEquals("./plugin_wolf/img/face{0,number,#00}.jpg",
+ selectLand("wolfg").getFaceURITemplate());
+
+ return;
+ }
+
+ /**
+ * Test of getBodyURITemplate method, of class LandDef.
+ */
+ @Test
+ public void testGetBodyURITemplate(){
+ System.out.println("getBodyURITemplate");
+
+ assertEquals("./plugin_wolf/img/body{0,number,#00}.jpg",
+ selectLand("wolf").getBodyURITemplate());
+ assertEquals("../img/body{0,number,#00}.jpg",
+ selectLand("wolf0").getBodyURITemplate());
+ assertEquals("./plugin_wolf/img/body{0,number,#00}.jpg",
+ selectLand("wolff").getBodyURITemplate());
+ assertEquals("./plugin_wolf/img/body{0,number,#00}.jpg",
+ selectLand("wolfg").getBodyURITemplate());
+
+ return;
+ }
+
+ /**
+ * Test of getLocale method, of class LandDef.
+ */
+ @Test
+ public void testGetLocale(){
+ System.out.println("getLocale");
+
+ assertEquals(Locale.JAPAN, selectLand("wolf").getLocale());
+ assertEquals(Locale.JAPAN, selectLand("wolff").getLocale());
+ assertEquals(Locale.JAPAN, selectLand("wolfg").getLocale());
+
+ return;
+ }
+
+ /**
+ * Test of getEncoding method, of class LandDef.
+ */
+ @Test
+ public void testGetEncoding(){
+ System.out.println("getEncoding");
+
+ Charset sj = Charset.forName("Shift_JIS");
+
+ assertEquals(sj, selectLand("wolf").getEncoding());
+ assertEquals(sj, selectLand("wolff").getEncoding());
+
+ Charset utf8 = Charset.forName("UTF-8");
+
+ assertEquals(utf8, selectLand("wolfg").getEncoding());
+
+ return;
+ }
+
+ /**
+ * Test of getTimeZone method, of class LandDef.
+ */
+ @Test
+ public void testGetTimeZone(){
+ System.out.println("getTimeZone");
+
+ TimeZone tz = TimeZone.getTimeZone("GMT+09");
+
+ assertTrue(tz.hasSameRules(selectLand("wolf0").getTimeZone()));
+ assertTrue(tz.hasSameRules(selectLand("wolff").getTimeZone()));
+ assertTrue(tz.hasSameRules(selectLand("wolfg").getTimeZone()));
+
+ return;
+ }
+
+ /**
+ * Test of getStartDateTime method, of class LandDef.
+ */
+ @Test
+ public void testGetStartDateTime(){
+ System.out.println("getStartDateTime");
+
+ TimeZone tz = TimeZone.getTimeZone("GMT+09");
+
+ GregorianCalendar cal = new GregorianCalendar();
+ cal.clear();
+ cal.setTimeZone(tz);
+
+ cal.set(2004, 8-1, 15, 23, 31, 36);
+ assertEquals(cal.getTimeInMillis(),
+ selectLand("wolf").getStartDateTime());
+
+ cal.set(2005, 9-1, 12, 20, 21, 3);
+ assertEquals(cal.getTimeInMillis(),
+ selectLand("wolff").getStartDateTime());
+
+ cal.set(2010, 3-1, 7, 13, 53, 27);
+ assertEquals(cal.getTimeInMillis(),
+ selectLand("wolfg").getStartDateTime());
+
+ return;
+ }
+
+ /**
+ * Test of getEndDateTime method, of class LandDef.
+ */
+ @Test
+ public void testGetEndDateTime(){
+ System.out.println("getEndDateTime");
+
+ TimeZone tz = TimeZone.getTimeZone("GMT+09");
+
+ GregorianCalendar cal = new GregorianCalendar();
+ cal.clear();
+ cal.setTimeZone(tz);
+
+ cal.set(2004, 9-1, 30, 13, 58, 31);
+ assertEquals(cal.getTimeInMillis(),
+ selectLand("wolf").getEndDateTime());
+
+ assertTrue(0 > selectLand("wolfg").getEndDateTime());
+
+ return;
+ }
+
+ /**
+ * Test of getDescription method, of class LandDef.
+ */
+ @Test
+ public void testGetDescription(){
+ System.out.println("getDescription");
+
+ assertNotNull(selectLand("wolf0").getDescription());
+ assertNotNull(selectLand("wolff").getDescription());
+ assertNotNull(selectLand("wolfg").getDescription());
+
+ return;
+ }
+
+ /**
+ * Test of getContactInfo method, of class LandDef.
+ */
+ @Test
+ public void testGetContactInfo(){
+ System.out.println("getContactInfo");
+
+ assertNotNull(selectLand("wolf0").getContactInfo());
+ assertNotNull(selectLand("wolff").getContactInfo());
+ assertNotNull(selectLand("wolfg").getContactInfo());
+
+ return;
+ }
+
+ /**
+ * Test of isValidVillageId method, of class LandDef.
+ */
+ @Test
+ public void testIsValidVillageId(){
+ System.out.println("isValidVillageId");
+
+ assertTrue(selectLand("wolfa").isValidVillageId(339));
+ assertFalse(selectLand("wolfa").isValidVillageId(340));
+ assertTrue(selectLand("wolfa").isValidVillageId(343));
+ assertTrue(selectLand("wolfa").isValidVillageId(366));
+ assertFalse(selectLand("wolfa").isValidVillageId(367));
+
+ assertFalse(selectLand("wolfb").isValidVillageId(149));
+
+ assertFalse(selectLand("wolfc").isValidVillageId(451));
+
+ return;
+ }
+
+ /**
+ * Test of buildLocale method, of class LandDef.
+ */
+ @Test
+ public void testBuildLocale(){
+ System.out.println("buildLocale");
+ assertEquals(Locale.JAPAN, LandDef.buildLocale("ja-JP"));
+ assertEquals(Locale.JAPANESE, LandDef.buildLocale("ja"));
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class LandStateTest {\r
-\r
- public LandStateTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class LandState.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- LandState[] values = LandState.values();\r
- assertEquals(3, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class LandState.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class LandState.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals("closed", LandState.CLOSED.getXmlName());\r
- assertEquals("historical", LandState.HISTORICAL.getXmlName());\r
- assertEquals("active", LandState.ACTIVE.getXmlName());\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 LandStateTest {
+
+ public LandStateTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class LandState.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ LandState[] values = LandState.values();
+ assertEquals(3, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class LandState.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class LandState.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals("closed", LandState.CLOSED.getXmlName());
+ assertEquals("historical", LandState.HISTORICAL.getXmlName());
+ assertEquals("active", LandState.ACTIVE.getXmlName());
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class PeriodTypeTest {\r
-\r
- public PeriodTypeTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class PeriodType.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- PeriodType[] values = PeriodType.values();\r
- assertEquals(3, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class PeriodType.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class PeriodType.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals("prologue", PeriodType.PROLOGUE.getXmlName());\r
- assertEquals("progress", PeriodType.PROGRESS.getXmlName());\r
- assertEquals("epilogue", PeriodType.EPILOGUE.getXmlName());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 PeriodTypeTest {
+
+ public PeriodTypeTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class PeriodType.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ PeriodType[] values = PeriodType.values();
+ assertEquals(3, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class PeriodType.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class PeriodType.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals("prologue", PeriodType.PROLOGUE.getXmlName());
+ assertEquals("progress", PeriodType.PROGRESS.getXmlName());
+ assertEquals("epilogue", PeriodType.EPILOGUE.getXmlName());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.IOException;\r
-import java.util.List;\r
-import javax.xml.parsers.DocumentBuilder;\r
-import javax.xml.parsers.DocumentBuilderFactory;\r
-import javax.xml.parsers.ParserConfigurationException;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import org.xml.sax.SAXException;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class PreDefAvatarTest {\r
-\r
- private DocumentBuilder builder;\r
-\r
- public PreDefAvatarTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();\r
- try{\r
- this.builder = factory.newDocumentBuilder();\r
- }catch(ParserConfigurationException e){\r
- fail();\r
- }\r
- return;\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of buildPreDefAvatarList method, of class PreDefAvatar.\r
- */\r
- @Test\r
- public void testBuildPreDefAvatarList(){\r
- System.out.println("buildPreDefAvatarList");\r
-\r
- List<PreDefAvatar> result;\r
- try{\r
- result = PreDefAvatar.buildPreDefAvatarList(this.builder);\r
- }catch(SAXException e){\r
- fail();\r
- return;\r
- }catch(IOException e){\r
- fail();\r
- return;\r
- }\r
-\r
- assertEquals(20, result.size());\r
-\r
- assertEquals("gerd", result.get(0).getAvatarId());\r
- assertEquals("simon", result.get(19).getAvatarId());\r
-\r
- return;\r
- }\r
-\r
- private List<PreDefAvatar> loadList(){\r
- List<PreDefAvatar> result;\r
- try{\r
- result = PreDefAvatar.buildPreDefAvatarList(this.builder);\r
- }catch(SAXException e){\r
- fail();\r
- return null;\r
- }catch(IOException e){\r
- fail();\r
- return null;\r
- }\r
- return result;\r
- }\r
-\r
- /**\r
- * Test of getAvatarId method, of class PreDefAvatar.\r
- */\r
- @Test\r
- public void testGetAvatarId(){\r
- System.out.println("getAvatarId");\r
-\r
- List<PreDefAvatar> list = loadList();\r
-\r
- assertEquals("gerd", list.get(0).getAvatarId());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getFullName method, of class PreDefAvatar.\r
- */\r
- @Test\r
- public void testGetFullName(){\r
- System.out.println("getFullName");\r
-\r
- List<PreDefAvatar> list = loadList();\r
-\r
- assertEquals("楽天家\u0020ゲルト", list.get(0).getFullName());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getJobTitle method, of class PreDefAvatar.\r
- */\r
- @Test\r
- public void testGetJobTitle(){\r
- System.out.println("getJobTitle");\r
-\r
- List<PreDefAvatar> list = loadList();\r
-\r
- assertEquals("楽天家", list.get(0).getJobTitle());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getShortName method, of class PreDefAvatar.\r
- */\r
- @Test\r
- public void testGetShortName(){\r
- System.out.println("getShortName");\r
-\r
- List<PreDefAvatar> list = loadList();\r
-\r
- assertEquals("ゲルト", list.get(0).getShortName());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getSerialNo method, of class PreDefAvatar.\r
- */\r
- @Test\r
- public void testGetSerialNo(){\r
- System.out.println("getSerialNo");\r
-\r
- List<PreDefAvatar> list = loadList();\r
-\r
- assertEquals(1, list.get(0).getSerialNo());\r
-\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.IOException;
+import java.util.List;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.xml.sax.SAXException;
+import static org.junit.Assert.*;
+
+/**
+ */
+public class PreDefAvatarTest {
+
+ private DocumentBuilder builder;
+
+ public PreDefAvatarTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ try{
+ this.builder = factory.newDocumentBuilder();
+ }catch(ParserConfigurationException e){
+ fail();
+ }
+ return;
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of buildPreDefAvatarList method, of class PreDefAvatar.
+ */
+ @Test
+ public void testBuildPreDefAvatarList(){
+ System.out.println("buildPreDefAvatarList");
+
+ List<PreDefAvatar> result;
+ try{
+ result = PreDefAvatar.buildPreDefAvatarList(this.builder);
+ }catch(SAXException e){
+ fail();
+ return;
+ }catch(IOException e){
+ fail();
+ return;
+ }
+
+ assertEquals(20, result.size());
+
+ assertEquals("gerd", result.get(0).getAvatarId());
+ assertEquals("simon", result.get(19).getAvatarId());
+
+ return;
+ }
+
+ private List<PreDefAvatar> loadList(){
+ List<PreDefAvatar> result;
+ try{
+ result = PreDefAvatar.buildPreDefAvatarList(this.builder);
+ }catch(SAXException e){
+ fail();
+ return null;
+ }catch(IOException e){
+ fail();
+ return null;
+ }
+ return result;
+ }
+
+ /**
+ * Test of getAvatarId method, of class PreDefAvatar.
+ */
+ @Test
+ public void testGetAvatarId(){
+ System.out.println("getAvatarId");
+
+ List<PreDefAvatar> list = loadList();
+
+ assertEquals("gerd", list.get(0).getAvatarId());
+
+ return;
+ }
+
+ /**
+ * Test of getFullName method, of class PreDefAvatar.
+ */
+ @Test
+ public void testGetFullName(){
+ System.out.println("getFullName");
+
+ List<PreDefAvatar> list = loadList();
+
+ assertEquals("楽天家\u0020ゲルト", list.get(0).getFullName());
+
+ return;
+ }
+
+ /**
+ * Test of getJobTitle method, of class PreDefAvatar.
+ */
+ @Test
+ public void testGetJobTitle(){
+ System.out.println("getJobTitle");
+
+ List<PreDefAvatar> list = loadList();
+
+ assertEquals("楽天家", list.get(0).getJobTitle());
+
+ return;
+ }
+
+ /**
+ * Test of getShortName method, of class PreDefAvatar.
+ */
+ @Test
+ public void testGetShortName(){
+ System.out.println("getShortName");
+
+ List<PreDefAvatar> list = loadList();
+
+ assertEquals("ゲルト", list.get(0).getShortName());
+
+ return;
+ }
+
+ /**
+ * Test of getSerialNo method, of class PreDefAvatar.
+ */
+ @Test
+ public void testGetSerialNo(){
+ System.out.println("getSerialNo");
+
+ List<PreDefAvatar> list = loadList();
+
+ assertEquals(1, list.get(0).getSerialNo());
+
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class SysEventTypeTest {\r
-\r
- public SysEventTypeTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class SysEventType.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- SysEventType[] values = SysEventType.values();\r
- assertEquals(29, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class SysEventType.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getEventFamily method, of class SysEventType.\r
- */\r
- @Test\r
- public void testGetEventFamily(){\r
- System.out.println("getEventFamily");\r
-\r
- SysEventType[] values = SysEventType.values();\r
-\r
- for(SysEventType type : values){\r
- switch(type){\r
- case STARTENTRY:\r
- case ONSTAGE:\r
- case STARTMIRROR:\r
- case OPENROLE:\r
- case MURDERED:\r
- case STARTASSAULT:\r
- case SURVIVOR:\r
- case COUNTING:\r
- case SUDDENDEATH:\r
- case NOMURDER:\r
- case WINVILLAGE:\r
- case WINWOLF:\r
- case WINHAMSTER:\r
- case PLAYERLIST:\r
- case PANIC:\r
- case EXECUTION:\r
- case VANISH:\r
- case CHECKOUT:\r
- case SHORTMEMBER:\r
- assertEquals(EventFamily.ANNOUNCE, type.getEventFamily());\r
- break;\r
- case ASKENTRY:\r
- case ASKCOMMIT:\r
- case NOCOMMENT:\r
- case STAYEPILOGUE:\r
- case GAMEOVER:\r
- assertEquals(EventFamily.ORDER, type.getEventFamily());\r
- break;\r
- case JUDGE:\r
- case GUARD:\r
- case COUNTING2:\r
- assertEquals(EventFamily.EXTRA, type.getEventFamily());\r
- break;\r
- case ASSAULT:\r
- case UNKNOWN:\r
- assertNull(type.getEventFamily());\r
- break;\r
- default:\r
- fail();\r
- break;\r
- }\r
- }\r
-\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 SysEventTypeTest {
+
+ public SysEventTypeTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class SysEventType.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ SysEventType[] values = SysEventType.values();
+ assertEquals(29, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class SysEventType.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getEventFamily method, of class SysEventType.
+ */
+ @Test
+ public void testGetEventFamily(){
+ System.out.println("getEventFamily");
+
+ SysEventType[] values = SysEventType.values();
+
+ for(SysEventType type : values){
+ switch(type){
+ case STARTENTRY:
+ case ONSTAGE:
+ case STARTMIRROR:
+ case OPENROLE:
+ case MURDERED:
+ case STARTASSAULT:
+ case SURVIVOR:
+ case COUNTING:
+ case SUDDENDEATH:
+ case NOMURDER:
+ case WINVILLAGE:
+ case WINWOLF:
+ case WINHAMSTER:
+ case PLAYERLIST:
+ case PANIC:
+ case EXECUTION:
+ case VANISH:
+ case CHECKOUT:
+ case SHORTMEMBER:
+ assertEquals(EventFamily.ANNOUNCE, type.getEventFamily());
+ break;
+ case ASKENTRY:
+ case ASKCOMMIT:
+ case NOCOMMENT:
+ case STAYEPILOGUE:
+ case GAMEOVER:
+ assertEquals(EventFamily.ORDER, type.getEventFamily());
+ break;
+ case JUDGE:
+ case GUARD:
+ case COUNTING2:
+ assertEquals(EventFamily.EXTRA, type.getEventFamily());
+ break;
+ case ASSAULT:
+ case UNKNOWN:
+ assertNull(type.getEventFamily());
+ break;
+ default:
+ fail();
+ break;
+ }
+ }
+
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class TalkTypeTest {\r
-\r
- public TalkTypeTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class TalkType.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- TalkType[] values = TalkType.values();\r
- assertEquals(4, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class TalkType.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class TalkType.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals("public", TalkType.PUBLIC.getXmlName());\r
- assertEquals("wolf", TalkType.WOLFONLY.getXmlName());\r
- assertEquals("private", TalkType.PRIVATE.getXmlName());\r
- assertEquals("grave", TalkType.GRAVE.getXmlName());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 TalkTypeTest {
+
+ public TalkTypeTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class TalkType.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ TalkType[] values = TalkType.values();
+ assertEquals(4, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class TalkType.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class TalkType.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals("public", TalkType.PUBLIC.getXmlName());
+ assertEquals("wolf", TalkType.WOLFONLY.getXmlName());
+ assertEquals("private", TalkType.PRIVATE.getXmlName());
+ assertEquals("grave", TalkType.GRAVE.getXmlName());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class TeamTest {\r
-\r
- public TeamTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class Team.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- Team[] values = Team.values();\r
- assertEquals(3, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class Team.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getTeamName method, of class Team.\r
- */\r
- @Test\r
- public void testGetTeamName(){\r
- System.out.println("getTeamName");\r
- assertEquals("村陣営", Team.VILLAGE.getTeamName());\r
- assertEquals("狼陣営", Team.WOLF.getTeamName());\r
- assertEquals("ハムスター人間", Team.HAMSTER.getTeamName());\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class Team.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals("village", Team.VILLAGE.getXmlName());\r
- assertEquals("wolf", Team.WOLF.getXmlName());\r
- assertEquals("hamster", Team.HAMSTER.getXmlName());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 TeamTest {
+
+ public TeamTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class Team.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ Team[] values = Team.values();
+ assertEquals(3, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class Team.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getTeamName method, of class Team.
+ */
+ @Test
+ public void testGetTeamName(){
+ System.out.println("getTeamName");
+ assertEquals("村陣営", Team.VILLAGE.getTeamName());
+ assertEquals("狼陣営", Team.WOLF.getTeamName());
+ assertEquals("ハムスター人間", Team.HAMSTER.getTeamName());
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class Team.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals("village", Team.VILLAGE.getXmlName());
+ assertEquals("wolf", Team.WOLF.getXmlName());
+ assertEquals("hamster", Team.HAMSTER.getXmlName());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class VillageStateTest {\r
-\r
- public VillageStateTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class VillageState.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- VillageState[] values = VillageState.values();\r
- assertEquals(5, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class VillageState.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getXmlName method, of class VillageState.\r
- */\r
- @Test\r
- public void testGetXmlName(){\r
- System.out.println("getXmlName");\r
- assertEquals("prologue", VillageState.PROLOGUE.getXmlName());\r
- assertEquals("progress", VillageState.PROGRESS.getXmlName());\r
- assertEquals("epilogue", VillageState.EPILOGUE.getXmlName());\r
- assertEquals("gameover", VillageState.GAMEOVER.getXmlName());\r
- assertEquals("unknown", VillageState.UNKNOWN.getXmlName());\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+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 VillageStateTest {
+
+ public VillageStateTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class VillageState.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ VillageState[] values = VillageState.values();
+ assertEquals(5, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class VillageState.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of getXmlName method, of class VillageState.
+ */
+ @Test
+ public void testGetXmlName(){
+ System.out.println("getXmlName");
+ assertEquals("prologue", VillageState.PROLOGUE.getXmlName());
+ assertEquals("progress", VillageState.PROGRESS.getXmlName());
+ assertEquals("epilogue", VillageState.EPILOGUE.getXmlName());
+ assertEquals("gameover", VillageState.GAMEOVER.getXmlName());
+ assertEquals("unknown", VillageState.UNKNOWN.getXmlName());
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class VillageTagTest {\r
-\r
- public VillageTagTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of values method, of class VillageTag.\r
- */\r
- @Test\r
- public void testValues(){\r
- System.out.println("values");\r
- VillageTag[] values = VillageTag.values();\r
- assertEquals(42, values.length);\r
- return;\r
- }\r
-\r
- /**\r
- * Test of valueOf method, of class VillageTag.\r
- */\r
- @Test\r
- public void testValueOf(){\r
- // NOTHING\r
- return;\r
- }\r
-\r
- /**\r
- * Test of tagNameToVillageTag method, of class VillageTag.\r
- */\r
- @Test\r
- public void testTagNameToVillageTag(){\r
- System.out.println("tagNameToVillageTag");\r
-\r
- for(VillageTag tag : VillageTag.values()){\r
- String tagName = tag.getTagName();\r
- assertEquals(tag, VillageTag.tagNameToVillageTag(tagName));\r
- }\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getTagName method, of class VillageTag.\r
- */\r
- @Test\r
- public void testGetTagName(){\r
- System.out.println("getTagName");\r
- assertEquals("平凡な村", VillageTag.HEIBON.getTagName());\r
- assertEquals("星狩りの村", VillageTag.HOSHIKARI.getTagName());\r
- assertEquals("日の差さぬ村", VillageTag.HINOSASANU.getTagName());\r
- assertEquals("隠された村", VillageTag.KAKUSARETA.getTagName());\r
- assertEquals("日の沈まぬ村", VillageTag.HINOSHIZUMANU.getTagName());\r
- assertEquals("消え行く村", VillageTag.KIEYUKU.getTagName());\r
- assertEquals("怪しげな村", VillageTag.AYASHIGE.getTagName());\r
- assertEquals("山影の村", VillageTag.YAMAKAGE.getTagName());\r
- assertEquals("平和な村", VillageTag.HEIWA.getTagName());\r
- assertEquals("嘘つきの村", VillageTag.USOTSUKI.getTagName());\r
- assertEquals("悲しみの村", VillageTag.KANASHIMI.getTagName());\r
- assertEquals("恐ろしい村", VillageTag.OSOROSHII.getTagName());\r
- assertEquals("盆地の村", VillageTag.BONCHI.getTagName());\r
- assertEquals("幻の村", VillageTag.MABOROSHI.getTagName());\r
- assertEquals("謀略の村", VillageTag.BOURYAKU.getTagName());\r
- assertEquals("最果ての村", VillageTag.SAIHATE.getTagName());\r
- assertEquals("封印の村", VillageTag.HUUIN.getTagName());\r
- assertEquals("海辺の村", VillageTag.UMIBE.getTagName());\r
- assertEquals("開拓者の村", VillageTag.KAITAKUSHA.getTagName());\r
- assertEquals("断崖の村", VillageTag.DANGAI.getTagName());\r
- assertEquals("出会いの村", VillageTag.DEAI.getTagName());\r
- assertEquals("ふもとの村", VillageTag.HUMOTO.getTagName());\r
- assertEquals("峠の村", VillageTag.TOUGE.getTagName());\r
- assertEquals("血塗られた村", VillageTag.CHINURARETA.getTagName());\r
- assertEquals("僻地の村", VillageTag.HEKICHI.getTagName());\r
- assertEquals("安らぎの村", VillageTag.YASURAGI.getTagName());\r
- assertEquals("最後の村", VillageTag.SAIGO.getTagName());\r
- assertEquals("疑心暗鬼の村", VillageTag.GISHINANKI.getTagName());\r
- assertEquals("呪われた村", VillageTag.NOROWARETA.getTagName());\r
- assertEquals("新緑の村", VillageTag.SHINRYOKU.getTagName());\r
- assertEquals("荒地の村", VillageTag.ARECHI.getTagName());\r
- assertEquals("残された村", VillageTag.NOKOSARETA.getTagName());\r
- assertEquals("小さな村", VillageTag.CHIISANA.getTagName());\r
- assertEquals("極寒の村", VillageTag.GOKUKAN.getTagName());\r
- assertEquals("見捨てられた村", VillageTag.MISUTERARETA.getTagName());\r
- assertEquals("希望の村", VillageTag.KIBOU.getTagName());\r
- assertEquals("裏切りの村", VillageTag.URAGIRI.getTagName());\r
- assertEquals("沈黙の村", VillageTag.CHINMOKU.getTagName());\r
- assertEquals("雨の止まぬ村", VillageTag.AMENOYAMANU.getTagName());\r
- assertEquals("辺境の村", VillageTag.HENKYOU.getTagName());\r
- assertEquals("忘れられた村", VillageTag.WASURERARETA.getTagName());\r
- assertEquals("谷底の村", VillageTag.TANIZOKO.getTagName());\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getNextVillageTag method, of class VillageTag.\r
- */\r
- @Test\r
- public void testGetNextVillageTag(){\r
- System.out.println("getNextVillageTag");\r
-\r
- VillageTag[] values = VillageTag.values();\r
- for(int idx=0; idx <= values.length-1-1; idx++){\r
- VillageTag tag = values[idx];\r
- VillageTag next = values[idx+1];\r
- assertEquals(next, tag.getNextVillageTag());\r
- }\r
-\r
- VillageTag last = values[values.length-1];\r
- assertEquals(values[0], last.getNextVillageTag());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of getPrevVillageTag method, of class VillageTag.\r
- */\r
- @Test\r
- public void testGetPrevVillageTag(){\r
- System.out.println("getPrevVillageTag");\r
-\r
- VillageTag[] values = VillageTag.values();\r
- for(int idx=1; idx <= values.length-1; idx++){\r
- VillageTag tag = values[idx];\r
- VillageTag prev = values[idx-1];\r
- assertEquals(prev, tag.getPrevVillageTag());\r
- }\r
-\r
- VillageTag top = values[0];\r
- assertEquals(values[values.length-1], top.getPrevVillageTag());\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of lookingAtVillageTag method, of class VillageTag.\r
- */\r
- @Test\r
- public void testLookingAtVillageTag(){\r
- System.out.println("lookingAtVillageTag");\r
-\r
- Pattern pattern = Pattern.compile("");\r
-\r
- Matcher matcher;\r
-\r
- matcher = pattern.matcher("平凡な村");\r
- assertEquals(VillageTag.HEIBON, VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("谷底の村");\r
- assertEquals(VillageTag.TANIZOKO, VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("x平凡な村");\r
- assertNull(VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("x平凡な村x");\r
- assertNull(VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("平");\r
- assertNull(VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("平凡な村x");\r
- assertEquals(VillageTag.HEIBON, VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("");\r
- assertNull(VillageTag.lookingAtVillageTag(matcher));\r
-\r
- matcher = pattern.matcher("xxx");\r
- assertNull(VillageTag.lookingAtVillageTag(matcher));\r
-\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+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 VillageTagTest {
+
+ public VillageTagTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of values method, of class VillageTag.
+ */
+ @Test
+ public void testValues(){
+ System.out.println("values");
+ VillageTag[] values = VillageTag.values();
+ assertEquals(42, values.length);
+ return;
+ }
+
+ /**
+ * Test of valueOf method, of class VillageTag.
+ */
+ @Test
+ public void testValueOf(){
+ // NOTHING
+ return;
+ }
+
+ /**
+ * Test of tagNameToVillageTag method, of class VillageTag.
+ */
+ @Test
+ public void testTagNameToVillageTag(){
+ System.out.println("tagNameToVillageTag");
+
+ for(VillageTag tag : VillageTag.values()){
+ String tagName = tag.getTagName();
+ assertEquals(tag, VillageTag.tagNameToVillageTag(tagName));
+ }
+
+ return;
+ }
+
+ /**
+ * Test of getTagName method, of class VillageTag.
+ */
+ @Test
+ public void testGetTagName(){
+ System.out.println("getTagName");
+ assertEquals("平凡な村", VillageTag.HEIBON.getTagName());
+ assertEquals("星狩りの村", VillageTag.HOSHIKARI.getTagName());
+ assertEquals("日の差さぬ村", VillageTag.HINOSASANU.getTagName());
+ assertEquals("隠された村", VillageTag.KAKUSARETA.getTagName());
+ assertEquals("日の沈まぬ村", VillageTag.HINOSHIZUMANU.getTagName());
+ assertEquals("消え行く村", VillageTag.KIEYUKU.getTagName());
+ assertEquals("怪しげな村", VillageTag.AYASHIGE.getTagName());
+ assertEquals("山影の村", VillageTag.YAMAKAGE.getTagName());
+ assertEquals("平和な村", VillageTag.HEIWA.getTagName());
+ assertEquals("嘘つきの村", VillageTag.USOTSUKI.getTagName());
+ assertEquals("悲しみの村", VillageTag.KANASHIMI.getTagName());
+ assertEquals("恐ろしい村", VillageTag.OSOROSHII.getTagName());
+ assertEquals("盆地の村", VillageTag.BONCHI.getTagName());
+ assertEquals("幻の村", VillageTag.MABOROSHI.getTagName());
+ assertEquals("謀略の村", VillageTag.BOURYAKU.getTagName());
+ assertEquals("最果ての村", VillageTag.SAIHATE.getTagName());
+ assertEquals("封印の村", VillageTag.HUUIN.getTagName());
+ assertEquals("海辺の村", VillageTag.UMIBE.getTagName());
+ assertEquals("開拓者の村", VillageTag.KAITAKUSHA.getTagName());
+ assertEquals("断崖の村", VillageTag.DANGAI.getTagName());
+ assertEquals("出会いの村", VillageTag.DEAI.getTagName());
+ assertEquals("ふもとの村", VillageTag.HUMOTO.getTagName());
+ assertEquals("峠の村", VillageTag.TOUGE.getTagName());
+ assertEquals("血塗られた村", VillageTag.CHINURARETA.getTagName());
+ assertEquals("僻地の村", VillageTag.HEKICHI.getTagName());
+ assertEquals("安らぎの村", VillageTag.YASURAGI.getTagName());
+ assertEquals("最後の村", VillageTag.SAIGO.getTagName());
+ assertEquals("疑心暗鬼の村", VillageTag.GISHINANKI.getTagName());
+ assertEquals("呪われた村", VillageTag.NOROWARETA.getTagName());
+ assertEquals("新緑の村", VillageTag.SHINRYOKU.getTagName());
+ assertEquals("荒地の村", VillageTag.ARECHI.getTagName());
+ assertEquals("残された村", VillageTag.NOKOSARETA.getTagName());
+ assertEquals("小さな村", VillageTag.CHIISANA.getTagName());
+ assertEquals("極寒の村", VillageTag.GOKUKAN.getTagName());
+ assertEquals("見捨てられた村", VillageTag.MISUTERARETA.getTagName());
+ assertEquals("希望の村", VillageTag.KIBOU.getTagName());
+ assertEquals("裏切りの村", VillageTag.URAGIRI.getTagName());
+ assertEquals("沈黙の村", VillageTag.CHINMOKU.getTagName());
+ assertEquals("雨の止まぬ村", VillageTag.AMENOYAMANU.getTagName());
+ assertEquals("辺境の村", VillageTag.HENKYOU.getTagName());
+ assertEquals("忘れられた村", VillageTag.WASURERARETA.getTagName());
+ assertEquals("谷底の村", VillageTag.TANIZOKO.getTagName());
+ return;
+ }
+
+ /**
+ * Test of getNextVillageTag method, of class VillageTag.
+ */
+ @Test
+ public void testGetNextVillageTag(){
+ System.out.println("getNextVillageTag");
+
+ VillageTag[] values = VillageTag.values();
+ for(int idx=0; idx <= values.length-1-1; idx++){
+ VillageTag tag = values[idx];
+ VillageTag next = values[idx+1];
+ assertEquals(next, tag.getNextVillageTag());
+ }
+
+ VillageTag last = values[values.length-1];
+ assertEquals(values[0], last.getNextVillageTag());
+
+ return;
+ }
+
+ /**
+ * Test of getPrevVillageTag method, of class VillageTag.
+ */
+ @Test
+ public void testGetPrevVillageTag(){
+ System.out.println("getPrevVillageTag");
+
+ VillageTag[] values = VillageTag.values();
+ for(int idx=1; idx <= values.length-1; idx++){
+ VillageTag tag = values[idx];
+ VillageTag prev = values[idx-1];
+ assertEquals(prev, tag.getPrevVillageTag());
+ }
+
+ VillageTag top = values[0];
+ assertEquals(values[values.length-1], top.getPrevVillageTag());
+
+ return;
+ }
+
+ /**
+ * Test of lookingAtVillageTag method, of class VillageTag.
+ */
+ @Test
+ public void testLookingAtVillageTag(){
+ System.out.println("lookingAtVillageTag");
+
+ Pattern pattern = Pattern.compile("");
+
+ Matcher matcher;
+
+ matcher = pattern.matcher("平凡な村");
+ assertEquals(VillageTag.HEIBON, VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("谷底の村");
+ assertEquals(VillageTag.TANIZOKO, VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("x平凡な村");
+ assertNull(VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("x平凡な村x");
+ assertNull(VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("平");
+ assertNull(VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("平凡な村x");
+ assertEquals(VillageTag.HEIBON, VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("");
+ assertNull(VillageTag.lookingAtVillageTag(matcher));
+
+ matcher = pattern.matcher("xxx");
+ assertNull(VillageTag.lookingAtVillageTag(matcher));
+
+ return;
+ }
+
+}
-/*\r
- * License : The MIT License\r
- * Copyright(c) 2009 olyutorskii\r
- */\r
-\r
-package jp.sourceforge.jindolf.corelib;\r
-\r
-import java.io.IOException;\r
-import java.net.URI;\r
-import java.util.Map;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
-import org.junit.Before;\r
-import org.junit.BeforeClass;\r
-import org.junit.Test;\r
-import static org.junit.Assert.*;\r
-\r
-/**\r
- */\r
-public class XmlResourceTest {\r
-\r
- public XmlResourceTest() {\r
- }\r
-\r
- @BeforeClass\r
- public static void setUpClass() throws Exception{\r
- }\r
-\r
- @AfterClass\r
- public static void tearDownClass() throws Exception{\r
- }\r
-\r
- @Before\r
- public void setUp() {\r
- }\r
-\r
- @After\r
- public void tearDown() {\r
- }\r
-\r
- /**\r
- * Test of static field.\r
- */\r
- @Test\r
- public void testStaticField(){\r
- System.out.println("staticfields");\r
- Map<URI, URI> map = XmlResource.RESOLVE_MAP;\r
- assertNotNull(map);\r
-\r
- assertEquals(XmlResource.I_URI_EXTXML, map.get(XmlResource.O_URI_EXTXML));\r
- assertEquals(XmlResource.I_URI_CORETYPE, map.get(XmlResource.O_URI_CORETYPE));\r
- assertEquals(XmlResource.I_URI_COREXML, map.get(XmlResource.O_URI_COREXML));\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of resource.\r
- */\r
- @Test\r
- public void testResource(){\r
- System.out.println("resource");\r
- Map<URI, URI> map = XmlResource.RESOLVE_MAP;\r
-\r
- for(Map.Entry<URI,URI> entry : map.entrySet()){\r
- URI in = entry.getValue();\r
- try{\r
- in.toURL().openStream();\r
- }catch(IOException e){\r
- fail();\r
- }\r
- }\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * Test of net resource.\r
- */\r
-// @Test\r
- public void nettestNetResource(){\r
- System.out.println("netresource");\r
- Map<URI, URI> map = XmlResource.RESOLVE_MAP;\r
-\r
- for(Map.Entry<URI,URI> entry : map.entrySet()){\r
- URI out = entry.getKey();\r
- try{\r
- out.toURL().openStream();\r
- }catch(IOException e){\r
- fail();\r
- }\r
- }\r
-\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * License : The MIT License
+ * Copyright(c) 2009 olyutorskii
+ */
+
+package jp.sourceforge.jindolf.corelib;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Map;
+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 XmlResourceTest {
+
+ public XmlResourceTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception{
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception{
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of static field.
+ */
+ @Test
+ public void testStaticField(){
+ System.out.println("staticfields");
+ Map<URI, URI> map = XmlResource.RESOLVE_MAP;
+ assertNotNull(map);
+
+ assertEquals(XmlResource.I_URI_EXTXML, map.get(XmlResource.O_URI_EXTXML));
+ assertEquals(XmlResource.I_URI_CORETYPE, map.get(XmlResource.O_URI_CORETYPE));
+ assertEquals(XmlResource.I_URI_COREXML, map.get(XmlResource.O_URI_COREXML));
+
+ return;
+ }
+
+ /**
+ * Test of resource.
+ */
+ @Test
+ public void testResource(){
+ System.out.println("resource");
+ Map<URI, URI> map = XmlResource.RESOLVE_MAP;
+
+ for(Map.Entry<URI,URI> entry : map.entrySet()){
+ URI in = entry.getValue();
+ try{
+ in.toURL().openStream();
+ }catch(IOException e){
+ fail();
+ }
+ }
+
+ return;
+ }
+
+ /**
+ * Test of net resource.
+ */
+// @Test
+ public void nettestNetResource(){
+ System.out.println("netresource");
+ Map<URI, URI> map = XmlResource.RESOLVE_MAP;
+
+ for(Map.Entry<URI,URI> entry : map.entrySet()){
+ URI out = entry.getKey();
+ try{
+ out.toURL().openStream();
+ }catch(IOException e){
+ fail();
+ }
+ }
+
+ return;
+ }
+
+}