You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@depot.apache.org by ni...@apache.org on 2004/08/19 07:33:23 UTC

svn commit: rev 36595 - incubator/depot/trunk/version/src/test/java/org/apache/depot/version

Author: nickchalko
Date: Thu Aug 19 00:33:22 2004
New Revision: 36595

Modified:
   incubator/depot/trunk/version/src/test/java/org/apache/depot/version/VersionTestCase.java
Log:
A lot more tests.

Modified: incubator/depot/trunk/version/src/test/java/org/apache/depot/version/VersionTestCase.java
==============================================================================
--- incubator/depot/trunk/version/src/test/java/org/apache/depot/version/VersionTestCase.java	(original)
+++ incubator/depot/trunk/version/src/test/java/org/apache/depot/version/VersionTestCase.java	Thu Aug 19 00:33:22 2004
@@ -58,27 +58,135 @@
 	public void testEquality() {
 		assertSymetricNotEquals(base, Version.UNKNOWN);
 
-		assertEquals("Version of " + getBaseVersionString(), base, same);
-		assertEquals("Version of " + getBaseVersionString(), same, base);
+		assertSymetricEquals(base, same);
 		assertSymetricNotEquals(nonCompatible, base);
 		assertSymetricNotEquals(compatible, base);
 	}
 
 	public void testComparable() {
-		assertSymetricComparableZero(base, same);
+		assertSymetricComparableEquals(base, same);
 		assertSymetricCompare(base, nonCompatible);
 	}
 
 	public void testComparator() {
 		Version v1 = base;
 		Version v2 = same;
-
+		assertSymetricComparatorEquals(base, same);
 		Version less = base;
 		Version more = nonCompatible;
 		assertSymetricComparator(less, more);
 
 	}
 
