diff --git a/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java b/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java
index 38c6bed..87c9528 100644
--- a/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java
+++ b/core/api/src/test/java/org/onosproject/ui/table/cell/DefaultCellComparatorTest.java
@@ -27,20 +27,13 @@
  */
 public class DefaultCellComparatorTest {
 
-    private static class TestClass {
-        @Override
-        public String toString() {
-            return SOME;
-        }
-    }
-
     private static final String SOME = "SoMeStRiNg";
     private static final String OTHER = "OtherSTRING";
-    private static final int NUMBER = 42;
-    private static final TestClass OBJECT = new TestClass();
 
     private CellComparator cmp = DefaultCellComparator.INSTANCE;
 
+    // default comparator should detect Comparable<T> impls and use that
+
     @Test
     public void sameString() {
         assertTrue("same string", cmp.compare(SOME, SOME) == 0);
@@ -57,21 +50,6 @@
     }
 
     @Test
-    public void someVsObject() {
-        assertTrue("some vs object", cmp.compare(SOME, OBJECT) == 0);
-    }
-
-    @Test
-    public void otherVsObject() {
-        assertTrue("other vs object", cmp.compare(OTHER, OBJECT) < 0);
-    }
-
-    @Test
-    public void otherVsNumber() {
-        assertTrue("other vs 42", cmp.compare(OTHER, NUMBER) > 0);
-    }
-
-    @Test
     public void someVsNull() {
         assertTrue("some vs null", cmp.compare(SOME, null) > 0);
     }
@@ -81,4 +59,89 @@
         assertTrue("null vs some", cmp.compare(null, SOME) < 0);
     }
 
+    @Test(expected = ClassCastException.class)
+    public void mismatch() {
+        cmp.compare(42, SOME);
+    }
+
+
+    @Test
+    public void strElevenTwo() {
+        assertTrue("str 11 vs 2", cmp.compare("11", "2") < 0);
+    }
+
+    @Test
+    public void intElevenTwo() {
+        assertTrue("int 11 vs 2", cmp.compare(11, 2) > 0);
+    }
+
+
+    @Test
+    public void intSmallBig() {
+        assertTrue("int 2 vs 4", cmp.compare(2, 4) < 0);
+    }
+
+    @Test
+    public void intBigSmall() {
+        assertTrue("int 4 vs 2", cmp.compare(4, 2) > 0);
+    }
+
+    @Test
+    public void intEqual() {
+        assertTrue("int 4 vs 4", cmp.compare(4, 4) == 0);
+    }
+
+    @Test
+    public void longSmallBig() {
+        assertTrue("long 2 vs 4", cmp.compare(2L, 4L) < 0);
+    }
+
+    @Test
+    public void longBigSmall() {
+        assertTrue("long 4 vs 2", cmp.compare(4L, 2L) > 0);
+    }
+
+    @Test
+    public void longEqual() {
+        assertTrue("long 4 vs 4", cmp.compare(4L, 4L) == 0);
+    }
+
+
+    private enum SmallStarWars { C3PO, R2D2, LUKE }
+
+    @Test
+    public void swEpisodeI() {
+        assertTrue("c3po r2d2",
+                   cmp.compare(SmallStarWars.C3PO, SmallStarWars.R2D2) < 0);
+    }
+
+    @Test
+    public void swEpisodeII() {
+        assertTrue("r2d2 c3po",
+                   cmp.compare(SmallStarWars.R2D2, SmallStarWars.C3PO) > 0);
+    }
+
+    @Test
+    public void swEpisodeIII() {
+        assertTrue("luke c3po",
+                   cmp.compare(SmallStarWars.LUKE, SmallStarWars.C3PO) > 0);
+    }
+
+    @Test
+    public void swEpisodeIV() {
+        assertTrue("c3po luke",
+                   cmp.compare(SmallStarWars.C3PO, SmallStarWars.LUKE) < 0);
+    }
+
+    @Test
+    public void swEpisodeV() {
+        assertTrue("luke r2d2",
+                   cmp.compare(SmallStarWars.LUKE, SmallStarWars.R2D2) > 0);
+    }
+
+    @Test
+    public void swEpisodeVI() {
+        assertTrue("r2d2 luke",
+                   cmp.compare(SmallStarWars.R2D2, SmallStarWars.LUKE) < 0);
+    }
 }
