[Jiemamy-notify:2685] commit [3621] Version実装テストの充実。

Back to archive index

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();
+		}
+	}
 }




Jiemamy-notify メーリングリストの案内
Back to archive index