Index: [Article Count Order] [Thread]

Date:  Tue, 12 Sep 2000 20:36:15 +0900
From:  firo <firo@....jp>
Subject:  [XP-jp:00870] Re: Member, MemberList, MemberAuthorization
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <00Sep12.203708jst.115202@....jp>
References:  <B5E089B1.3579%khosokawa@....com>
Posted:  Tue, 12 Sep 2000 20:37:07 +0900
X-Mail-Count: 00870

矢崎です。

[XP-jp:00861]までの以下のコードを整理してみました。
MemberAuthorizerTest.java
MemberAuthorizer.java
MemberListTest.java
MemberList.java
AllTests.java

JUnitのテストまで通っています。

でお願いがあるのですが、どなたか以下のコードをCVSにチェックインして
いただけないでしょうか?今、壁の中なのでこちらからはできないのです。

#Member.javaと、MemberTest.javaについては既ににチェックインされて
いるようなので、対象からはずしました。


##追記
[XP-jp:00861]までの、と書きましたが、私の考えた修正が多少はいって
います。

1.MemberAuthorizerのverifyメソッドは不要になったようなので、今は
 コメントアウトしています。私の認識がまちがっていなければ削除します。  
  
2.1にともなって、MemberAuthorizerTestのtestInvalidMemberメソッドも
 不要になった?(だから今はコメントです)私の認識がまちがっていなければ
 削除します。  

3.MemberListTestのtestDuplicationMemberメソッドを修正しました。

4.MemberListTestにtestContainsメソッドを追加。

5.MemberListのaddメソッドを修正。

6.MemberListのcontainsメソッドを修正。




/*
 * @(#)MemberAuthorizerTest.java
 */
package XP.jp.co.esm.wiki.extremedomo;

import junit.framework.*;

public class MemberAuthorizerTest extends TestCase {
    public MemberAuthorizerTest(String name) {
        super(name);
    }
    public static void main(String[] args) {
        junit.textui.TestRunner.run(MemberAuthorizerTest.class);
    }
    public void testValidMember() {
        assert(authorizer.isValid(firstMember));
    }
/*    public void testInvalidMember() {
        assert(!authorizer.verify(invalidMember.getMailAddress()));
    }*/
    protected void setUp() {
        memberList.add(firstMember);
        memberList.add(secondMember);
        authorizer = new MemberAuthorizer(memberList);
    }

    private MemberAuthorizer authorizer;
    private MemberList memberList = new MemberList();
    private Member firstMember = new Member("aaa@....ccc");
    private Member secondMember = new Member("ddd@....fff");
    private Member invalidMember = new Member("xxx@....zzz");
}



/*
 * @(#)MemberAuthorizer.java
 */
package XP.jp.co.esm.wiki.extremedomo;

import java.util.*;

public class MemberAuthorizer {

    public MemberAuthorizer(MemberList aMemberList) {
        memberList = aMemberList;
    }

/*    public boolean verify(String aMailAddress) {
        return memberList.mailAddressSet().contains(aMailAddress);
    }*/

    public boolean isValid(Member member) {
        return memberList.contains(member);
    }

    private MemberList memberList;
}



/*
 * @(#)MemberListTest.java
 */
package XP.jp.co.esm.wiki.extremedomo;

import junit.framework.*;

public class MemberListTest extends TestCase {
    public MemberListTest(String name) {
        super(name);
    }
    public static void main(String[] args) {
        junit.textui.TestRunner.run(MemberListTest.class);
    }
    public void testNewMemberList() {
        MemberList memberList = new MemberList();
        assertEquals(memberList.size(), 0);
    }
    public void testOneMemberList() {
        MemberList memberList = new MemberList();
        memberList.add(firstMember);
        assertEquals(memberList.size(), 1);
    }

    public void testDuplicationMember() {
        MemberList memberList = new MemberList();
        memberList.add(firstMember);
        memberList.add(secondMember);
        try {
            memberList.add(firstMember);
            fail("Should raise an IllegalArgumentException1");
        } catch (IllegalArgumentException e) {
            assert(true);
        }

        Member nullAddressMember = new Member(null);
        memberList.add(nullAddressMember);
        try {
            memberList.add(nullAddressMember);
            fail("Should raise an IllegalArgumentException2");
        } catch (IllegalArgumentException e) {
            assert(true);
        }

        Member sameAddressMember = new Member("aaa@....ccc");
        try {
            memberList.add(sameAddressMember);
            fail("Should raise an IllegalArgumentException3");
        } catch (IllegalArgumentException e) {
            assert(true);
        }

        try {
            memberList.add(null);
            assert(true);
        } catch (IllegalArgumentException e) {
            fail("Should raise an IllegalArgumentException4");
        }

    }

