diff --git a/core/api/src/test/java/org/onosproject/ui/table/cell/HexLongFormatterTest.java b/core/api/src/test/java/org/onosproject/ui/table/cell/HexLongFormatterTest.java
new file mode 100644
index 0000000..c8a0912
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/ui/table/cell/HexLongFormatterTest.java
@@ -0,0 +1,65 @@
+/*
+ *  Copyright 2016 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.onosproject.ui.table.cell;
+
+import org.junit.Test;
+import org.onosproject.ui.table.CellFormatter;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Unit tests for {@link HexLongFormatter}.
+ */
+public class HexLongFormatterTest {
+
+    private CellFormatter fmt = HexLongFormatter.INSTANCE;
+
+    @Test
+    public void nullValue() {
+        assertEquals("null value", "", fmt.format(null));
+    }
+
+    @Test
+    public void zero() {
+        assertEquals("zero", "0x0", fmt.format(0L));
+    }
+
+    @Test
+    public void one() {
+        assertEquals("one", "0x1", fmt.format(1L));
+    }
+
+    @Test
+    public void ten() {
+        assertEquals("ten", "0xa", fmt.format(10L));
+    }
+
+    @Test
+    public void twenty() {
+        assertEquals("twenty", "0x14", fmt.format(20L));
+    }
+
+    @Test
+    public void veryBig() {
+        assertEquals("very big", "0x7048860f3a38", fmt.format(123456789101112L));
+    }
+
+    @Test
+    public void maxLong() {
+        assertEquals("max long", "0x7fffffffffffffff", fmt.format(Long.MAX_VALUE));
+    }
+}
