ONOS-3347 - HostMoved event now processed correctly.
- added new DefaultHashMap utility class
- updated TopoViewMsgHdlrBase for cleaner event translation.

Change-Id: I1c5e8c981e2d617366c25f497dc9336e09684a2e
diff --git a/utils/misc/src/test/java/org/onlab/util/DefaultHashMapTest.java b/utils/misc/src/test/java/org/onlab/util/DefaultHashMapTest.java
new file mode 100644
index 0000000..db6b5fb
--- /dev/null
+++ b/utils/misc/src/test/java/org/onlab/util/DefaultHashMapTest.java
@@ -0,0 +1,81 @@
+/*
+ *  Copyright 2015 Open Networking Laboratory
+ *
+ *  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.onlab.util;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Unit tests for {@link DefaultHashMap}.
+ */
+public class DefaultHashMapTest {
+
+    private static final String ONE = "one";
+    private static final String TWO = "two";
+    private static final String THREE = "three";
+    private static final String FOUR = "four";
+
+    private static final String ALPHA = "Alpha";
+    private static final String BETA = "Beta";
+    private static final String OMEGA = "Omega";
+
+    private DefaultHashMap<String, Integer> map;
+    private DefaultHashMap<String, String> chartis;
+
+    private void loadMap() {
+        map.put(ONE, 1);
+        map.put(TWO, 2);
+    }
+
+    private void fortioCharti() {
+        chartis.put(ONE, ALPHA);
+        chartis.put(TWO, BETA);
+    }
+
+    @Test
+    public void nullDefaultIsAllowed() {
+        // but makes this class behave no different than HashMap
+        map = new DefaultHashMap<>(null);
+        loadMap();
+        assertEquals("missing 1", 1, (int) map.get(ONE));
+        assertEquals("missing 2", 2, (int) map.get(TWO));
+        assertEquals("three?", null, map.get(THREE));
+        assertEquals("four?", null, map.get(FOUR));
+    }
+
+    @Test
+    public void defaultToFive() {
+        map = new DefaultHashMap<>(5);
+        loadMap();
+        assertEquals("missing 1", 1, (int) map.get(ONE));
+        assertEquals("missing 2", 2, (int) map.get(TWO));
+        assertEquals("three?", 5, (int) map.get(THREE));
+        assertEquals("four?", 5, (int) map.get(FOUR));
+    }
+
+    @Test
+    public void defaultToOmega() {
+        chartis = new DefaultHashMap<>(OMEGA);
+        fortioCharti();
+        assertEquals("missing 1", ALPHA, chartis.get(ONE));
+        assertEquals("missing 2", BETA, chartis.get(TWO));
+        assertEquals("three?", OMEGA, chartis.get(THREE));
+        assertEquals("four?", OMEGA, chartis.get(FOUR));
+    }
+
+}