+	public void testIncrement() throws VersionException {
+		test5increments(base, getNonCompatibleIncrement(), false);
+		test5increments(base, getCompatibleIncrement(), true);
+
+	}
+
+	/**
+	 * @param start
+	 * @param incrementLevel
+	 * @param compatible
+	 * @throws VersionException
+	 */
+	public void test5increments(Version start, final String incrementLevel,
+			final boolean compatible) throws VersionException {
+
+		testIncrement(start, incrementLevel, compatible, 5);
+	}
+
+	/**
+	 * @param start
+	 * @param incrementLevel
+	 * @param compatible
+	 * @param iterations
+	 * @throws VersionException
+	 */
+	public void testIncrement(Version start, final String incrementLevel,
+			final boolean compatible, int iterations) throws VersionException {
+		Version last = start;
+		for (int i = 0; i < iterations; i++) {
+			Version next = last.increment(incrementLevel);
+			assertVersionReleation(start, next, compatible, -1);
+			assertVersionReleation(last, next, compatible, -1);
+
+		}
+	}
+
+	/**
+	 * Assert the ordering, and compatablity of two versions. Tests eqauls,
+	 * Comparable,Comparator and isCompatible.
+	 * 
+	 * @param v1
+	 *            a Version
+	 * @param v2
+	 *            a Version
+	 * @param compatible
+	 * @param
+	 */
+	public void assertVersionReleation(Version v1, Version v2,
+			final boolean compatible, int compare) {
+
+		if (compare == 0 && !compatible) {
+			throw new IllegalArgumentException(
+					"If a version is equal it must be compatable.  The test setup is illegal");
+		}
+		if (compare == 0) {
+			assertSymetricEquals(v1, v2);
+			assertSymetricComparableEquals(v1, v2);
+			assertSymetricComparatorEquals(v1, v2);
+		} else {
+			assertSymetricNotEquals(v1, v2);
+			Version less = v1, more = v2;
+			if (compare > 0) {
+				less = v2;
+				more = v1;
+			}
+			assertSymetricLess(less, more);
+		}
+		assertSymetricCompatability(v1, v2, compatible);
+	}
+
+	/**
+	 * @param v1
+	 * @param v2
+	 * @param expected
+	 */
+	private void assertSymetricCompatability(Version v1, Version v2,
+			final boolean expected) {
+		assertEquals(v1 + " compatbile with " + v2, expected, v1
+				.isCompatible(v2));
+		assertEquals(v2 + " compatbile with " + v1, expected, v2
+				.isCompatible(v1));
+	}
+
+	/**
+	 * @param less
+	 * @param more
+	 */
+	private void assertSymetricLess(Version less, Version more) {
+		assertSymetricComparator(less, more);
+		assertSymetricCompare(less, more);
+	}
+
+	/**
+	 * @param v1
+	 * @param v2
+	 */
+	private void assertSymetricComparatorEquals(Version v1, Version v2) {
+		Comparator c = v1.getComparator();
+		assertEquals("Using first comparator   " + c + ". " + v1
+				+ " compare to " + v2, 0, v1.compareTo(v2));
+		assertEquals("Using first comparator " + c + ". " + v2 + " compare to "
+				+ v1, 0, v2.compareTo(v1));
+		c = v2.getComparator();
+		assertEquals("Using second comparator " + c + ". " + v1
+				+ " compare to " + v2, 0, v1.compareTo(v2));
+		assertEquals("Using second comparator " + c + ". " + v2, 0, v2
+				.compareTo(v1));
+	}
+
 	/**
 	 * @param less
 	 * @param more
@@ -86,17 +194,17 @@
 	private void assertSymetricComparator(Version less, Version more) {
 		Comparator c = less.getComparator();
 		assertTrue("Using comparator " + c + " of the lesser. " + less
-				+ " compare to " + more + " shoule be <0 but was "
+				+ " compare to " + more + " should be <0 but was "
 				+ less.compareTo(more), less.compareTo(more) < 0);
 		assertTrue("Using comparator " + c + " ofthe lesser. " + more
-				+ " compare to " + less + " shoule be <0 but was "
+				+ " compare to " + less + " should be <0 but was "
 				+ more.compareTo(less), more.compareTo(less) > 0);
 		c = more.getComparator();
 		assertTrue("Using comparator " + c + " of the greator. " + less
-				+ " compare to " + more + " shoule be <0 but was "
+				+ " compare to " + more + " should be <0 but was "
 				+ less.compareTo(more), less.compareTo(more) < 0);
 		assertTrue("Using comparator " + c + " ofthe greator. " + more
-				+ " compare to " + less + " shoule be <0 but was "
+				+ " compare to " + less + " should be <0 but was "
 				+ more.compareTo(less), more.compareTo(less) > 0);
 	}
 
@@ -105,9 +213,9 @@
 	 * @param more
 	 */
 	private void assertSymetricCompare(Version less, Version more) {
-		assertTrue(less + " compare " + more + " shoule be <0 but was "
+		assertTrue(less + " compare " + more + " should be <0 but was "
 				+ less.compareTo(more), less.compareTo(more) < 0);
-		assertTrue(more + " compare " + less + " shoule be > 0 but was "
+		assertTrue(more + " compare " + less + " should be > 0 but was "
 				+ more.compareTo(less), more.compareTo(less) > 0);
 	}
 
@@ -115,7 +223,7 @@
 	 * @param v1
 	 * @param v2
 	 */
-	private void assertSymetricComparableZero(Version v1, Version v2) {
+	private void assertSymetricComparableEquals(Version v1, Version v2) {
 		assertEquals(v1 + " compare " + v2, 0, v1.compareTo(v2));
 		assertEquals(v2 + " compare " + v1, 0, v2.compareTo(v1));
 	}
@@ -151,20 +259,22 @@
 	 * @param v1
 	 * @param v2
 	 */
-	public void assertSymetricNotEquals(Version v1, Version v2) {
+	private void assertSymetricNotEquals(Version v1, Version v2) {
 		assertTrue(v2 + " should not equals " + v1, !v2.equals(v1));
 		assertTrue(v1 + " should not equals " + v2, !v1.equals(v2));
 	}
 
 	/**
-	 * assert v1.eqauls(v2) && v2.equals(v1)
+	 * assert v1.eqauls(v2) && v2.equals(v1) and v1.hashCode == v2.hashCode
 	 * 
 	 * @param v1
 	 * @param v2
 	 */
-	public void assertSymetricEquals(Version v1, Version v2) {
+	private void assertSymetricEquals(Version v1, Version v2) {
 		assertEquals(v2 + " should equal " + v1, v2, v1);
 		assertEquals(v1 + " should equal " + v2, v1, v2);
+		assertEquals("hashcode of " + v1 + " and " + v2, v1.hashCode(), v2
+				.hashCode());
 	}
 
 	/**