GUI Topo -- added NodeBadge field to NodeHighlight.
 - updated TopoJson to include device badge in JSON output.

Change-Id: I7fc0ec226c378a0395cd1eec765cb7bc867f9100
diff --git a/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java b/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java
index ac0051c..3b572a97 100644
--- a/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java
+++ b/core/api/src/test/java/org/onosproject/ui/topo/TopoJsonTest.java
@@ -23,12 +23,17 @@
 import org.onosproject.ui.topo.Highlights.Amount;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 /**
  * Unit tests for {@link TopoJson}.
  */
 public class TopoJsonTest {
 
+    private static final String DEV1 = "device-1";
+    private static final String DEV2 = "device-2";
+    private static final String BADGE_MSG = "Hello there";
+
     private ObjectNode payload;
 
     private void checkArrayLength(String key, int expLen) {
@@ -68,4 +73,38 @@
         String subdue = JsonUtils.string(payload, TopoJson.SUBDUE);
         assertEquals("not max", "max", subdue);
     }
+
+    @Test
+    public void badgedDevice() {
+        Highlights h = new Highlights();
+        DeviceHighlight dh = new DeviceHighlight(DEV1);
+        dh.setBadge(NodeBadge.info(BADGE_MSG));
+        h.add(dh);
+
+        dh = new DeviceHighlight(DEV2);
+        dh.setBadge(NodeBadge.number(7));
+        h.add(dh);
+
+        payload = TopoJson.json(h);
+        System.out.println(payload);
+
+        // dig into the payload, and verify the badges are set on the devices
+        ArrayNode a = (ArrayNode) payload.get(TopoJson.DEVICES);
+
+        ObjectNode d = (ObjectNode) a.get(0);
+        assertEquals("wrong device id", DEV1, d.get(TopoJson.ID).asText());
+
+        ObjectNode b = (ObjectNode) d.get(TopoJson.BADGE);
+        assertNotNull("missing badge", b);
+        assertEquals("wrong type code", "i", b.get(TopoJson.TYPE).asText());
+        assertEquals("wrong message", BADGE_MSG, b.get(TopoJson.MSG).asText());
+
+        d = (ObjectNode) a.get(1);
+        assertEquals("wrong device id", DEV2, d.get(TopoJson.ID).asText());
+
+        b = (ObjectNode) d.get(TopoJson.BADGE);
+        assertNotNull("missing badge", b);
+        assertEquals("wrong type code", "n", b.get(TopoJson.TYPE).asText());
+        assertEquals("wrong message", "7", b.get(TopoJson.MSG).asText());
+    }
 }