diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPortNumTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPortNumTest.java
new file mode 100644
index 0000000..abd5351
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPortNumTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.bgpio.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for destination port number flow specification component.
+ */
+public class BgpFsDestinationPortNumTest {
+    List<BgpFsOperatorValue> operatorValue1 = new ArrayList<>();
+    List<BgpFsOperatorValue> operatorValue2 = new ArrayList<>();
+
+    @Test
+    public void testEquality() {
+        operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+        operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+        operatorValue2.add(new BgpFsOperatorValue((byte) 2, new byte[100]));
+        operatorValue2.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+
+        BgpFsDestinationPortNum tlv1 = new BgpFsDestinationPortNum(operatorValue1);
+        BgpFsDestinationPortNum sameAsTlv1 = new BgpFsDestinationPortNum(operatorValue1);
+        BgpFsDestinationPortNum tlv2 = new BgpFsDestinationPortNum(operatorValue2);
+
+        new EqualsTester()
+        .addEqualityGroup(tlv1, sameAsTlv1)
+        .addEqualityGroup(tlv2)
+        .testEquals();
+    }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPrefixTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPrefixTest.java
new file mode 100644
index 0000000..cf5f95f
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDestinationPrefixTest.java
@@ -0,0 +1,45 @@
+/*
+ * 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.bgpio.types;
+
+import org.junit.Test;
+import org.onlab.packet.IpAddress;
+import org.onlab.packet.IpPrefix;
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for destination prefix flow specification component.
+ */
+public class BgpFsDestinationPrefixTest {
+    private final byte length = 4;
+
+    private final IpPrefix prefix = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.1"), 32);
+
+    private final byte length2 = 4;
+    private final IpPrefix prefix2 = IpPrefix.valueOf(IpAddress.valueOf("10.0.1.2"), 32);
+
+    private final BgpFsDestinationPrefix tlv1 = new BgpFsDestinationPrefix(length,  prefix);
+    private final BgpFsDestinationPrefix sameAsTlv1 = new BgpFsDestinationPrefix(length, prefix);
+    private final BgpFsDestinationPrefix tlv2 = new BgpFsDestinationPrefix(length2,  prefix2);
+
+    @Test
+    public void testEquality() {
+        new EqualsTester()
+        .addEqualityGroup(tlv1, sameAsTlv1)
+        .addEqualityGroup(tlv2)
+        .testEquals();
+    }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDscpValueTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDscpValueTest.java
new file mode 100644
index 0000000..03e0bfe
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsDscpValueTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.bgpio.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for DSCP value flow specification component.
+ */
+public class BgpFsDscpValueTest {
+    List<BgpFsOperatorValue> operatorValue1 = new ArrayList<>();
+    List<BgpFsOperatorValue> operatorValue2 = new ArrayList<>();
+
+    @Test
+    public void testEquality() {
+        operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+        operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+        operatorValue2.add(new BgpFsOperatorValue((byte) 2, new byte[100]));
+        operatorValue2.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+
+        BgpFsDscpValue tlv1 = new BgpFsDscpValue(operatorValue1);
+        BgpFsDscpValue sameAsTlv1 = new BgpFsDscpValue(operatorValue1);
+        BgpFsDscpValue tlv2 = new BgpFsDscpValue(operatorValue2);
+
+        new EqualsTester()
+        .addEqualityGroup(tlv1, sameAsTlv1)
+        .addEqualityGroup(tlv2)
+        .testEquals();
+    }
+}
diff --git a/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsFragmentTest.java b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsFragmentTest.java
new file mode 100644
index 0000000..0cd04be
--- /dev/null
+++ b/protocols/bgp/bgpio/src/test/java/org/onosproject/bgpio/types/BgpFsFragmentTest.java
@@ -0,0 +1,48 @@
+/*
+ * 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.bgpio.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Test;
+
+import com.google.common.testing.EqualsTester;
+
+/**
+ * Test for fragment flow specification component.
+ */
+public class BgpFsFragmentTest {
+    List<BgpFsOperatorValue> operatorValue1 = new ArrayList<>();
+    List<BgpFsOperatorValue> operatorValue2 = new ArrayList<>();
+
+    @Test
+    public void testEquality() {
+        operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+        operatorValue1.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+        operatorValue2.add(new BgpFsOperatorValue((byte) 2, new byte[100]));
+        operatorValue2.add(new BgpFsOperatorValue((byte) 1, new byte[100]));
+
+        BgpFsFragment tlv1 = new BgpFsFragment(operatorValue1);
+        BgpFsFragment sameAsTlv1 = new BgpFsFragment(operatorValue1);
+        BgpFsFragment tlv2 = new BgpFsFragment(operatorValue2);
+
+        new EqualsTester()
+        .addEqualityGroup(tlv1, sameAsTlv1)
+        .addEqualityGroup(tlv2)
+        .testEquals();
+    }
+}
