Author: brett
Date: Tue Jul 19 01:41:28 2005
New Revision: 219631

URL: http://svn.apache.org/viewcvs?rev=219631&view=rev
Log:
PR: MNG-505
test for correct ordering and overlap

Modified:
    
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
    
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java

Modified: 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java?rev=219631&r1=219630&r2=219631&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/main/java/org/apache/maven/artifact/versioning/VersionRange.java
 Tue Jul 19 01:41:28 2005
@@ -54,6 +54,8 @@
         List restrictions = new ArrayList();
         String process = spec;
         ArtifactVersion version = null;
+        ArtifactVersion upperBound = null;
+        ArtifactVersion lowerBound = null;
 
         while ( process.startsWith( "[" ) || process.startsWith( "(" ) )
         {
@@ -74,7 +76,20 @@
                 throw new InvalidVersionSpecificationException( "Unbounded 
range: " + spec );
             }
 
-            restrictions.add( parseRestriction( process.substring( 0, index + 
1 ) ) );
+            Restriction restriction = parseRestriction( process.substring( 0, 
index + 1 ) );
+            if ( lowerBound == null )
+            {
+                lowerBound = restriction.getLowerBound();
+            }
+            if ( upperBound != null )
+            {
+                if ( restriction.getLowerBound() == null || 
restriction.getLowerBound().compareTo( upperBound ) < 0 )
+                {
+                    throw new InvalidVersionSpecificationException( "Ranges 
overlap: " + spec );
+                }
+            }
+            restrictions.add( restriction );
+            upperBound = restriction.getUpperBound();
 
             process = process.substring( index + 1 ).trim();
 
@@ -141,6 +156,11 @@
             if ( upperBound.length() > 0 )
             {
                 upperVersion = new DefaultArtifactVersion( upperBound );
+            }
+
+            if ( upperVersion != null && lowerVersion != null && 
upperVersion.compareTo( lowerVersion ) < 0 )
+            {
+                throw new InvalidVersionSpecificationException( "Range defies 
version ordering: " + spec );
             }
 
             restriction = new Restriction( lowerVersion, lowerBoundInclusive, 
upperVersion, upperBoundInclusive );

Modified: 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java?rev=219631&r1=219630&r2=219631&view=diff
==============================================================================
--- 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
 (original)
+++ 
maven/components/trunk/maven-artifact/src/test/java/org/apache/maven/artifact/versioning/VersionRangeTest.java
 Tue Jul 19 01:41:28 2005
@@ -124,15 +124,14 @@
         checkInvalidRange( "(1.0,1.0]" );
         checkInvalidRange( "[1.0,1.0)" );
         checkInvalidRange( "(1.0,1.0)" );
+        checkInvalidRange( "[1.1,1.0]" );
         checkInvalidRange( "[1.0,1.2),1.3" );
-/* TODO: not testing this presently
         // overlap
         checkInvalidRange( "[1.0,1.2),(1.1,1.3]" );
         // overlap
         checkInvalidRange( "[1.1,1.3),(1.0,1.2]" );
         // ordering
         checkInvalidRange( "(1.1,1.2],[1.0,1.1)" );
-*/
     }
 
     public void testIntersections()



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to