/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.aries.subsystem.core.archive;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.junit.Test;
import org.osgi.framework.VersionRange;
public class ImportPackageHeaderTest {
@Test
public void testVersionAttributeWithMultiplePackages() {
String headerStr = "org.foo;org.bar;org.foo.bar;version=1.3";
ImportPackageHeader header = new ImportPackageHeader(headerStr);
ImportPackageHeader header2 = new ImportPackageHeader(headerStr);
assertClauses(header, 1);
assertVersionAttribute(header, "org.foo;org.bar;org.foo.bar", "1.3");
assertEquals(header, header2);
}
@Test
public void testVersionAttributeWithoutMultiplePackages() {
String headerStr = "org.foo,org.bar,org.foo.bar;version=1.3";
ImportPackageHeader header = new ImportPackageHeader(headerStr);
assertClauses(header, 3);
assertVersionAttribute(header, "org.foo", "0");
assertVersionAttribute(header, "org.bar", "0.0");
assertVersionAttribute(header, "org.foo.bar", "1.3");
}
private void assertClauses(ImportPackageHeader header, int expectedClauses) {
assertEquals("Wrong number of clauses", expectedClauses, header.getClauses().size());
}
private void assertVersionAttribute(ImportPackageHeader header, String path, String expectedVersion) {
for (ImportPackageHeader.Clause clause : header.getClauses())
if (path.equals(clause.getPath())) {
assertVersionAttribute(clause, expectedVersion);
return;
}
fail("Path not found: " + path);
}
private void assertVersionAttribute(ImportPackageHeader.Clause clause, String expectedVersion) {
assertVersionAttribute(clause, new VersionRange(expectedVersion));
}
private void assertVersionAttribute(ImportPackageHeader.Clause clause, VersionRange expectedVersion) {
assertEquals("Wrong version attribute", expectedVersion, clause.getVersionRangeAttribute().getVersionRange());
}
}