FELIX-5015 Unit tests (for NPE in ResolverImpl)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1705686 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
index cf7daa0..211e5e2 100644
--- a/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
+++ b/resolver/src/main/java/org/apache/felix/resolver/ResolverImpl.java
@@ -40,7 +40,6 @@
import org.apache.felix.resolver.util.ArrayMap;
import org.apache.felix.resolver.util.OpenHashMap;
-
import org.osgi.framework.namespace.BundleNamespace;
import org.osgi.framework.namespace.ExecutionEnvironmentNamespace;
import org.osgi.framework.namespace.HostNamespace;
@@ -1730,12 +1729,12 @@
}
Set<Capability> packageSources = sources.get(cap);
- if(packageSources == null)
+ if(packageSources == null)
{
return new HashSet<Capability>();
}
- return packageSources;
+ return packageSources;
}
private static void getPackageSourcesInternal(
@@ -2074,7 +2073,7 @@
}
}
- private static class Packages
+ public static class Packages
{
public final OpenHashMap<String, Blame> m_exportedPkgs;
public final OpenHashMap<String, List<Blame>> m_importedPkgs;
diff --git a/resolver/src/test/java/org/apache/felix/resolver/test/ResolverTest.java b/resolver/src/test/java/org/apache/felix/resolver/test/ResolverTest.java
index 55580fd..11e518f 100644
--- a/resolver/src/test/java/org/apache/felix/resolver/test/ResolverTest.java
+++ b/resolver/src/test/java/org/apache/felix/resolver/test/ResolverTest.java
@@ -23,6 +23,7 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -30,6 +31,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.felix.resolver.Logger;
import org.apache.felix.resolver.ResolverImpl;
@@ -42,6 +44,7 @@
import org.apache.felix.resolver.test.util.ResolveContextImpl;
import org.apache.felix.resolver.test.util.ResourceImpl;
import org.junit.Test;
+import org.mockito.Mockito;
import org.osgi.framework.Constants;
import org.osgi.framework.namespace.BundleNamespace;
import org.osgi.framework.namespace.HostNamespace;
@@ -577,6 +580,37 @@
assertEquals(0, wireMap.size());
}
+ @Test
+ public void testPackageSources() throws Exception {
+ Method m = ResolverImpl.class.getDeclaredMethod("getPackageSources",
+ Capability.class, Map.class);
+ m.setAccessible(true);
+
+ Capability cap = Mockito.mock(Capability.class);
+ assertEquals(Collections.emptySet(),
+ m.invoke(null, cap, new HashMap<Resource, ResolverImpl.Packages>()));
+
+ Capability cap2 = Mockito.mock(Capability.class);
+ Resource res2 = Mockito.mock(Resource.class);
+ Mockito.when(cap2.getResource()).thenReturn(res2);
+ Map<Resource, ResolverImpl.Packages> map2 = new HashMap<Resource, ResolverImpl.Packages>();
+ map2.put(res2, new ResolverImpl.Packages(res2));
+ assertEquals(Collections.emptySet(), m.invoke(null, cap2, map2));
+
+ Capability cap3 = Mockito.mock(Capability.class);
+ Resource res3 = Mockito.mock(Resource.class);
+ Mockito.when(cap3.getResource()).thenReturn(res3);
+ Map<Resource, ResolverImpl.Packages> map3 = new HashMap<Resource, ResolverImpl.Packages>();
+ ResolverImpl.Packages pkgs3 = new ResolverImpl.Packages(res3);
+ Set<Capability> srcCaps3 = Collections.singleton(Mockito.mock(Capability.class));
+ Map<Capability, Set<Capability>> srcMap3 = Collections.singletonMap(
+ cap3, srcCaps3);
+ pkgs3.m_sources.putAll(srcMap3);
+ map3.put(res3, pkgs3);
+ assertEquals(srcCaps3, m.invoke(null, cap3, map3));
+
+ }
+
private static String getResourceName(Resource r)
{
return r.getCapabilities(IdentityNamespace.IDENTITY_NAMESPACE).get(0).getAttributes()