Untitled diff

建立於 差異永不過期
44 刪除
175
66 新增
189
/*
/*
* (C) Copyright 2017 Code-House, Łukasz Dywicki.
* (C) Copyright 2017 Code-House, Łukasz Dywicki.
*
*
* Licensed under the Apache License, Version 2.0 (the "License");
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* You may obtain a copy of the License at
*
*
* http://www.apache.org/licenses/LICENSE-2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
*
* Unless required by applicable law or agreed to in writing, software
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* See the License for the specific language governing permissions and
* limitations under the License.
* limitations under the License.
*/
*/
package org.eclipse.aether.util.version;
package org.code_house.maven.osgi.resolver.shared.version;


import org.code_house.maven.osgi.resolver.test.VersionRangeTest;
import org.code_house.maven.osgi.resolver.test.VersionRangeTest;
import org.eclipse.aether.version.InvalidVersionSpecificationException;
import org.eclipse.aether.version.InvalidVersionSpecificationException;
import org.junit.Test;
import org.junit.Test;


import static org.junit.Assert.*;
import static org.junit.Assert.*;


/**
/**
* Customized version of aether generic version. Located here to verify {@link VersionRangeTest} and to track eventual
* Test of OSGi version range filtering.
* changes in aether's logic.
*/
*/
public class GenericVersionRangeTest extends VersionRangeTest<GenericVersionRange, GenericVersion> {
public class OsgiVersionRangeTest extends VersionRangeTest<OsgiVersionRange, OsgiVersion> {


protected GenericVersion newVersion(String version) {
@Override
return new GenericVersion(version);
protected OsgiVersion newVersion(String version) {
return new OsgiVersion(version);
}
}


protected GenericVersionRange parseValid(String range) {
@Override
protected OsgiVersionRange parseValid(String range) {
try {
try {
return new GenericVersionRange(range);
return new OsgiVersionRange(range);
} catch (InvalidVersionSpecificationException e) {
} catch (InvalidVersionSpecificationException e) {
AssertionError error = new AssertionError(range + " should be valid but failed to parse due to: " + e.getMessage());
AssertionError error =
new AssertionError(range + " should be valid but failed to parse due to: " + e.getMessage());
error.initCause(e);
error.initCause(e);
throw error;
throw error;
}
}
}
}


@Override
protected void parseInvalid(String range) {
protected void parseInvalid(String range) {
try {
try {
new GenericVersionRange(range);
new OsgiVersionRange(range);
fail(range + " should be invalid");
fail(range + " should be invalid");
} catch (InvalidVersionSpecificationException e) {
} catch (InvalidVersionSpecificationException e) {
assertTrue(true);
assertTrue(true);
}
}
}
}


@Test
@Test
public void testLowerBoundInclusiveUpperBoundInclusive() {
public void testLowerBoundInclusiveUpperBoundInclusive() {
GenericVersionRange range = parseValid("[1,2]");
OsgiVersionRange range = parseValid("[1,2]");
assertContains(range, "1");
assertContains(range, "1");
assertContains(range, "1.1-SNAPSHOT");
assertContains(range, "1.1-SNAPSHOT");
assertContains(range, "2");
assertContains(range, "2");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testLowerBoundInclusiveUpperBoundExclusive() {
public void testLowerBoundInclusiveUpperBoundExclusive() {
GenericVersionRange range = parseValid("[1.2.3.4.5,1.2.3.4.6)");
OsgiVersionRange range = parseValid("[1.2.3.4,1.2.3.6)");
assertContains(range, "1.2.3.4.5");
assertContains(range, "1.2.3.4");
assertNotContains(range, "1.2.3.4.6");
assertContains(range, "1.2.3.45");
assertContains(range, "1.2.3.5");
assertNotContains(range, "1.2.3.6");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testLowerBoundExclusiveUpperBoundInclusive() {
public void testLowerBoundExclusiveUpperBoundInclusive() {
GenericVersionRange range = parseValid("(1a,1b]");
OsgiVersionRange range = parseValid("(1.0.0.a,1.0.0.b]");
assertNotContains(range, "1a");
assertNotContains(range, "1-a");
assertContains(range, "1b");
assertContains(range, "1-b");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testLowerBoundExclusiveUpperBoundExclusive() {
public void testLowerBoundExclusiveUpperBoundExclusive() {
GenericVersionRange range = parseValid("(1,3)");
OsgiVersionRange range = parseValid("(1,3)");
assertNotContains(range, "1");
assertNotContains(range, "1");
assertContains(range, "2-SNAPSHOT");
assertContains(range, "2-SNAPSHOT");
assertNotContains(range, "3");
assertNotContains(range, "3");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testSingleVersion() {
public void testSingleVersion() {
GenericVersionRange range = parseValid("[1]");
OsgiVersionRange range = parseValid("[1,1]");
assertContains(range, "1");
assertContains(range, "1");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));


range = parseValid("[1,1]");
range = parseValid("[1,1]");
assertContains(range, "1");
assertContains(range, "1");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testSingleWildcardVersion() {
public void testSingleWildcardVersion() {
GenericVersionRange range = parseValid("[1.2.*]");
OsgiVersionRange range = parseValid("1.2");
assertContains(range, "1.2-alpha-1");
assertContains(range, "1.2-alpha-1");
assertContains(range, "1.2-SNAPSHOT");
assertContains(range, "1.2-SNAPSHOT");
assertContains(range, "1.2");
assertContains(range, "1.2");
assertContains(range, "1.2.9999999");
assertContains(range, "1.2.9999999");
assertNotContains(range, "1.3-rc-1");
assertContains(range, "1.3-rc-1");
assertContains(range, "1.9");
assertContains(range, "9");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testMissingOpenCloseDelimiter() {
public void testMissingOpenCloseDelimiter() {
parseInvalid("1.0");
parseValid("1.0");
}
}


@Test
@Test
public void testMissingOpenDelimiter() {
public void testMissingOpenDelimiter() {
parseInvalid("1.0]");
parseInvalid("1.0]");
parseInvalid("1.0)");
parseInvalid("1.0)");
}
}


@Test
@Test
public void testMissingCloseDelimiter() {
public void testMissingCloseDelimiter() {
parseInvalid("[1.0");
parseInvalid("[1.0");
parseInvalid("(1.0");
parseInvalid("(1.0");
}
}


@Test
@Test
public void testTooManyVersions() {
public void testTooManyVersions() {
parseInvalid("[1,2,3]");
parseInvalid("[1,2,3]");
parseInvalid("(1,2,3)");
parseInvalid("(1,2,3)");
parseInvalid("[1,2,3)");
parseInvalid("[1,2,3)");
}
}


@Test
@Test
public void testSnapshotAndReleaseWithMinimum() {
public void testSnapshotAndReleaseWithMinimum() {
GenericVersionRange range = parseValid("[4.0.0.min,5)");
OsgiVersionRange range = parseValid("[4.0.0.min,5)");


assertContains(range, "4.0-alpha-1");
assertNotContains(range, "4.0-alpha-1");
assertContains(range, "4.0-SNAPSHOT");
assertNotContains(range, "4.0-SNAPSHOT");
assertContains(range, "4.0.0-SNAPSHOT");
assertNotContains(range, "4.0.0-SNAPSHOT");
assertContains(range, "4.min");
assertContains(range, "4.99");
assertContains(range, "4.99");
assertNotContains(range, "5");
assertNotContains(range, "5");
assertEquals(range, parseValid(range.toString()));
assertEquals(range, parseValid(range.toString()));
}
}


@Test
@Test
public void testSnapshotAndReleaseWithoutMinimum() {
public void testSnapshotAndReleaseWithoutMinimum() {
GenericVersionRange range = parseValid("[4.0.0,5)");
OsgiVersionRange range = parseValid("[4.0.0,5)");

assertNotContains(range, "4.0-alpha-1");
assertNotContains(range, "4.0-SNAPSHOT");
assertNotContains(range, "4.0.0-SNAPSHOT");
assertContains(range, "4.99.99");
assertNotContains(range, "5");
assertContains(range, "5.0.0-SNAPSHOT");
Text moved with changes to lines 163-168 (98.1% similarity)
assertEquals(range, parseValid(range.toString()));
}

@Test
public void testSnapshotAndReleaseWithMinAndMax() {
GenericVersionRange range = parseValid("[4.min,5.min)");


assertContains(range, "4.0-alpha-1");
assertContains(range, "4.0-alpha-1");
assertContains(range, "4.0-SNAPSHOT");
assertContains(range, "4.0-SNAPSHOT");
assertContains(range, "4.0.0-SNAPSHOT");
assertContains(range, "4.0.0-SNAPSHOT");
assertContains(range, "4.99.99");
assertContains(range, "4.99.99");
assertNotContains(range, "5");
assertNotContains(range, "5");
assertNotContains(range, "5.0.0-SNAPSHOT");
assertNotContains(range, "5.0.0-SNAPSHOT");
Text moved with changes from lines 155-160 (98.1% similarity)
assertNotContains(range, "5-alpha-1");
assertEquals(range, parseValid(range.toString()));
}

@Test
public void testSnapshotAndReleaseWithMinAndMax() {
OsgiVersionRange range = parseValid("[4.0.0.min,5.0.0.min)");

assertNotContains(range, "4.0-alpha-1");
assertNotContains(range, "4.0-SNAPSHOT");
assertNotContains(range, "4.0.0-SNAPSHOT");
assertContains(range, "4.0.0.min");
assertContains(range, "4.0.0-min");
assertContains(range, "4.0.0-minimum");
assertContains(range, "4.99.99");
assertContains(range, "5");
assertContains(range, "5.0.0-SNAPSHOT");
assertContains(range, "5-alpha-1");
assertNotContains(range, "5-rc");
assertNotContains(range, "5-rc");
assertNotContains(range, "5-ga");
assertContains(range, "5-ga");
assertContains(range, "5-mi");
assertNotContains(range, "5-min");
assertNotContains(range, "5-minimum");
}
}


}
}
0
0