svnno****@sourc*****
svnno****@sourc*****
2009年 9月 20日 (日) 22:14:11 JST
Revision: 3621 http://sourceforge.jp/projects/jiemamy/svn/view?view=rev&revision=3621 Author: daisuke_m Date: 2009-09-20 22:14:11 +0900 (Sun, 20 Sep 2009) Log Message: ----------- Version実装テストの充実。 Modified Paths: -------------- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisVersion.java artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/ArtemisVersionTest.java Modified: artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisVersion.java =================================================================== --- artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisVersion.java 2009-09-20 12:57:04 UTC (rev 3620) +++ artemis/trunk/jiemamy-core/src/main/java/org/jiemamy/ArtemisVersion.java 2009-09-20 13:14:11 UTC (rev 3621) @@ -79,7 +79,7 @@ private final boolean snapshot; - private ArtemisVersion(int major, int minor, int release, boolean snapshot) { + ArtemisVersion(int major, int minor, int release, boolean snapshot) { this.major = major; this.minor = minor; this.release = release; Modified: artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/ArtemisVersionTest.java =================================================================== --- artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/ArtemisVersionTest.java 2009-09-20 12:57:04 UTC (rev 3620) +++ artemis/trunk/jiemamy-core/src/test/java/org/jiemamy/ArtemisVersionTest.java 2009-09-20 13:14:11 UTC (rev 3621) @@ -19,9 +19,13 @@ package org.jiemamy; import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; +import java.util.Arrays; +import java.util.List; + import org.junit.Test; /** @@ -33,12 +37,12 @@ public class ArtemisVersionTest { /** - * {@link ArtemisVersion#parse(String)}及びその他色々テスト。 + * 文字列を意図通りにパースでき_デシリアライズ互換性をチェックできる。 * * @throws Exception 例外が発生した場合 */ @Test - public void test03_version_test() throws Exception { + public void test01_文字列を意図通りにパースでき_デシリアライズ互換性をチェックできる() throws Exception { Version v1 = ArtemisVersion.parse("9.8.7"); assertThat(v1.getMajor(), is(9)); assertThat(v1.getMinor(), is(8)); @@ -94,4 +98,94 @@ // success } } + + /** + * TODO for daisuke + * + * @throws Exception 例外が発生した場合 + */ + @Test + public void testname() throws Exception { + Version v1 = new ArtemisVersion(1, 2, 3, false); + Version v2 = new ArtemisVersion(1, 2, 3, false); + Version v3 = new ArtemisVersion(1, 2, 4, false); + Version v4 = new OtherVersionImpl(1, 2, 3, false); + + // equalsのチェック 兼 推移性のチェック + assertThat(v1.equals(v2), is(true)); + assertThat(v1.equals(v3), is(false)); + assertThat(v1.equals(v4), is(true)); + assertThat(v2.equals(v3), is(false)); + assertThat(v2.equals(v4), is(true)); + assertThat(v3.equals(v4), is(false)); + + assertThat(v1.hashCode(), is(v2.hashCode())); + assertThat(v1.hashCode(), is(not(v3.hashCode()))); + assertThat(v1.hashCode(), is(v4.hashCode())); + assertThat(v2.hashCode(), is(not(v3.hashCode()))); + assertThat(v2.hashCode(), is(v4.hashCode())); + assertThat(v3.hashCode(), is(not(v4.hashCode()))); + + List<Version> list = Arrays.asList(v1, v2, v3, v4); + for (Version version : list) { + + // 反射性 + assertThat(version.equals(version), is(true)); + + // 対称性 + for (Version version2 : list) { + assertThat(version.equals(version2), is(version2.equals(version))); + } + } + } + + + private static final class OtherVersionImpl implements Version { + + Version delegate; + + + OtherVersionImpl(int major, int minor, int release, boolean snapshot) { + delegate = new ArtemisVersion(major, minor, release, snapshot); + } + + public boolean canDeserialize(Version target) { + return delegate.canDeserialize(target); + } + + @Override + public boolean equals(Object obj) { + return delegate.equals(obj); + } + + public int getMajor() { + return delegate.getMajor(); + } + + public int getMinor() { + return delegate.getMinor(); + } + + public int getRelease() { + return delegate.getRelease(); + } + + @Override + public int hashCode() { + return delegate.hashCode(); + } + + public boolean isSnapshot() { + return delegate.isSnapshot(); + } + + @Override + public String toString() { + return delegate.toString(); + } + + public String toStringSpec() { + return delegate.toStringSpec(); + } + } }