diff --git a/core/api/src/test/java/org/onosproject/ui/table/cell/NumberFormatterTest.java b/core/api/src/test/java/org/onosproject/ui/table/cell/NumberFormatterTest.java
new file mode 100644
index 0000000..2432977
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/ui/table/cell/NumberFormatterTest.java
@@ -0,0 +1,78 @@
+/*
+ *  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 NumberFormatter}.
+ */
+public class NumberFormatterTest {
+
+
+    private CellFormatter f5dp = NumberFormatter.TO_5DP;
+    private CellFormatter fInt = NumberFormatter.INTEGER;
+
+    @Test
+    public void defaultNullValue() {
+        assertEquals("default null value", "", f5dp.format(null));
+    }
+
+    @Test
+    public void defaultZero() {
+        assertEquals("default zero", "0.00000", f5dp.format(0));
+    }
+
+    @Test
+    public void defaultFifty() {
+        assertEquals("default fifty", "50.00000", f5dp.format(50));
+    }
+
+    @Test
+    public void default2G() {
+        assertEquals("default 2G", "2,000.00000", f5dp.format(2000));
+    }
+
+    @Test
+    public void integerNullValue() {
+        assertEquals("integer null value", "", fInt.format(null));
+    }
+
+    @Test
+    public void integerZero() {
+        assertEquals("integer zero", "0", fInt.format(0));
+    }
+
+    @Test
+    public void integerFifty() {
+        assertEquals("integer fifty", "50", fInt.format(50));
+    }
+
+    @Test
+    public void integer2G() {
+        assertEquals("integer 2G", "2,000", fInt.format(2000));
+    }
+
+    @Test
+    public void integer5M() {
+        assertEquals("integer 5M", "5,000,042", fInt.format(5000042));
+    }
+
+}