    public void testGetMember() {
        MemberList memberList = new MemberList();
        memberList.add(firstMember);
        memberList.add(secondMember);
        assertEquals(
          firstMember,
          memberList.get(firstMember.getMailAddress())
        );
    }
    public void testUnmodifiableMemberSet() {
        MemberList memberList = new MemberList();
        memberList.add(firstMember);
        memberList.add(secondMember);
        try {
            memberList.mailAddressSet().add("xxx@....zzz");
            fail("Should raise an UnsupportedOperationException");
        } catch (UnsupportedOperationException e) {
            assert(true);
        }
    }
    public void testUnmodifiableMailAddressSet() {
        MemberList memberList = new MemberList();
        memberList.add(firstMember);
        memberList.add(secondMember);
        try {
            memberList.memberSet().add(new Member("xxx@....zzz"));
            fail("Should raise an UnsupportedOperationException");
        } catch (UnsupportedOperationException e) {
            assert(true);
        }
    }

    public void testContains(){

        MemberList memberList = new MemberList();

        Member thirdMember = new Member("ggg@....iii");
        Member forthMember = new Member("jjj@....lll");
        Member fifthMember = new Member("aaa@....ccc");
        Member sixthMember = new Member("ddd@....fff");
        Member seventhMember = new Member(null);

        memberList.add(firstMember);
        memberList.add(secondMember);
        memberList.add(thirdMember);

        assert("test1", memberList.contains(firstMember));
        assert("test2", memberList.contains(secondMember));
        assert("test3", memberList.contains(thirdMember));
        assert("test4", ! memberList.contains(forthMember));
        assert("test5", memberList.contains(fifthMember));
        assert("test6", memberList.contains(sixthMember));
        assert("test7", ! memberList.contains(seventhMember));
        assert("test8", ! memberList.contains(null));
        memberList.add(seventhMember);
        assert("test9", memberList.contains(seventhMember));

    }

    protected void setUp() {
        firstMember = new Member("aaa@....ccc");
        secondMember = new Member("ddd@....fff");
    }


    private Member firstMember;
    private Member secondMember;
}




/*
 * @(#)MemberList.java
 */
package XP.jp.co.esm.wiki.extremedomo;

import java.util.*;

public class MemberList {

    public void add(Member aMember) {
        if (contains(aMember)) throw new IllegalArgumentException();
        if (aMember == null) return;
        members.put(aMember.getMailAddress(), aMember);
    }

    public Member get(String aMailAddress) {
        return (Member)members.get(aMailAddress);
    }

    public int size() {
        return members.size();
    }

    public Set memberSet() {
        return Collections.unmodifiableSet(members.entrySet());
    }

    public Set mailAddressSet() {
        return Collections.unmodifiableSet(members.keySet());
    }

    public boolean contains(Member member) {
        if (member == null) return false;
        return mailAddressSet().contains(member.getMailAddress());
    }

    private HashMap members = new HashMap();
}


/*
 * @(#)AllTests.java
 */
package XP.jp.co.esm.wiki.extremedomo;

import junit.framework.*;

public class AllTests {
    public static void main (String[] args) {
        junit.textui.TestRunner.run(suite());
    }
    public static Test suite() {
        TestSuite suite= new TestSuite("All Tests");
        suite.addTest(new
TestSuite(XP.jp.co.esm.wiki.extremedomo.MemberTest.class));
        suite.addTest(new
TestSuite(XP.jp.co.esm.wiki.extremedomo.MemberListTest.class));
        suite.addTest(new
TestSuite(XP.jp.co.esm.wiki.extremedomo.MemberAuthorizerTest.class));
    return suite;
    }
}


Kaoru Hosokawa さんwrote:

>
>
> Test-First Programming を実践しようと思っていますので、テストからコメントし
> ます。
>
> testValidMember() を、書き直して見ました
>
>     private MemberAuthorizer authorizer;
>
>     public void testValidMember() {
>         assert(authorizer.isValid(firstMember));
>     }
>
> MemberAuthorization は、データを意味する名前ですので、MemberAuthorizer にか
> えました。Authorizer という言葉はないと思いますが、許可を出す人と言うイメー
> ジです。この人に firstMember は、正会員かどうか訪ねるというコードにしました。
> メールアドレスをgetして渡すよりはシンプルだと思います。
>
> MemberAuthorizer の isValid() は、
>
> public boolean isValid(Member member) {
>     return memberList.contains(member);
> }
>
> // public class MemberList
>
> public boolean contains(Member member) {
>     return memberList.mailAddressSet().contains(member.getMailAddress());
> }
>
> のように考えました。mailAddressSet() などはあまり外に出したくないという意図
> があります。
>
> #このコードもコンパイル、実行していません。
>

--
矢崎博英  firo@....jp