Adding more unit tests.
diff --git a/core/api/src/main/java/org/onlab/onos/net/topology/DefaultGraphDescription.java b/core/api/src/main/java/org/onlab/onos/net/topology/DefaultGraphDescription.java
index dfc3ad6..b723f11 100644
--- a/core/api/src/main/java/org/onlab/onos/net/topology/DefaultGraphDescription.java
+++ b/core/api/src/main/java/org/onlab/onos/net/topology/DefaultGraphDescription.java
@@ -23,7 +23,6 @@
 
     private final Map<DeviceId, TopologyVertex> vertexesById = Maps.newHashMap();
 
-
     /**
      * Creates a minimal topology graph description to allow core to construct
      * and process the topology graph.
@@ -84,9 +83,7 @@
         DeviceId id = connectPoint.deviceId();
         TopologyVertex vertex = vertexesById.get(id);
         if (vertex == null) {
-            // If vertex does not exist, create one and register it.
-            vertex = new DefaultTopologyVertex(id);
-            vertexesById.put(id, vertex);
+            throw new IllegalArgumentException("Vertex missing for " + id);
         }
         return vertex;
     }
diff --git a/core/api/src/test/java/org/onlab/onos/net/ConnectPointTest.java b/core/api/src/test/java/org/onlab/onos/net/ConnectPointTest.java
index ebb5217..6d3e793 100644
--- a/core/api/src/test/java/org/onlab/onos/net/ConnectPointTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/ConnectPointTest.java
@@ -3,8 +3,7 @@
 import com.google.common.testing.EqualsTester;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-import static org.onlab.onos.net.Device.Type.SWITCH;
+import static org.junit.Assert.assertEquals;
 import static org.onlab.onos.net.DeviceId.deviceId;
 import static org.onlab.onos.net.PortNumber.portNumber;
 
@@ -13,10 +12,10 @@
  */
 public class ConnectPointTest {
 
-    public static final DeviceId DID1 = deviceId("1");
-    public static final DeviceId DID2 = deviceId("2");
-    public static final PortNumber P1 = portNumber(1);
-    public static final PortNumber P2 = portNumber(2);
+    private static final DeviceId DID1 = deviceId("1");
+    private static final DeviceId DID2 = deviceId("2");
+    private static final PortNumber P1 = portNumber(1);
+    private static final PortNumber P2 = portNumber(2);
 
     @Test
     public void basics() {
diff --git a/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java b/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
index f7bc617..b4018e3 100644
--- a/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
+++ b/core/api/src/test/java/org/onlab/onos/net/DefaultDeviceTest.java
@@ -13,15 +13,14 @@
  */
 public class DefaultDeviceTest {
 
-    private static final ProviderId PID = new ProviderId("of", "foo");
-    private static final DeviceId DID1 = deviceId("of:foo");
-    private static final DeviceId DID2 = deviceId("of:bar");
-    private static final String MFR = "whitebox";
-    private static final String HW = "1.1.x";
-    private static final String SW = "3.9.1";
-    private static final String SN1 = "43311-12345";
-    private static final String SN2 = "42346-43512";
-
+    static final ProviderId PID = new ProviderId("of", "foo");
+    static final DeviceId DID1 = deviceId("of:foo");
+    static final DeviceId DID2 = deviceId("of:bar");
+    static final String MFR = "whitebox";
+    static final String HW = "1.1.x";
+    static final String SW = "3.9.1";
+    static final String SN1 = "43311-12345";
+    static final String SN2 = "42346-43512";
 
     @Test
     public void testEquality() {
diff --git a/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java
new file mode 100644
index 0000000..a968abf
--- /dev/null
+++ b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultGraphDescriptionTest.java
@@ -0,0 +1,41 @@
+package org.onlab.onos.net.topology;
+
+import com.google.common.collect.ImmutableSet;
+import org.junit.Test;
+import org.onlab.onos.net.DefaultDevice;
+import org.onlab.onos.net.Device;
+import org.onlab.onos.net.DeviceId;
+
+import static org.junit.Assert.assertEquals;
+import static org.onlab.onos.net.Device.Type.SWITCH;
+import static org.onlab.onos.net.DeviceId.deviceId;
+import static org.onlab.onos.net.topology.DefaultTopologyEdgeTest.*;
+
+public class DefaultGraphDescriptionTest {
+
+    static final DefaultTopologyEdge E1 = new DefaultTopologyEdge(V1, V2, L1);
+    static final DefaultTopologyEdge E2 = new DefaultTopologyEdge(V1, V2, L1);
+
+    private static final DeviceId D3 = deviceId("3");
+
+    static final Device DEV1 = new DefaultDevice(PID, D1, SWITCH, "", "", "", "");
+    static final Device DEV2 = new DefaultDevice(PID, D2, SWITCH, "", "", "", "");
+    static final Device DEV3 = new DefaultDevice(PID, D3, SWITCH, "", "", "", "");
+
+    @Test
+    public void basics() {
+        DefaultGraphDescription desc =
+                new DefaultGraphDescription(4321L, ImmutableSet.of(DEV1, DEV2, DEV3),
+                                            ImmutableSet.of(L1, L2));
+        assertEquals("incorrect time", 4321L, desc.timestamp());
+        assertEquals("incorrect vertex count", 3, desc.vertexes().size());
+        assertEquals("incorrect edge count", 2, desc.edges().size());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void missingVertex() {
+        new DefaultGraphDescription(4321L, ImmutableSet.of(DEV1, DEV3),
+                                    ImmutableSet.of(L1, L2));
+    }
+
+}
\ No newline at end of file
diff --git a/core/api/src/test/java/org/onlab/onos/net/topology/DefaultTopologyEdgeTest.java b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultTopologyEdgeTest.java
new file mode 100644
index 0000000..6c3c112
--- /dev/null
+++ b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultTopologyEdgeTest.java
@@ -0,0 +1,54 @@
+package org.onlab.onos.net.topology;
+
+import com.google.common.testing.EqualsTester;
+import org.junit.Test;
+import org.onlab.onos.net.ConnectPoint;
+import org.onlab.onos.net.DefaultLink;
+import org.onlab.onos.net.DeviceId;
+import org.onlab.onos.net.Link;
+import org.onlab.onos.net.PortNumber;
+import org.onlab.onos.net.provider.ProviderId;
+
+import static org.junit.Assert.assertEquals;
+import static org.onlab.onos.net.DeviceId.deviceId;
+import static org.onlab.onos.net.PortNumber.portNumber;
+
+/**
+ * Tests of the topology graph edge.
+ */
+public class DefaultTopologyEdgeTest {
+
+    static final DeviceId D1 = deviceId("1");
+    static final DeviceId D2 = deviceId("2");
+    static final PortNumber P1 = portNumber(1);
+    static final PortNumber P2 = portNumber(2);
+
+    static final ConnectPoint CP1 = new ConnectPoint(D1, P1);
+    static final ConnectPoint CP2 = new ConnectPoint(D2, P1);
+    static final ConnectPoint CP3 = new ConnectPoint(D2, P1);
+    static final ConnectPoint CP4 = new ConnectPoint(D1, P2);
+
+    static final DefaultTopologyVertex V1 = new DefaultTopologyVertex(D1);
+    static final DefaultTopologyVertex V2 = new DefaultTopologyVertex(D2);
+
+    static final ProviderId PID = new ProviderId("foo", "bar");
+
+    static final Link L1 = new DefaultLink(PID, CP1, CP2, Link.Type.INDIRECT);
+    static final Link L2 = new DefaultLink(PID, CP3, CP4, Link.Type.INDIRECT);
+
+    @Test
+    public void basics() {
+        DefaultTopologyEdge e = new DefaultTopologyEdge(V1, V2, L1);
+        assertEquals("incorrect src", V1, e.src());
+        assertEquals("incorrect dst", V2, e.dst());
+        assertEquals("incorrect link", L1, e.link());
+
+        new EqualsTester()
+                .addEqualityGroup(new DefaultTopologyEdge(V1, V2, L1),
+                                  new DefaultTopologyEdge(V1, V2, L1))
+                .addEqualityGroup(new DefaultTopologyEdge(V2, V1, L2),
+                                  new DefaultTopologyEdge(V2, V1, L2))
+                .testEquals();
+    }
+
+}
\ No newline at end of file
diff --git a/core/api/src/test/java/org/onlab/onos/net/topology/DefaultTopologyVertexTest.java b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultTopologyVertexTest.java
new file mode 100644
index 0000000..1284624
--- /dev/null
+++ b/core/api/src/test/java/org/onlab/onos/net/topology/DefaultTopologyVertexTest.java
@@ -0,0 +1,30 @@
+package org.onlab.onos.net.topology;
+
+import com.google.common.testing.EqualsTester;
+import org.junit.Test;
+import org.onlab.onos.net.DeviceId;
+
+import static org.junit.Assert.*;
+import static org.onlab.onos.net.DeviceId.deviceId;
+
+/**
+ * Tests of the topology graph vertex.
+ */
+public class DefaultTopologyVertexTest {
+
+    private static final DeviceId D1 = deviceId("1");
+    private static final DeviceId D2 = deviceId("2");
+
+    @Test
+    public void basics() {
+        DefaultTopologyVertex v = new DefaultTopologyVertex(D1);
+        assertEquals("incorrect device id", D1, v.deviceId());
+
+        new EqualsTester()
+                .addEqualityGroup(new DefaultTopologyVertex(D1),
+                                  new DefaultTopologyVertex(D1))
+                .addEqualityGroup(new DefaultTopologyVertex(D2),
+                                  new DefaultTopologyVertex(D2)).testEquals();
+    }
+
+}
\ No newline at end of file