Add static factory method to create ConnectPoints from strings.

Change-Id: I743b4a4fb433ad07cf6f2cbed3da7b6e19a74ebb
diff --git a/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java b/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java
index 9580481..2aecabd 100644
--- a/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java
+++ b/core/api/src/test/java/org/onosproject/net/ConnectPointTest.java
@@ -18,12 +18,14 @@
 import com.google.common.testing.EqualsTester;
 import org.junit.Test;
 
+import static junit.framework.TestCase.fail;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 import static org.onosproject.net.DeviceId.deviceId;
 import static org.onosproject.net.PortNumber.portNumber;
 
 /**
- * Test of the connetion point entity.
+ * Test of the connection point entity.
  */
 public class ConnectPointTest {
 
@@ -39,7 +41,6 @@
         assertEquals("incorrect element id", P2, p.port());
     }
 
-
     @Test
     public void testEquality() {
         new EqualsTester()
@@ -48,4 +49,62 @@
                 .addEqualityGroup(new ConnectPoint(DID2, P1), new ConnectPoint(DID2, P1))
                 .testEquals();
     }
+
+    @Test
+    public void testParseDeviceConnectPoint() {
+        String cp = "of:0011223344556677/1";
+
+        ConnectPoint connectPoint = ConnectPoint.deviceConnectPoint(cp);
+        assertEquals("of:0011223344556677", connectPoint.deviceId().toString());
+        assertEquals("1", connectPoint.port().toString());
+
+        expectDeviceParseException("");
+        expectDeviceParseException("1/");
+        expectDeviceParseException("1/1/1");
+        expectDeviceParseException("of:0011223344556677/word");
+    }
+
+    /**
+     * Parse a device connect point and expect an exception to be thrown.
+     *
+     * @param string string to parse
+     */
+    private static void expectDeviceParseException(String string) {
+        try {
+            ConnectPoint.deviceConnectPoint(string);
+            fail("Expected exception was not thrown");
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+    }
+
+    @Test
+    public void testParseHostConnectPoint() {
+        String cp = "16:3A:BD:6E:31:E4/-1/1";
+
+        ConnectPoint connectPoint = ConnectPoint.hostConnectPoint(cp);
+        assertEquals("16:3A:BD:6E:31:E4/-1", connectPoint.hostId().toString());
+        assertEquals("1", connectPoint.port().toString());
+
+        expectHostParseException("");
+        expectHostParseException("1/");
+        expectHostParseException("1/1");
+        expectHostParseException("1/1/1/1");
+        expectHostParseException("16:3A:BD:6E:31:E4/word/1");
+        expectHostParseException("16:3A:BD:6E:31:E4/1/word");
+    }
+
+    /**
+     * Parse a host connect point and expect an exception to be thrown.
+     *
+     * @param string string to parse
+     */
+    private static void expectHostParseException(String string) {
+        try {
+            ConnectPoint.hostConnectPoint(string);
+            fail("Expected exception was not thrown");
+        } catch (Exception e) {
+            assertTrue(true);
+        }
+    }
 }