Index: [Article Count Order] [Thread]

Date:  Sat, 16 Sep 2000 09:59:43 +0900
From:  Kaoru Hosokawa <khosokawa@....com>
Subject:  [XP-jp:00886] Re: VXP タスク3	--Config
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <B5E8632F.3764%khosokawa@....com>
In-Reply-To:  <00Sep14.200111jst.115202@....jp>
Posted:  Sat, 16 Sep 2000 09:58:16 +0900
X-Mail-Count: 00886

ホソカワです。

on 00.9.14 8:00 PM, firo at firo@....jp wrote:

> 矢崎です。続きです。
> 
> (太郎さん)
> 今コーヒー飲みながら次郎君から聞いたんだけれど、
> Configファイルにある頭が「X-」で始まるものは、RFC
> で決まっていないものということで、まあ、設定者が
> 好きに決めれるみたい。だから、これは自由設定OKと
> いうことで、それ専用のアクセサを作らないで、Config
> に書いてある順番で取り出せるようにしよう(あくまでも
> 頭が「X-」で始まるものだけ)。

すみません。どうして順番に取りだせるようにするのでしょうか?フィールドごとに
get できた方が使いやすいと思いますが…

> でも、MLの名前だけは、
> これは仮の宛先に使われるんだよね。きっと。だから
> こいつは特別扱いする必要あり。ということで、getName
> はそのままっと。
> 
> えーとtestConstructor1と3を書きなおせばいいかな?
> あ、それと、Configファイルの中身もテストメソッド自身に
> 書かせちゃおう。testConstructor1と3に必要だから、
> こんな感じ?
> 
> ・・・・
> /*
> * @(#)ConfigTest.java
> */
> package XP.jp.co.esm.wiki.extremedomo;
> 
> import junit.framework.*;
> import java.io.*;
> import java.util.*;
> 
> public class ConfigTest extends TestCase {
> 
> public ConfigTest(String name) {
> super(name);
> }
> 
> public static void main(String[] args) {
> junit.textui.TestRunner.run(ConfigTest.class);
> }
> 
> public void testConstructor1(){
> FileOutputStream fo;
> try{
> fo = new FileOutputStream("config");
> }catch(FileNotFoundException e){
> throw new RuntimeException("unable to open config file");
> }
> PrintWriter pw = new PrintWriter(fo);
> pw.println("X-ML-Name: extremeprogramming-jp");
> pw.println("Y-ML-Name: extremeprogramming-false");
> pw.println("X-Mail-Count: 00796");
> pw.println("Y-Mail-Count: 00888");
> pw.println("X-MLServer: fml [fml 2.1_GAMMA#185](distribute only
> mode)");
> pw.println("Y-MLServer: fml [fml 2.1_GAMMA#185](not distribute
> only mode)");
> pw.println("X-ML-Info: If you have a question, contact with me");
> pw.println("Y-ML-Info: If you have a question, do not contact with
> me");
> pw.close();
> try{
> fo.close();
> }catch(IOException e){
> throw new RuntimeException("error on closing  config file");
> }
> 
> Config aConfig = new Config("config");
> assertEquals("test1", "extremeprogramming-jp", aConfig.getName());
> 
> Iterator iterator = aConfig.getXInfo();
> assertEquals("test2", "X-ML-Name: extremeprogramming-jp",
> iterator.next( ));
> assertEquals("test3", "X-Mail-Count: 00796", iterator.next( ));
> assertEquals("test4", "X-MLServer: fml [fml
> 2.1_GAMMA#185](distribute only mode)", iterator.next());
> assertEquals("test5", "X-ML-Info: If you have a question, contact
> with me", iterator.next());
> assert("test6", ! iterator.hasNext());
> 
> }
> 

testConstructor1 は、ちょっと長いと思いましたので refactor させていただきま
した。

    public void testCorrectConfig() {
        String correctFilename = "CorrectConfig";

        createCorrectConfigFile(correctFileName);
        Config aConfig = new Config(correctFileName);
        assertEquals("test1", "extremeprogramming-jp", aConfig.getName());
        // ...
    }

    private void createCorrectConfigFile(String filename) {
        FileOutputStream fo;
        try {
            fo = new FileOutputStream(filename);
        } catch (FileNotFoundException e) {
            throw new RuntimeException("unable to open config file");
        }
        PrintWriter pw = new PrintWriter(fo);
        pw.println("X-ML-Name: extremeprogramming-jp");
        pw.println("X-Mail-Count: 00796");
        // ...
    }

何をテストしているのが伝わってこなかってので、名前を testCorrectConfig に変
えました。最初に正しいコンフィグファイルを作成します。それから、テストをする
ようにしました。

また、

    private void createCorrectConfigFile(filename) {
        Config aConfig = new Config();
        aConfig.setName("extremeprogramming-jp");
        // ...
        aConfig.save(filename);
    }

の様に Config にファイルに吐き出す機能を追加すればもっときれいですね。

-- 
Kaoru Hosokawa
khosokawa@....com