ONOS-4083,ONOS-4084:JUNIT for ISIS PDU TLV Data Structures

Change-Id: I0849d87ad1c7f9a8e08aabebd547dfd2dfde49df
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java
index c6cd9f0..b2eb6c9 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/IsExtendedReachability.java
@@ -1,27 +1,23 @@
 /*
- * Copyright 2016-present 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.
- */
+* Copyright 2016-present 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.isis.io.isispacket.tlv;
 
 import com.google.common.base.MoreObjects;
 import com.google.common.primitives.Bytes;
 import org.jboss.netty.buffer.ChannelBuffer;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvFinder;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvToBytes;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvType;
-import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
 import org.onosproject.isis.io.util.IsisUtil;
 
 import java.util.ArrayList;
@@ -32,9 +28,7 @@
  */
 public class IsExtendedReachability extends TlvHeader implements IsisTlv {
 
-    private String neighborId;
-    private int metric;
-    private List<TrafficEngineeringSubTlv> trafEnginSubTlv = new ArrayList<>();
+    private List<NeighborForExtendedIs> neighbors = new ArrayList<>();
 
     /**
      * Creates an instance of IP external reachability TLV.
@@ -47,67 +41,20 @@
     }
 
     /**
-     * Returns neighbor ID.
+     * Adds the neighbor for extended IS instance to IS extended reachability TLV.
      *
-     * @return neighbor ID
+     * @param neighbor neighbor for extended IS instance
      */
-    public String neighborId() {
-        return neighborId;
-    }
-
-    /**
-     * Sets neighbor ID.
-     *
-     * @param neighborId neighbor ID
-     */
-    public void setNeighborId(String neighborId) {
-        this.neighborId = neighborId;
-    }
-
-    /**
-     * Returns metric.
-     *
-     * @return metric
-     */
-    public int metric() {
-        return metric;
-    }
-
-    /**
-     * Sets metric.
-     *
-     * @param metric metric
-     */
-    public void setMetric(int metric) {
-        this.metric = metric;
-    }
-
-    /**
-     * Adds the traffic engineering sub TLV to IS extended reachability TLV.
-     *
-     * @param trafEnginSubTlv traffic engineering sub TLV
-     */
-    public void addSubTlv(TrafficEngineeringSubTlv trafEnginSubTlv) {
-        this.trafEnginSubTlv.add(trafEnginSubTlv);
+    public void addNeighbor(NeighborForExtendedIs neighbor) {
+        this.neighbors.add(neighbor);
     }
 
     @Override
     public void readFrom(ChannelBuffer channelBuffer) {
-        byte[] tempByteArray = new byte[IsisUtil.ID_SIX_BYTES];
-        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_SIX_BYTES);
-        this.setNeighborId(IsisUtil.systemId(tempByteArray));
-        this.setMetric(channelBuffer.readUnsignedMedium());
-        while (channelBuffer.readableBytes() > 0) {
-            TlvHeader tlvHeader = new TlvHeader();
-            tlvHeader.setTlvType(channelBuffer.readByte());
-            tlvHeader.setTlvLength(channelBuffer.readByte());
-            SubTlvType tlvValue = SubTlvType.get(tlvHeader.tlvType());
-            if (tlvValue != null) {
-                this.addSubTlv(SubTlvFinder.findSubTlv(tlvHeader,
-                                                       channelBuffer.readBytes(tlvHeader.tlvLength())));
-            } else {
-                channelBuffer.readBytes(tlvHeader.tlvLength());
-            }
+        while (channelBuffer.readableBytes() >= IsisUtil.EIGHT_BYTES + IsisUtil.THREE_BYTES) {
+            NeighborForExtendedIs extendedIs = new NeighborForExtendedIs();
+            extendedIs.readFrom(channelBuffer);
+            this.addNeighbor(extendedIs);
         }
     }
 
@@ -128,12 +75,8 @@
      */
     private byte[] tlvBodyAsBytes() {
         List<Byte> byteList = new ArrayList<>();
-        byteList.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborId()));
-        byteList.addAll(Bytes.asList(IsisUtil.convertToThreeBytes(this.metric())));
-        if (this.trafEnginSubTlv.size() > 0) {
-            for (TrafficEngineeringSubTlv trafficEngineeringSubTlv : this.trafEnginSubTlv) {
-                byteList.addAll(SubTlvToBytes.tlvToBytes(trafficEngineeringSubTlv));
-            }
+        for (NeighborForExtendedIs neighbor : this.neighbors) {
+            byteList.addAll(Bytes.asList(neighbor.neighborBodyAsbytes()));
         }
         return Bytes.toArray(byteList);
     }
@@ -142,10 +85,7 @@
     public String toString() {
         return MoreObjects.toStringHelper(getClass())
                 .omitNullValues()
-                .add("neighborId", neighborId)
-                .add("metric", metric)
-                .add("trafEnginSubTlv", trafEnginSubTlv)
+                .add("neighbors", neighbors)
                 .toString();
     }
-
-}
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
new file mode 100644
index 0000000..88b8462
--- /dev/null
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/NeighborForExtendedIs.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.primitives.Bytes;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvFinder;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvToBytes;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.SubTlvType;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
+import org.onosproject.isis.io.util.IsisUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Representation of IS extended reachability neighbors.
+ */
+public class NeighborForExtendedIs {
+
+    private String neighborId;
+    private int metric;
+    private List<TrafficEngineeringSubTlv> teSubTlv = new ArrayList<>();
+
+    /**
+     * Returns neighbor ID.
+     *
+     * @return neighbor ID
+     */
+    public String neighborId() {
+        return neighborId;
+    }
+
+    /**
+     * Sets neighbor ID.
+     *
+     * @param neighborId neighbor ID
+     */
+    public void setNeighborId(String neighborId) {
+        this.neighborId = neighborId;
+    }
+
+    /**
+     * Returns metric.
+     *
+     * @return metric
+     */
+    public int metric() {
+        return metric;
+    }
+
+    /**
+     * Sets metric.
+     *
+     * @param metric metric
+     */
+    public void setMetric(int metric) {
+        this.metric = metric;
+    }
+
+    /**
+     * Adds the TE for extended IS instance to IS extended reachability TLV.
+     *
+     * @param trafficEngineeringSubTlv TE for extended IS instance
+     */
+    public void addSubTlv(TrafficEngineeringSubTlv trafficEngineeringSubTlv) {
+        this.teSubTlv.add(trafficEngineeringSubTlv);
+    }
+
+    /**
+     * Reads from the channel buffer and populate this instance.
+     *
+     * @param channelBuffer channel buffer instance
+     */
+    public void readFrom(ChannelBuffer channelBuffer) {
+        byte[] tempByteArray = new byte[IsisUtil.ID_PLUS_ONE_BYTE];
+        channelBuffer.readBytes(tempByteArray, 0, IsisUtil.ID_PLUS_ONE_BYTE);
+        this.setNeighborId(IsisUtil.systemIdPlus(tempByteArray));
+        this.setMetric(channelBuffer.readUnsignedMedium());
+        int nTlvPresent = channelBuffer.readByte();
+        if (nTlvPresent > 0) {
+            while (channelBuffer.readableBytes() > IsisUtil.TWO_BYTES) {
+                TlvHeader tlvHeader = new TlvHeader();
+                tlvHeader.setTlvType(channelBuffer.readByte());
+                tlvHeader.setTlvLength(channelBuffer.readByte());
+                SubTlvType tlvValue = SubTlvType.get(tlvHeader.tlvType());
+                int tlvLength = tlvHeader.tlvLength();
+                if (tlvValue != null) {
+                    if (channelBuffer.readableBytes() >= tlvLength) {
+                        this.addSubTlv(SubTlvFinder.findSubTlv(tlvHeader,
+                                                               channelBuffer.readBytes(tlvHeader.tlvLength())));
+                    }
+                } else {
+                    if (channelBuffer.readableBytes() >= tlvLength) {
+                        channelBuffer.readBytes(tlvLength);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns neighbor details of IS extended reachability TLV.
+     *
+     * @return neighbor details of IS extended reachability TLV.
+     */
+    public byte[] neighborBodyAsbytes() {
+        List<Byte> byteList = new ArrayList<>();
+        byteList.addAll(IsisUtil.sourceAndLanIdToBytes(this.neighborId()));
+        byteList.addAll(Bytes.asList(IsisUtil.convertToThreeBytes(this.metric())));
+        if (this.teSubTlv.size() > 0) {
+            for (TrafficEngineeringSubTlv trafficEngineeringSubTlv : this.teSubTlv) {
+                byteList.addAll(SubTlvToBytes.tlvToBytes(trafficEngineeringSubTlv));
+            }
+        }
+        return Bytes.toArray(byteList);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .omitNullValues()
+                .add("neighborId", neighborId)
+                .add("metric", metric)
+                .add("teSubTlv", teSubTlv)
+                .toString();
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java
new file mode 100644
index 0000000..cc6174f
--- /dev/null
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddress.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.primitives.Bytes;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+import org.onosproject.isis.io.util.IsisUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Representation of interface ip address TE value.
+ */
+public class InterfaceIpAddress extends TlvHeader implements TrafficEngineeringSubTlv {
+    private static final Logger log =
+            LoggerFactory.getLogger(InterfaceIpAddress.class);
+    private List<Ip4Address> localInterfaceIPAddress = new ArrayList<>();
+
+    /**
+     * Creates an instance of local interface ip address.
+     *
+     * @param header tlv header instance
+     */
+    public InterfaceIpAddress(TlvHeader header) {
+        this.setTlvType(header.tlvType());
+        this.setTlvLength(header.tlvLength());
+    }
+
+    /**
+     * Adds local interface ip address.
+     *
+     * @param localAddress ip address
+     */
+    public void addLocalInterfaceIPAddress(Ip4Address localAddress) {
+        localInterfaceIPAddress.add(localAddress);
+    }
+
+    /**
+     * Returns local interface ip address.
+     *
+     * @return localAddress ip address
+     */
+    public List<Ip4Address> getLocalInterfaceIPAddress() {
+        return localInterfaceIPAddress;
+    }
+
+    /**
+     * Reads bytes from channel buffer.
+     *
+     * @param channelBuffer channel buffer instance
+     */
+    public void readFrom(ChannelBuffer channelBuffer) {
+        while (channelBuffer.readableBytes() >= IsisUtil.FOUR_BYTES) {
+            byte[] tempByteArray = new byte[IsisUtil.FOUR_BYTES];
+            channelBuffer.readBytes(tempByteArray, 0, IsisUtil.FOUR_BYTES);
+            this.addLocalInterfaceIPAddress(Ip4Address.valueOf(tempByteArray));
+        }
+    }
+
+    /**
+     * Returns local interface ip address as byte array.
+     *
+     * @return local interface ip address as byte array
+     */
+    public byte[] asBytes() {
+        byte[] linkSubType = null;
+        byte[] linkSubTlvHeader = tlvHeaderAsByteArray();
+        byte[] linkSubTlvBody = tlvBodyAsBytes();
+        linkSubType = Bytes.concat(linkSubTlvHeader, linkSubTlvBody);
+
+        return linkSubType;
+    }
+
+    /**
+     * Returns byte array of local interface ip address.
+     *
+     * @return byte array of local interface ip address
+     */
+    public byte[] tlvBodyAsBytes() {
+        List<Byte> linkSubTypeBody = new ArrayList<>();
+        for (Ip4Address remoteAddress : this.localInterfaceIPAddress) {
+            linkSubTypeBody.addAll(Bytes.asList(remoteAddress.toOctets()));
+        }
+
+        return Bytes.toArray(linkSubTypeBody);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(getClass())
+                .omitNullValues()
+                .add("localInterfaceIPAddress", localInterfaceIPAddress)
+                .toString();
+    }
+}
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
index 7958f53..92ea143 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinder.java
@@ -66,6 +66,11 @@
                 unreservedBandwidth.readFrom(channelBuffer);
                 subTlv = unreservedBandwidth;
                 break;
+            case INTERFACEADDRESS:
+                InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader);
+                ipInterfaceAddressTlv.readFrom(channelBuffer);
+                subTlv = ipInterfaceAddressTlv;
+                break;
             default:
                 //TODO
                 break;
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java
index 8774c04..8b41c4b 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytes.java
@@ -60,6 +60,9 @@
         } else if (subTlv instanceof UnreservedBandwidth) {
             UnreservedBandwidth unreservedBandwidth = (UnreservedBandwidth) subTlv;
             subTlvBytes.addAll(Bytes.asList(unreservedBandwidth.asBytes()));
+        } else if (subTlv instanceof InterfaceIpAddress) {
+            InterfaceIpAddress interfaceIpAddress = (InterfaceIpAddress) subTlv;
+            subTlvBytes.addAll(Bytes.asList(interfaceIpAddress.asBytes()));
         } else {
             log.debug("TlvsToBytes::UNKNOWN TLV TYPE ::TlvsToBytes ");
         }
diff --git a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
index 12c1127..5caecbf 100644
--- a/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
+++ b/protocols/isis/isisio/src/main/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvType.java
@@ -23,11 +23,30 @@
  * Representation of sub tlv type.
  */
 public enum SubTlvType {
-    ADMINISTRATIVEGROUP(9),
-    MAXIMUMBANDWIDTH(6),
-    MAXIMUMRESERVABLEBANDWIDTH(7),
-    TRAFFICENGINEERINGMETRIC(5),
-    UNRESERVEDBANDWIDTH(8);
+    /**
+     * Represents traffic engineering administrative group TLV.
+     */
+    ADMINISTRATIVEGROUP(3),
+    /**
+     * Represents traffic engineering maximum bandwidth TLV.
+     */
+    MAXIMUMBANDWIDTH(9),
+    /**
+     * Represents traffic engineering maximum reservable bandwidth TLV.
+     */
+    MAXIMUMRESERVABLEBANDWIDTH(10),
+    /**
+     * Represents traffic engineering metric TLV.
+     */
+    TRAFFICENGINEERINGMETRIC(18),
+    /**
+     * Represents traffic engineering interface address TLV.
+     */
+    INTERFACEADDRESS(6),
+    /**
+     * Represents traffic engineering unreserved bandwidth TLV.
+     */
+    UNRESERVEDBANDWIDTH(11);
 
     // Reverse lookup table
     private static final Map<Integer, SubTlvType> LOOKUP = new HashMap<>();
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java
new file mode 100644
index 0000000..8f71ece
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AdjacencyStateTlvTest.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for AdjacencyStateTlv.
+ */
+public class AdjacencyStateTlvTest {
+
+    private final String neighborSystemId = "2929.2929.2929";
+    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private AdjacencyStateTlv adjacencyStateTlv;
+    private TlvHeader tlvHeader;
+    private int result;
+    private byte result2;
+    private String result1;
+    private ChannelBuffer channelBuffer;
+    private byte[] result3;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        adjacencyStateTlv = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests localCircuitId() getter method.
+     */
+    @Test
+    public void testLocalCircuitId() throws Exception {
+        adjacencyStateTlv.setLocalCircuitId(1);
+        result = adjacencyStateTlv.localCircuitId();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests localCircuitId() setter method.
+     */
+    @Test
+    public void testSetLocalCircuitId() throws Exception {
+        adjacencyStateTlv.setLocalCircuitId(1);
+        result = adjacencyStateTlv.localCircuitId();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests neighborSystemId() getter method.
+     */
+    @Test
+    public void testNeighborSystemId() throws Exception {
+        adjacencyStateTlv.setNeighborSystemId(neighborSystemId);
+        result1 = adjacencyStateTlv.neighborSystemId();
+        assertThat(result1, is(neighborSystemId));
+    }
+
+    /**
+     * Tests neighborSystemId() setter method.
+     */
+    @Test
+    public void testSetNeighborSystemId() throws Exception {
+        adjacencyStateTlv.setNeighborSystemId(neighborSystemId);
+        result1 = adjacencyStateTlv.neighborSystemId();
+        assertThat(result1, is(neighborSystemId));
+    }
+
+    /**
+     * Tests neighborLocalCircuitId() getter method.
+     */
+    @Test
+    public void testNeighborLocalCircuitId() throws Exception {
+        adjacencyStateTlv.setNeighborLocalCircuitId(1);
+        result = adjacencyStateTlv.neighborLocalCircuitId();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests neighborLocalCircuitId() setter method.
+     */
+    @Test
+    public void testSetNeighborLocalCircuitId() throws Exception {
+        adjacencyStateTlv.setNeighborLocalCircuitId(1);
+        result = adjacencyStateTlv.neighborLocalCircuitId();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests adjacencyType() getter method.
+     */
+    @Test
+    public void testAdjacencyType() throws Exception {
+        adjacencyStateTlv.setAdjacencyType((byte) 1);
+        result2 = adjacencyStateTlv.adjacencyType();
+        assertThat(result2, is((byte) 1));
+    }
+
+    /**
+     * Tests adjacencyType() setter method.
+     */
+    @Test
+    public void testSetAdjacencyType() throws Exception {
+        adjacencyStateTlv.setAdjacencyType((byte) 1);
+        result2 = adjacencyStateTlv.adjacencyType();
+        assertThat(result2, is((byte) 1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        adjacencyStateTlv.readFrom(channelBuffer);
+        assertThat(adjacencyStateTlv.adjacencyType(), is((byte) 0));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        adjacencyStateTlv.readFrom(channelBuffer);
+        result3 = adjacencyStateTlv.asBytes();
+        assertThat(result3, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(adjacencyStateTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java
new file mode 100644
index 0000000..61a1f96
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/AreaAddressTlvTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for AreaAddressTlv.
+ */
+public class AreaAddressTlvTest {
+
+    private final String areaAddres = "490001";
+    private final byte[] tlv = {1, 49};
+    private AreaAddressTlv areaAddressTlv;
+    private TlvHeader tlvHeader;
+    private List<String> result;
+    private ChannelBuffer channelBuffer;
+    private byte[] result1;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        areaAddressTlv = new AreaAddressTlv(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        areaAddressTlv = null;
+    }
+
+    /**
+     * Tests addAddress() method.
+     */
+    @Test
+    public void testAddAddress() throws Exception {
+        areaAddressTlv.addAddress(areaAddres);
+        result = areaAddressTlv.areaAddress();
+        assertThat(result.size(), is(1));
+    }
+
+    /**
+     * Tests areaAddress() setter method.
+     */
+    @Test
+    public void testSetAreaAddress() throws Exception {
+        areaAddressTlv.addAddress(areaAddres);
+        result = areaAddressTlv.areaAddress();
+        assertThat(result.size(), is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        areaAddressTlv.readFrom(channelBuffer);
+        assertThat(areaAddressTlv.areaAddress().size(), is(1));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        areaAddressTlv.readFrom(channelBuffer);
+        result1 = areaAddressTlv.asBytes();
+        assertThat(result1, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(areaAddressTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java
new file mode 100644
index 0000000..d83ecef9e
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/HostNameTlvTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for HostNameTlv.
+ */
+public class HostNameTlvTest {
+    private final String hostName = "TEST";
+    private final byte[] tlv = hostName.getBytes();
+    private HostNameTlv hostNameTlv;
+    private TlvHeader tlvHeader;
+    private String result;
+    private ChannelBuffer channelBuffer;
+    private byte[] result1;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(tlv.length);
+        hostNameTlv = new HostNameTlv(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        hostNameTlv = null;
+    }
+
+    /**
+     * Tests hostName() getter method.
+     */
+    @Test
+    public void testHostName() throws Exception {
+        hostNameTlv.setHostName(hostName);
+        result = hostNameTlv.hostName();
+        assertThat(result, is(hostName));
+    }
+
+    /**
+     * Tests hostName() setter method.
+     */
+    @Test
+    public void testSetHostName() throws Exception {
+        hostNameTlv.setHostName(hostName);
+        result = hostNameTlv.hostName();
+        assertThat(result, is(hostName));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        hostNameTlv.readFrom(channelBuffer);
+        assertThat(hostNameTlv.hostName(), is(hostName));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        hostNameTlv.readFrom(channelBuffer);
+        result1 = hostNameTlv.asBytes();
+        assertThat(result1, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(hostNameTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java
new file mode 100644
index 0000000..eaebe87
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpExtendedReachabilityTlvTest.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.AdministrativeGroup;
+import org.onosproject.isis.io.isispacket.tlv.subtlv.TrafficEngineeringSubTlv;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for IP ExtendedReachabilityTlv.
+ */
+public class IpExtendedReachabilityTlvTest {
+    private final String prefix = "00";
+    private final byte[] tlv = {0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0};
+    private final byte[] tlv1 = {0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0};
+    private final byte[] tlv2 = {0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0};
+    private final byte[] tlv3 = {0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0};
+    private TlvHeader tlvHeader;
+    private IpExtendedReachabilityTlv ipExtendedReachabilityTlv;
+    private String result;
+    private boolean result1;
+    private int result2;
+    private TrafficEngineeringSubTlv trafficEngineeringSubTlv;
+    private byte result4;
+    private ChannelBuffer channelBuffer;
+    private byte[] result3;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        ipExtendedReachabilityTlv = new IpExtendedReachabilityTlv(tlvHeader);
+        trafficEngineeringSubTlv = new AdministrativeGroup(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        ipExtendedReachabilityTlv = null;
+
+    }
+
+    /**
+     * Tests prefix() getter method.
+     */
+    @Test
+    public void testPrefix() throws Exception {
+        ipExtendedReachabilityTlv.setPrefix(prefix);
+        result = ipExtendedReachabilityTlv.prefix();
+        assertThat(result, is("00"));
+    }
+
+    /**
+     * Tests prefix() setter method.
+     */
+    @Test
+    public void testSetPrefix() throws Exception {
+        ipExtendedReachabilityTlv.setPrefix(prefix);
+        result = ipExtendedReachabilityTlv.prefix();
+        assertThat(result, is("00"));
+    }
+
+    /**
+     * Tests isDown() getter method.
+     */
+
+    @Test
+    public void testIsDown() throws Exception {
+        ipExtendedReachabilityTlv.setDown(true);
+        result1 = ipExtendedReachabilityTlv.isDown();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDown() setter method.
+     */
+    @Test
+    public void testSetDown() throws Exception {
+        ipExtendedReachabilityTlv.setDown(true);
+        result1 = ipExtendedReachabilityTlv.isDown();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isSubTlvPresence() getter method.
+     */
+    @Test
+    public void testIsSubTlvPresence() throws Exception {
+        ipExtendedReachabilityTlv.setSubTlvPresence(true);
+        result1 = ipExtendedReachabilityTlv.isSubTlvPresence();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isSubTlvPresence() setter method.
+     */
+    @Test
+    public void testSetSubTlvPresence() throws Exception {
+        ipExtendedReachabilityTlv.setSubTlvPresence(true);
+        result1 = ipExtendedReachabilityTlv.isSubTlvPresence();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests prefixLength() getter method.
+     */
+    @Test
+    public void testPrefixLength() throws Exception {
+        ipExtendedReachabilityTlv.setPrefixLength(10);
+        result2 = ipExtendedReachabilityTlv.prefixLength();
+        assertThat(result2, is(10));
+
+    }
+
+    /**
+     * Tests prefixLength() setter method.
+     */
+    @Test
+    public void testSetPrefixLength() throws Exception {
+        ipExtendedReachabilityTlv.setPrefixLength(10);
+        result2 = ipExtendedReachabilityTlv.prefixLength();
+        assertThat(result2, is(10));
+    }
+
+    /**
+     * Tests addNeighbor() method.
+     */
+    @Test
+    public void testAddSubTlv() throws Exception {
+        ipExtendedReachabilityTlv.addSubTlv(trafficEngineeringSubTlv);
+        assertThat(ipExtendedReachabilityTlv, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests subTlvLength() getter method.
+     */
+    @Test
+    public void testSubTlvLength() throws Exception {
+        ipExtendedReachabilityTlv.setSubTlvLength((byte) 10);
+        result4 = ipExtendedReachabilityTlv.subTlvLength();
+        assertThat(result4, is((byte) 10));
+    }
+
+    /**
+     * Tests subTlvLength() setter method.
+     */
+    @Test
+    public void testSetSubTlvLength() throws Exception {
+        ipExtendedReachabilityTlv.setSubTlvLength((byte) 10);
+        result4 = ipExtendedReachabilityTlv.subTlvLength();
+        assertThat(result4, is((byte) 10));
+    }
+
+    /**
+     * Tests metric() getter method.
+     */
+    @Test
+    public void testMetric() throws Exception {
+        ipExtendedReachabilityTlv.setMetric(10);
+        result2 = ipExtendedReachabilityTlv.metric();
+        assertThat(result2, is(10));
+    }
+
+    /**
+     * Tests metric() setter method.
+     */
+    @Test
+    public void testSetMetric() throws Exception {
+        ipExtendedReachabilityTlv.setMetric(10);
+        result2 = ipExtendedReachabilityTlv.metric();
+        assertThat(result2, is(10));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        ipExtendedReachabilityTlv.readFrom(channelBuffer);
+        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
+        ipExtendedReachabilityTlv.readFrom(channelBuffer);
+        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv2);
+        ipExtendedReachabilityTlv.readFrom(channelBuffer);
+        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv3);
+        ipExtendedReachabilityTlv.readFrom(channelBuffer);
+        assertThat(ipExtendedReachabilityTlv.metric(), is(0));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        ipExtendedReachabilityTlv.readFrom(channelBuffer);
+        ipExtendedReachabilityTlv.setPrefix(prefix);
+        result3 = ipExtendedReachabilityTlv.asBytes();
+        assertThat(result3, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(ipExtendedReachabilityTlv.toString(), is(notNullValue()));
+    }
+
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java
new file mode 100644
index 0000000..1c086ab
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInterfaceAddressTlvTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for IP InterfaceAddressTlv.
+ */
+public class IpInterfaceAddressTlvTest {
+    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
+    private final byte[] tlv = {0, 0, 0, 0};
+    private TlvHeader tlvHeader;
+    private IpInterfaceAddressTlv ipInterfaceAddressTlv;
+    private List<Ip4Address> resultList;
+    private byte[] result;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        ipInterfaceAddressTlv = null;
+    }
+
+    /**
+     * Tests addInterfaceAddress() method.
+     */
+    @Test
+    public void testAddInterfaceAddres() throws Exception {
+        ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
+        resultList = ipInterfaceAddressTlv.interfaceAddress();
+        assertThat(resultList.size(), is(1));
+
+    }
+
+    /**
+     * Tests interfaceAddress() getter method.
+     */
+    @Test
+    public void testInterfaceAddress() throws Exception {
+        ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
+        resultList = ipInterfaceAddressTlv.interfaceAddress();
+        assertThat(resultList.size(), is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        ipInterfaceAddressTlv.readFrom(channelBuffer);
+        assertThat(ipInterfaceAddressTlv.interfaceAddress().size(), is(1));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        ipInterfaceAddressTlv.readFrom(channelBuffer);
+        result = ipInterfaceAddressTlv.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(ipInterfaceAddressTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java
new file mode 100644
index 0000000..c1b2117
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IpInternalReachabilityTlvTest.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for IP InternalReachabilityTlv.
+ */
+public class IpInternalReachabilityTlvTest {
+    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private TlvHeader tlvHeader;
+    private IpInternalReachabilityTlv ipInternalReachabilityTlv;
+    private MetricOfInternalReachability metricOfInternalReachability;
+    private byte[] result;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        ipInternalReachabilityTlv = new IpInternalReachabilityTlv(tlvHeader);
+        metricOfInternalReachability = new MetricOfInternalReachability();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        ipInternalReachabilityTlv = null;
+    }
+
+    /**
+     * Tests addInternalReachabilityMetric() method.
+     */
+    @Test
+    public void testAddInternalReachabilityMetric() throws Exception {
+        ipInternalReachabilityTlv.addInternalReachabilityMetric(metricOfInternalReachability);
+        assertThat(ipInternalReachabilityTlv, is(notNullValue()));
+
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        ipInternalReachabilityTlv.readFrom(channelBuffer);
+        assertThat(ipInternalReachabilityTlv, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        ipInternalReachabilityTlv.readFrom(channelBuffer);
+        result = ipInternalReachabilityTlv.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(ipInternalReachabilityTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java
new file mode 100644
index 0000000..d52426e
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsReachabilityTlvTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for IS ReachabilityTlv.
+ */
+public class IsReachabilityTlvTest {
+    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private TlvHeader tlvHeader;
+    private IsReachabilityTlv isReachabilityTlv;
+    private MetricsOfReachability metricsOfReachability;
+    private int resultInt;
+    private ChannelBuffer channelBuffer;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        isReachabilityTlv = new IsReachabilityTlv(tlvHeader);
+        metricsOfReachability = new MetricsOfReachability();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        isReachabilityTlv = null;
+    }
+
+    /**
+     * Tests reserved() getter method.
+     */
+    @Test
+    public void testReserved() throws Exception {
+        isReachabilityTlv.setReserved(10);
+        resultInt = isReachabilityTlv.reserved();
+        assertThat(resultInt, is(10));
+    }
+
+    /**
+     * Tests reserved() setter method.
+     */
+    @Test
+    public void testSetReserved() throws Exception {
+        isReachabilityTlv.setReserved(10);
+        resultInt = isReachabilityTlv.reserved();
+        assertThat(resultInt, is(10));
+    }
+
+    /**
+     * Tests addMeticsOfReachability() getter method.
+     */
+    @Test
+    public void testAddMeticsOfReachability() throws Exception {
+        isReachabilityTlv.addMeticsOfReachability(metricsOfReachability);
+        assertThat(isReachabilityTlv, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        isReachabilityTlv.readFrom(channelBuffer);
+        assertThat(isReachabilityTlv, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        isReachabilityTlv.readFrom(channelBuffer);
+        result = isReachabilityTlv.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(isReachabilityTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java
new file mode 100644
index 0000000..676d1f2
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/IsisNeighborTlvTest.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.MacAddress;
+
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for ISIS NeighborTLV.
+ */
+public class IsisNeighborTlvTest {
+    private final MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
+    private final byte[] tlv = {0, 0, 0, 0, 0, 0};
+    private TlvHeader tlvHeader;
+    private IsisNeighborTlv isisNeighborTlv;
+    private List<MacAddress> resultList;
+    private ChannelBuffer channelBuffer;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        isisNeighborTlv = null;
+    }
+
+    /**
+     * Tests addNeighbor() getter method.
+     */
+    @Test
+    public void testAddNeighbor() throws Exception {
+        isisNeighborTlv.addNeighbor(macAddress);
+        resultList = isisNeighborTlv.neighbor();
+        assertThat(resultList.size(), is(1));
+
+    }
+
+    /**
+     * Tests neighbor() setter method.
+     */
+    @Test
+    public void testNeighbor() throws Exception {
+        isisNeighborTlv.addNeighbor(macAddress);
+        resultList = isisNeighborTlv.neighbor();
+        assertThat(resultList.size(), is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        isisNeighborTlv.readFrom(channelBuffer);
+        assertThat(isisNeighborTlv.neighbor().size(), is(1));
+    }
+
+    /**
+     * Tests asBytes() getter method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        isisNeighborTlv.readFrom(channelBuffer);
+        result = isisNeighborTlv.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(isisNeighborTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java
new file mode 100644
index 0000000..d38a7c8
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntriesTlvTest.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for LspEntriesTlv.
+ */
+public class LspEntriesTlvTest {
+
+    private final byte[] entry = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private LspEntriesTlv lspEntriesTlv;
+    private TlvHeader tlvHeader;
+    private List<LspEntry> lspEntries = new ArrayList();
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        lspEntriesTlv = new LspEntriesTlv(tlvHeader);
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        lspEntriesTlv = null;
+        lspEntries.clear();
+    }
+
+    /**
+     * Tests lspEntry() getter method.
+     */
+    @Test
+    public void testLspEntry() throws Exception {
+        lspEntriesTlv.addLspEntry(new LspEntry());
+        assertThat(lspEntriesTlv.lspEntry().size(), is(1));
+    }
+
+    /**
+     * Tests lspEntry() add method.
+     */
+    @Test
+    public void testAddLspEntry() throws Exception {
+        lspEntriesTlv.addLspEntry(new LspEntry());
+        assertThat(lspEntriesTlv.lspEntry().size(), is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(entry);
+        lspEntriesTlv.readFrom(channelBuffer);
+        lspEntries = lspEntriesTlv.lspEntry();
+        assertThat(lspEntriesTlv.lspEntry().size(), is(1));
+    }
+
+    /**
+     * Tests asBytes()  method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(entry);
+        lspEntriesTlv.readFrom(channelBuffer);
+        lspEntriesTlv.asBytes();
+    }
+
+    /**
+     * Tests toString()  method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(lspEntriesTlv.toString(), is(notNullValue()));
+    }
+
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java
new file mode 100644
index 0000000..2c8f0d1
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/LspEntryTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for LspEntry.
+ */
+public class LspEntryTest {
+
+    private final String lspId = "10.10.10.10";
+    private final byte[] entry = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private LspEntry lspEntry;
+    private int result;
+    private String result2;
+    private ChannelBuffer channelBuffer;
+    private byte[] result3;
+
+    @Before
+    public void setUp() throws Exception {
+        lspEntry = new LspEntry();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        lspEntry = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests lspSequenceNumber() getter method.
+     */
+    @Test
+    public void testLspSequenceNumber() throws Exception {
+        lspEntry.setLspSequenceNumber(0);
+        result = lspEntry.lspSequenceNumber();
+        assertThat(result, is(0));
+    }
+
+    /**
+     * Tests lspSequenceNumber() setter method.
+     */
+    @Test
+    public void testSetLspSequenceNumber() throws Exception {
+        lspEntry.setLspSequenceNumber(0);
+        result = lspEntry.lspSequenceNumber();
+        assertThat(result, is(0));
+    }
+
+    /**
+     * Tests lspChecksum() getter method.
+     */
+    @Test
+    public void testLspChecksum() throws Exception {
+        lspEntry.setLspChecksum(0);
+        result = lspEntry.lspChecksum();
+        assertThat(result, is(0));
+    }
+
+    /**
+     * Tests lspChecksum() setter method.
+     */
+    @Test
+    public void testSetLspChecksum() throws Exception {
+        lspEntry.setLspChecksum(0);
+        result = lspEntry.lspChecksum();
+        assertThat(result, is(0));
+    }
+
+    /**
+     * Tests remainingTime() getter method.
+     */
+    @Test
+    public void testRemainingTime() throws Exception {
+        lspEntry.setRemainingTime(0);
+        result = lspEntry.remainingTime();
+        assertThat(result, is(0));
+    }
+
+    /**
+     * Tests remainingTime() setter method.
+     */
+    @Test
+    public void testSetRemainingTime() throws Exception {
+        lspEntry.setRemainingTime(0);
+        result = lspEntry.remainingTime();
+        assertThat(result, is(0));
+    }
+
+    /**
+     * Tests lspId() getter method.
+     */
+    @Test
+    public void testLspId() throws Exception {
+        lspEntry.setLspId(lspId);
+        result2 = lspEntry.lspId();
+        assertThat(result2, is("10.10.10.10"));
+    }
+
+    /**
+     * Tests lspId() getter method.
+     */
+    @Test
+    public void testSetLspId() throws Exception {
+        lspEntry.setLspId(lspId);
+        result2 = lspEntry.lspId();
+        assertThat(result2, is("10.10.10.10"));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(entry);
+        lspEntry.readFrom(channelBuffer);
+        assertThat(lspEntry, is(notNullValue()));
+    }
+
+    /**
+     * Tests lspEntryAsBytes() method.
+     */
+    @Test
+    public void testLspEntryAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(entry);
+        lspEntry.readFrom(channelBuffer);
+        result3 = lspEntry.lspEntryAsBytes();
+        assertThat(lspEntry, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(lspEntry.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java
new file mode 100644
index 0000000..f96b1d2
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricOfInternalReachabilityTest.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for MetricOfInternalReachability.
+ */
+public class MetricOfInternalReachabilityTest {
+
+    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
+    private final byte[] internalReachability = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private MetricOfInternalReachability reachability;
+    private Ip4Address result;
+    private boolean result1;
+    private byte result2;
+    private ChannelBuffer channelBuffer;
+    private byte[] result3;
+
+    @Before
+    public void setUp() throws Exception {
+        reachability = new MetricOfInternalReachability();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        reachability = null;
+        result = null;
+        result1 = false;
+    }
+
+    /**
+     * Tests getIpAddress() getter method.
+     */
+    @Test
+    public void testGetIpAddress() throws Exception {
+        reachability.setIpAddress(ip4Address);
+        result = reachability.getIpAddress();
+        assertThat(result, is(ip4Address));
+    }
+
+    /**
+     * Tests setIpAddress() setter method.
+     */
+    @Test
+    public void testSetIpAddress() throws Exception {
+        reachability.setIpAddress(ip4Address);
+        result = reachability.getIpAddress();
+        assertThat(result, is(ip4Address));
+    }
+
+    /**
+     * Tests getSubnetAddres() getter method.
+     */
+    @Test
+    public void testGetSubnetAddres() throws Exception {
+        reachability.setSubnetAddres(ip4Address);
+        result = reachability.getSubnetAddres();
+        assertThat(result, is(ip4Address));
+    }
+
+    /**
+     * Tests setSubnetAddres() setter method.
+     */
+    @Test
+    public void testSetSubnetAddres() throws Exception {
+        reachability.setSubnetAddres(ip4Address);
+        result = reachability.getSubnetAddres();
+        assertThat(result, is(ip4Address));
+    }
+
+    /**
+     * Tests isErrorIsInternal() getter method.
+     */
+    @Test
+    public void testIsErrorIsInternal() throws Exception {
+        reachability.setErrorIsInternal(true);
+        result1 = reachability.isErrorIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorIsInternal() setter method.
+     */
+    @Test
+    public void testSetErrorIsInternal() throws Exception {
+        reachability.setErrorIsInternal(true);
+        result1 = reachability.isErrorIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseIsInternal() getter method.
+     */
+    @Test
+    public void testIsExpenseIsInternal() throws Exception {
+        reachability.setExpenseIsInternal(true);
+        result1 = reachability.isExpenseIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseIsInternal() setter method.
+     */
+    @Test
+    public void testSetExpenseIsInternal() throws Exception {
+        reachability.setExpenseIsInternal(true);
+        result1 = reachability.isExpenseIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDelayIsInternal() getter method.
+     */
+    @Test
+    public void testIsDelayIsInternal() throws Exception {
+        reachability.setDelayIsInternal(true);
+        result1 = reachability.isDelayIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDelayIsInternal() setter method.
+     */
+    @Test
+    public void testSetDelayIsInternal() throws Exception {
+        reachability.setDelayIsInternal(true);
+        result1 = reachability.isDelayIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDefaultDistributionDown() getter method.
+     */
+    @Test
+    public void testIsDefaultDistributionDown() throws Exception {
+        reachability.setDefaultDistributionDown(true);
+        result1 = reachability.isDefaultDistributionDown();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDefaultDistributionDown() setter method.
+     */
+    @Test
+    public void testSetDefaultDistributionDown() throws Exception {
+        reachability.setDefaultDistributionDown(true);
+        result1 = reachability.isDefaultDistributionDown();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDefaultIsInternal() getter method.
+     */
+    @Test
+    public void testIsDefaultIsInternal() throws Exception {
+        reachability.setDefaultIsInternal(true);
+        result1 = reachability.isDefaultIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDefaultIsInternal() setter method.
+     */
+    @Test
+    public void testSetDefaultIsInternal() throws Exception {
+        reachability.setDefaultIsInternal(true);
+        result1 = reachability.isDefaultIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorMetricSupported() getter method.
+     */
+    @Test
+    public void testIsErrorMetricSupported() throws Exception {
+        reachability.setErrorMetricSupported(true);
+        result1 = reachability.isErrorMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorMetricSupported() setter method.
+     */
+    @Test
+    public void testSetErrorMetricSupported() throws Exception {
+        reachability.setErrorMetricSupported(true);
+        result1 = reachability.isErrorMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseMetricSupported() setter method.
+     */
+    @Test
+    public void testIsExpenseMetricSupported() throws Exception {
+        reachability.setExpenseMetricSupported(true);
+        result1 = reachability.isExpenseMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseMetricSupported() setter method.
+     */
+    @Test
+    public void testSetExpenseMetricSupported() throws Exception {
+        reachability.setExpenseMetricSupported(true);
+        result1 = reachability.isExpenseMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDelayMetricSupported() getter method.
+     */
+    @Test
+    public void testIsDelayMetricSupported() throws Exception {
+        reachability.setDelayMetricSupported(true);
+        result1 = reachability.isDelayMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDelayMetricSupported() setter method.
+     */
+    @Test
+    public void testSetDelayMetricSupported() throws Exception {
+        reachability.setDelayMetricSupported(true);
+        result1 = reachability.isDelayMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests errorMetric() getter method.
+     */
+    @Test
+    public void testErrorMetric() throws Exception {
+        reachability.setErrorMetric((byte) 0);
+        result2 = reachability.errorMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests errorMetric() setter method.
+     */
+    @Test
+    public void testSetErrorMetric() throws Exception {
+        reachability.setErrorMetric((byte) 0);
+        result2 = reachability.errorMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests delayMetric() getter method.
+     */
+    @Test
+    public void testDelayMetric() throws Exception {
+        reachability.setDelayMetric((byte) 0);
+        result2 = reachability.delayMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests delayMetric() setter method.
+     */
+    @Test
+    public void testSetDelayMetric() throws Exception {
+        reachability.setDelayMetric((byte) 0);
+        result2 = reachability.delayMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests defaultMetric() getter method.
+     */
+    @Test
+    public void testDefaultMetric() throws Exception {
+        reachability.setDefaultMetric((byte) 0);
+        result2 = reachability.defaultMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests defaultMetric() setter method.
+     */
+    @Test
+    public void testSetDefaultMetric() throws Exception {
+        reachability.setDefaultMetric((byte) 0);
+        result2 = reachability.defaultMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(internalReachability);
+        reachability.readFrom(channelBuffer);
+        assertThat(reachability, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(internalReachability);
+        reachability.readFrom(channelBuffer);
+        result3 = reachability.asBytes();
+        assertThat(result3, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(reachability.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java
new file mode 100644
index 0000000..318eeea
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/MetricsOfReachabilityTest.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Unit test class for MetricsOfReachability.
+ */
+public class MetricsOfReachabilityTest {
+    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
+    private final byte[] metricReachability = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private MetricsOfReachability reachability;
+    private String neighborId = "2929.2929.2929";
+    private Ip4Address result;
+    private boolean result1;
+    private byte result2;
+    private ChannelBuffer channelBuffer;
+    private byte[] result3;
+    private String result4;
+
+    @Before
+    public void setUp() throws Exception {
+        reachability = new MetricsOfReachability();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+        result1 = false;
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        reachability = null;
+        result1 = false;
+        result3 = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests isDelayIsInternal() getter method.
+     */
+    @Test
+    public void testIsDelayIsInternal() throws Exception {
+        reachability.setDelayIsInternal(true);
+        result1 = reachability.isDelayIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDelayIsInternal() setter method.
+     */
+    @Test
+    public void testSetDelayIsInternal() throws Exception {
+        reachability.setDelayIsInternal(true);
+        result1 = reachability.isDelayIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseIsInternal() getter method.
+     */
+    @Test
+    public void testIsExpenseIsInternal() throws Exception {
+        reachability.setExpenseIsInternal(true);
+        result1 = reachability.isExpenseIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseIsInternal() setter method.
+     */
+    @Test
+    public void testSetExpenseIsInternal() throws Exception {
+        reachability.setExpenseIsInternal(true);
+        result1 = reachability.isExpenseIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorIsInternal() getter method.
+     */
+    @Test
+    public void testIsErrorIsInternal() throws Exception {
+        reachability.setErrorIsInternal(true);
+        result1 = reachability.isErrorIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorIsInternal() setter method.
+     */
+    @Test
+    public void testSetErrorIsInternal() throws Exception {
+        reachability.setErrorIsInternal(true);
+        result1 = reachability.isErrorIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDefaultIsInternal() getter method.
+     */
+    @Test
+    public void testIsDefaultIsInternal() throws Exception {
+        reachability.setDefaultIsInternal(true);
+        result1 = reachability.isDefaultIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDefaultIsInternal() setter method.
+     */
+    @Test
+    public void testSetDefaultIsInternal() throws Exception {
+        reachability.setDefaultIsInternal(true);
+        result1 = reachability.isDefaultIsInternal();
+        assertThat(result1, is(true));
+    }
+
+    @Test
+    public void testIsDelayMetricSupported() throws Exception {
+        reachability.setDelayMetricSupported(true);
+        result1 = reachability.isDelayMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isDelayMetricSupported() setter method.
+     */
+    @Test
+    public void testSetDelayMetricSupported() throws Exception {
+        reachability.setDelayMetricSupported(true);
+        result1 = reachability.isDelayMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseMetricSupported() getter method.
+     */
+    @Test
+    public void testIsExpenseMetricSupported() throws Exception {
+        reachability.setExpenseMetricSupported(true);
+        result1 = reachability.isExpenseMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isExpenseMetricSupported() setter method.
+     */
+    @Test
+    public void testSetExpenseMetricSupported() throws Exception {
+        reachability.setExpenseMetricSupported(true);
+        result1 = reachability.isExpenseMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorMetricSupported() getter method.
+     */
+    @Test
+    public void testIsErrorMetricSupported() throws Exception {
+        reachability.setErrorMetricSupported(true);
+        result1 = reachability.isErrorMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests isErrorMetricSupported() setter method.
+     */
+    @Test
+    public void testSetErrorMetricSupported() throws Exception {
+        reachability.setErrorMetricSupported(true);
+        result1 = reachability.isErrorMetricSupported();
+        assertThat(result1, is(true));
+    }
+
+    /**
+     * Tests neighborId() getter method.
+     */
+    @Test
+    public void testNeighborId() throws Exception {
+        reachability.setNeighborId(neighborId);
+        result4 = reachability.neighborId();
+        assertThat(result4, is(neighborId));
+    }
+
+    /**
+     * Tests neighborId() setter method.
+     */
+    @Test
+    public void testSetNeighborId() throws Exception {
+        reachability.setNeighborId(neighborId);
+        result4 = reachability.neighborId();
+        assertThat(result4, is(neighborId));
+    }
+
+    /**
+     * Tests defaultMetric() getter method.
+     */
+    @Test
+    public void testDefaultMetric() throws Exception {
+        reachability.setDefaultMetric((byte) 0);
+        result2 = reachability.defaultMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests defaultMetric() setter method.
+     */
+    @Test
+    public void testSetDefaultMetric() throws Exception {
+        reachability.setDefaultMetric((byte) 0);
+        result2 = reachability.defaultMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests delayMetric() getter method.
+     */
+    @Test
+    public void testDelayMetric() throws Exception {
+        reachability.setDelayMetric((byte) 0);
+        result2 = reachability.delayMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests delayMetric() setter method.
+     */
+    @Test
+    public void testSetDelayMetric() throws Exception {
+        reachability.setDelayMetric((byte) 0);
+        result2 = reachability.delayMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests expenseMetric() getter method.
+     */
+    @Test
+    public void testExpenseMetric() throws Exception {
+        reachability.setExpenseMetric((byte) 0);
+        result2 = reachability.expenseMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests expenseMetric() setter method.
+     */
+    @Test
+    public void testSetExpenseMetric() throws Exception {
+        reachability.setExpenseMetric((byte) 0);
+        result2 = reachability.expenseMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests errorMetric() getter method.
+     */
+    @Test
+    public void testErrorMetric() throws Exception {
+        reachability.setErrorMetric((byte) 0);
+        result2 = reachability.errorMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests errorMetric() setter method.
+     */
+    @Test
+    public void testSetErrorMetric() throws Exception {
+        reachability.setErrorMetric((byte) 0);
+        result2 = reachability.errorMetric();
+        assertThat(result2, is((byte) 0));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(metricReachability);
+        reachability.readFrom(channelBuffer);
+        assertThat(reachability, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(metricReachability);
+        reachability.readFrom(channelBuffer);
+        result3 = reachability.asBytes();
+        assertThat(result3, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(reachability.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java
new file mode 100644
index 0000000..f55205b
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/PaddingTlvTest.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for PaddingTlv.
+ */
+public class PaddingTlvTest {
+
+    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0};
+    private PaddingTlv paddingTlv;
+    private TlvHeader tlvHeader;
+    private ChannelBuffer channelBuffer;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        paddingTlv = new PaddingTlv(tlvHeader);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        paddingTlv = null;
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        paddingTlv.readFrom(channelBuffer);
+        assertThat(paddingTlv, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        paddingTlv.readFrom(channelBuffer);
+        result = paddingTlv.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() getter method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(paddingTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java
new file mode 100644
index 0000000..b55718f
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/ProtocolSupportedTlvTest.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for ProtocolSupportedTlv.
+ */
+public class ProtocolSupportedTlvTest {
+    private final byte[] tlv = {0};
+    private ProtocolSupportedTlv protocolSupportedTlv;
+    private TlvHeader tlvHeader;
+    private List<Byte> supported;
+    private ChannelBuffer channelBuffer;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        protocolSupportedTlv = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests addProtocolSupported() method.
+     */
+    @Test
+    public void testAddProtocolSupported() throws Exception {
+        protocolSupportedTlv.addProtocolSupported((byte) 1);
+        supported = protocolSupportedTlv.protocolSupported();
+        assertThat(supported.size(), is(1));
+    }
+
+    /**
+     * Tests addProtocolSupported() getter method.
+     */
+    @Test
+    public void testProtocolSupported() throws Exception {
+        protocolSupportedTlv.addProtocolSupported((byte) 1);
+        supported = protocolSupportedTlv.protocolSupported();
+        assertThat(supported.size(), is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        protocolSupportedTlv.readFrom(channelBuffer);
+        supported = protocolSupportedTlv.protocolSupported();
+        assertThat(supported.size(), is(1));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        protocolSupportedTlv.readFrom(channelBuffer);
+        result = protocolSupportedTlv.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests toString() method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(protocolSupportedTlv.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java
new file mode 100644
index 0000000..838d425
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvFinderTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+
+/**
+ * Unit test class for TlvFinder.
+ */
+public class TlvFinderTest {
+
+    private final byte[] tlv = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private final byte[] tlv1 = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+    private TlvFinder tlvFinder;
+    private TlvHeader tlvHeader;
+    private ChannelBuffer channelBuffer;
+    private IsisTlv isisTlv;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvFinder = new TlvFinder();
+        tlvHeader = new TlvHeader();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvFinder = null;
+        isisTlv = null;
+    }
+
+    /**
+     * Tests IsisTlv() getter method.
+     */
+    @Test
+    public void testIsisTlv() throws Exception {
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+
+        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(AreaAddressTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.HOSTNAME.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(HostNameTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.IDRPINFORMATION.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(IdrpInformationTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(IpExtendedReachabilityTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(IpInterfaceAddressTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(IpInternalReachabilityTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(ProtocolSupportedTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.ISREACHABILITY.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(IsReachabilityTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(IsisNeighborTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.LSPENTRY.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(LspEntriesTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv);
+        tlvHeader.setTlvType(TlvType.PADDING.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(PaddingTlv.class));
+
+        channelBuffer = ChannelBuffers.copiedBuffer(tlv1);
+        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
+        isisTlv = tlvFinder.findTlv(tlvHeader, channelBuffer);
+        assertThat(isisTlv, instanceOf(AdjacencyStateTlv.class));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java
new file mode 100644
index 0000000..22371d5
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvHeaderTest.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+/**
+ * Unit test class for TlvHeader.
+ */
+public class TlvHeaderTest {
+
+    private TlvHeader tlvHeader;
+    private int result;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests tlvLength() getter method.
+     */
+    @Test
+    public void testTlvLength() throws Exception {
+        tlvHeader.setTlvLength(1);
+        result = tlvHeader.tlvLength();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests tlvLength() setter method.
+     */
+    @Test
+    public void testSetTlvLength() throws Exception {
+        tlvHeader.setTlvLength(1);
+        result = tlvHeader.tlvLength();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests tlvType() getter method.
+     */
+    @Test
+    public void testTlvType() throws Exception {
+        tlvHeader.setTlvType(1);
+        result = tlvHeader.tlvType();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests tlvType() setter method.
+     */
+    @Test
+    public void testSetTlvType() throws Exception {
+        tlvHeader.setTlvType(1);
+        result = tlvHeader.tlvType();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        tlvHeader.readFrom(channelBuffer);
+        assertThat(tlvHeader, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() getter method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        assertThat(tlvHeader.asBytes(), is(nullValue()));
+    }
+
+    /**
+     * Tests tlvHeaderAsByteArray() method.
+     */
+    @Test
+    public void testTlvHeaderAsByteArray() throws Exception {
+        tlvHeader.setTlvLength(1);
+        tlvHeader.setTlvType(1);
+        assertThat(tlvHeader.tlvHeaderAsByteArray(), is(notNullValue()));
+        assertThat(tlvHeader.tlvType(), is(1));
+        assertThat(tlvHeader.tlvLength(), is(1));
+    }
+
+    /**
+     * Tests toString() getter method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(tlvHeader.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java
new file mode 100644
index 0000000..bb280d2
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/TlvsToBytesTest.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv;
+
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onlab.packet.MacAddress;
+import org.onosproject.isis.controller.IsisInterfaceState;
+import org.onosproject.isis.io.util.IsisConstants;
+
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for TlvsToBytes.
+ */
+public class TlvsToBytesTest {
+    private final String areaAddress = "49";
+    private final Ip4Address ip4Address = Ip4Address.valueOf("10.10.10.10");
+    private final String systemName = "ROUTER";
+    private final String neighborId = "2929.2929.2929";
+    private List<Byte> tlv;
+    private MacAddress macAddress = MacAddress.valueOf("a4:23:05:00:00:00");
+    private String prefix = "192.168.7";
+
+    /**
+     * Tests TlvToBytes() method.
+     */
+    @Test
+    public void testTlvToBytes() throws Exception {
+        TlvHeader tlvHeader = new TlvHeader();
+        tlvHeader.setTlvType(TlvType.AREAADDRESS.value());
+        tlvHeader.setTlvLength(0);
+        AreaAddressTlv areaAddressTlv = new AreaAddressTlv(tlvHeader);
+        areaAddressTlv.addAddress(areaAddress);
+        tlv = TlvsToBytes.tlvToBytes(areaAddressTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.PROTOCOLSUPPORTED.value());
+        tlvHeader.setTlvLength(0);
+        ProtocolSupportedTlv protocolSupportedTlv = new ProtocolSupportedTlv(tlvHeader);
+        protocolSupportedTlv.addProtocolSupported((byte) IsisConstants.PROTOCOLSUPPORTED);
+        tlv = TlvsToBytes.tlvToBytes(protocolSupportedTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.IPINTERFACEADDRESS.value());
+        tlvHeader.setTlvLength(0);
+        IpInterfaceAddressTlv ipInterfaceAddressTlv = new IpInterfaceAddressTlv(tlvHeader);
+        ipInterfaceAddressTlv.addInterfaceAddres(ip4Address);
+        tlv = TlvsToBytes.tlvToBytes(ipInterfaceAddressTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.HOSTNAME.value());
+        tlvHeader.setTlvLength(0);
+        HostNameTlv hostNameTlv = new HostNameTlv(tlvHeader);
+        hostNameTlv.setHostName(systemName);
+        tlv = TlvsToBytes.tlvToBytes(hostNameTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.ISREACHABILITY.value());
+        tlvHeader.setTlvLength(0);
+        IsReachabilityTlv isReachabilityTlv = new IsReachabilityTlv(tlvHeader);
+        isReachabilityTlv.setReserved(0);
+        MetricsOfReachability metricsOfReachability = new MetricsOfReachability();
+        metricsOfReachability.setDefaultMetric((byte) 10);
+        metricsOfReachability.setDefaultIsInternal(true);
+        metricsOfReachability.setDelayMetric((byte) 10);
+        metricsOfReachability.setDelayIsInternal(true);
+        metricsOfReachability.setDelayMetricSupported(true);
+        metricsOfReachability.setExpenseMetric((byte) 10);
+        metricsOfReachability.setExpenseIsInternal(true);
+        metricsOfReachability.setExpenseMetricSupported(true);
+        metricsOfReachability.setErrorMetric((byte) 10);
+        metricsOfReachability.setErrorIsInternal(true);
+        metricsOfReachability.setErrorMetricSupported(true);
+        metricsOfReachability.setNeighborId(neighborId);
+        isReachabilityTlv.addMeticsOfReachability(metricsOfReachability);
+        tlv = TlvsToBytes.tlvToBytes(isReachabilityTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.IPINTERNALREACHABILITY.value());
+        tlvHeader.setTlvLength(0);
+        IpInternalReachabilityTlv ipInterReacTlv = new IpInternalReachabilityTlv(tlvHeader);
+        MetricOfInternalReachability metricOfIntRea = new MetricOfInternalReachability();
+        metricOfIntRea.setDefaultMetric((byte) 10);
+        metricOfIntRea.setDefaultIsInternal(true);
+        metricOfIntRea.setDefaultDistributionDown(true);
+        metricOfIntRea.setDelayMetric((byte) 0);
+        metricOfIntRea.setDelayMetricSupported(false);
+        metricOfIntRea.setDelayIsInternal(true);
+        metricOfIntRea.setExpenseMetric((byte) 0);
+        metricOfIntRea.setExpenseMetricSupported(false);
+        metricOfIntRea.setExpenseIsInternal(true);
+        metricOfIntRea.setErrorMetric((byte) 0);
+        metricOfIntRea.setErrorMetricSupported(false);
+        metricOfIntRea.setExpenseIsInternal(true);
+        metricOfIntRea.setIpAddress(ip4Address);
+        metricOfIntRea.setSubnetAddres(ip4Address);
+        ipInterReacTlv.addInternalReachabilityMetric(metricOfIntRea);
+        tlv = TlvsToBytes.tlvToBytes(ipInterReacTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.PADDING.value());
+        tlvHeader.setTlvLength(255);
+        PaddingTlv paddingTlv = new PaddingTlv(tlvHeader);
+        tlv = TlvsToBytes.tlvToBytes(paddingTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.IPEXTENDEDREACHABILITY.value());
+        tlvHeader.setTlvLength(0);
+        IpExtendedReachabilityTlv extendedTlv = new IpExtendedReachabilityTlv(tlvHeader);
+        extendedTlv.setDown(false);
+        extendedTlv.setMetric(10);
+        extendedTlv.setPrefix(prefix);
+        extendedTlv.setPrefixLength(24);
+        extendedTlv.setSubTlvLength((byte) 0);
+        extendedTlv.setSubTlvPresence(false);
+        tlv = TlvsToBytes.tlvToBytes(extendedTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.ADJACENCYSTATE.value());
+        tlvHeader.setTlvLength(0);
+        AdjacencyStateTlv adjacencyStateTlv = new AdjacencyStateTlv(tlvHeader);
+        adjacencyStateTlv.setAdjacencyType((byte) IsisInterfaceState.DOWN.value());
+        tlv = TlvsToBytes.tlvToBytes(adjacencyStateTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.ISNEIGHBORS.value());
+        tlvHeader.setTlvLength(0);
+        IsisNeighborTlv isisNeighborTlv = new IsisNeighborTlv(tlvHeader);
+        isisNeighborTlv.addNeighbor(macAddress);
+        tlv = TlvsToBytes.tlvToBytes(isisNeighborTlv);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader.setTlvType(TlvType.EXTENDEDISREACHABILITY.value());
+        tlvHeader.setTlvLength(0);
+        IsExtendedReachability reachability = new IsExtendedReachability(tlvHeader);
+        NeighborForExtendedIs forExtendedIs = new NeighborForExtendedIs();
+        forExtendedIs.setMetric(10);
+        forExtendedIs.setNeighborId(neighborId);
+        reachability.addNeighbor(forExtendedIs);
+        tlv = TlvsToBytes.tlvToBytes(reachability);
+        assertThat(tlv, is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java
new file mode 100644
index 0000000..37179de
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/AdministrativeGroupTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for AdministrativeGroup.
+ */
+public class AdministrativeGroupTest {
+
+    private final byte[] packet = {0, 0, 0, 1};
+    private AdministrativeGroup administrativeGroup;
+    private ChannelBuffer channelBuffer;
+    private TlvHeader tlvHeader;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        administrativeGroup = new AdministrativeGroup(new TlvHeader());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        administrativeGroup = null;
+        channelBuffer = null;
+        tlvHeader = null;
+    }
+
+    /**
+     * Tests administrativeGroup() getter method.
+     */
+    @Test
+    public void testGetAdministrativeGroup() throws Exception {
+        administrativeGroup.setAdministrativeGroup(1);
+        assertThat(administrativeGroup.administrativeGroup(), is(1));
+    }
+
+    /**
+     * Tests administrativeGroup() setter method.
+     */
+    @Test
+    public void testSetAdministrativeGroup() throws Exception {
+        administrativeGroup.setAdministrativeGroup(1);
+        assertThat(administrativeGroup.administrativeGroup(), is(1));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvType(9);
+        tlvHeader.setTlvLength(4);
+        administrativeGroup = new AdministrativeGroup(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        administrativeGroup.readFrom(channelBuffer);
+        assertThat(administrativeGroup.administrativeGroup(), is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result = administrativeGroup.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
+     */
+    @Test
+    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
+        result = administrativeGroup.tlvBodyAsBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(administrativeGroup.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java
new file mode 100644
index 0000000..5acb728
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/InterfaceIpAddressTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for InterfaceIpAddress.
+ */
+public class InterfaceIpAddressTest {
+    private final byte[] packet = {1, 1, 1, 1};
+    private final byte[] packet1 = {};
+    private InterfaceIpAddress interfaceIpAddress;
+    private TlvHeader tlvHeader;
+    private Ip4Address ip4Address = Ip4Address.valueOf("1.1.1.1");
+    private byte[] result;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        interfaceIpAddress = new InterfaceIpAddress(new TlvHeader());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        interfaceIpAddress = null;
+        tlvHeader = null;
+        result = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(interfaceIpAddress.toString(), is(notNullValue()));
+    }
+
+    /**
+     * Tests addLocalInterfaceIPAddress() method.
+     */
+    @Test
+    public void testAddLocalInterfaceIPAddress() throws Exception {
+        interfaceIpAddress.addLocalInterfaceIPAddress(ip4Address);
+        assertThat(interfaceIpAddress, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() {
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvType(3);
+        tlvHeader.setTlvLength(4);
+        interfaceIpAddress = new InterfaceIpAddress(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        interfaceIpAddress.readFrom(channelBuffer);
+        assertThat(interfaceIpAddress, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom1() throws Exception {
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvType(3);
+        tlvHeader.setTlvLength(4);
+        interfaceIpAddress = new InterfaceIpAddress(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        interfaceIpAddress.readFrom(channelBuffer);
+        assertThat(interfaceIpAddress, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result = interfaceIpAddress.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
+     */
+    @Test
+    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
+        result = interfaceIpAddress.tlvBodyAsBytes();
+        assertThat(result, is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java
new file mode 100644
index 0000000..32caade
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumBandwidthTest.java
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for MaximumBandwidth.
+ */
+public class MaximumBandwidthTest {
+
+    private final byte[] packet = {0, 0, 0, 0};
+    private MaximumBandwidth maximumBandwidth;
+    private TlvHeader header;
+    private ChannelBuffer channelBuffer;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        maximumBandwidth = new MaximumBandwidth(new TlvHeader());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        maximumBandwidth = null;
+        header = null;
+        channelBuffer = null;
+        result = null;
+    }
+
+    /**
+     * Tests maximumBandwidth() setter method.
+     */
+    @Test
+    public void testSetMaximumBandwidth() throws Exception {
+        maximumBandwidth.setMaximumBandwidth(123456.00f);
+        assertThat(maximumBandwidth, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        header = new TlvHeader();
+        header.setTlvType(6);
+        header.setTlvLength(4);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        maximumBandwidth = new MaximumBandwidth(header);
+        maximumBandwidth.readFrom(channelBuffer);
+        assertThat(maximumBandwidth, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result = maximumBandwidth.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(maximumBandwidth.toString(), is(notNullValue()));
+    }
+}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java
new file mode 100644
index 0000000..4fd2594
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/MaximumReservableBandwidthTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for MaximumReservableBandwidth.
+ */
+public class MaximumReservableBandwidthTest {
+
+    private final byte[] packet = {0, 0, 0, 0};
+    private MaximumReservableBandwidth maximumReservableBandwidth;
+    private TlvHeader header;
+    private ChannelBuffer channelBuffer;
+    private byte[] result;
+
+    @Before
+    public void setUp() throws Exception {
+        maximumReservableBandwidth = new MaximumReservableBandwidth(new TlvHeader());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        maximumReservableBandwidth = null;
+        header = null;
+        channelBuffer = null;
+        result = null;
+    }
+
+    /**
+     * Tests maximumBandwidth() setter method.
+     */
+    @Test
+    public void testSetMaximumBandwidth() throws Exception {
+        maximumReservableBandwidth.setMaximumBandwidth(123456.78f);
+        assertThat(maximumReservableBandwidth, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        header = new TlvHeader();
+        header.setTlvType(6);
+        header.setTlvLength(4);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        maximumReservableBandwidth = new MaximumReservableBandwidth(header);
+        maximumReservableBandwidth.readFrom(channelBuffer);
+        assertThat(maximumReservableBandwidth, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result = maximumReservableBandwidth.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
+     */
+    @Test
+    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
+        result = maximumReservableBandwidth.tlvBodyAsBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(maximumReservableBandwidth.toString(), is(notNullValue()));
+    }
+}
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java
new file mode 100644
index 0000000..6ad0f46
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvFinderTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for SubTlvFinder.
+ */
+public class SubTlvFinderTest {
+    private final byte[] packet1 = {0, 0, 0, 1};
+    private TlvHeader tlvHeader;
+    private ChannelBuffer channelBuffer;
+    private TrafficEngineeringSubTlv tlv;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        channelBuffer = null;
+    }
+
+    @Test
+    public void testFindSubTlv() throws Exception {
+
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(SubTlvType.ADMINISTRATIVEGROUP.value());
+        AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(SubTlvType.TRAFFICENGINEERINGMETRIC.value());
+        TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(SubTlvType.MAXIMUMBANDWIDTH.value());
+        MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(SubTlvType.MAXIMUMRESERVABLEBANDWIDTH.value());
+        MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(SubTlvType.UNRESERVEDBANDWIDTH.value());
+        UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(SubTlvType.INTERFACEADDRESS.value());
+        InterfaceIpAddress ipInterfaceAddressTlv = new InterfaceIpAddress(tlvHeader);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet1);
+        tlv = SubTlvFinder.findSubTlv(tlvHeader, channelBuffer);
+        assertThat(tlv, is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java
new file mode 100644
index 0000000..f6f2ac8
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/SubTlvToBytesTest.java
@@ -0,0 +1,72 @@
+package org.onosproject.isis.io.isispacket.tlv.subtlv;
+
+import org.easymock.EasyMock;
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for SubTlvToBytes.
+ */
+public class SubTlvToBytesTest {
+    private TlvHeader tlvHeader;
+    private ChannelBuffer channelBuffer;
+    private List<Byte> tlv;
+
+    @Before
+    public void setUp() throws Exception {
+        tlvHeader = new TlvHeader();
+        channelBuffer = EasyMock.createMock(ChannelBuffer.class);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        tlvHeader = null;
+        channelBuffer = null;
+    }
+
+    @Test
+    public void testTlvToBytes() throws Exception {
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(9);
+        AdministrativeGroup administrativeGroup = new AdministrativeGroup(tlvHeader);
+        tlv = SubTlvToBytes.tlvToBytes(administrativeGroup);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(5);
+        TrafficEngineeringMetric trafficEngineeringMetric = new TrafficEngineeringMetric(tlvHeader);
+        tlv = SubTlvToBytes.tlvToBytes(trafficEngineeringMetric);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(6);
+        MaximumBandwidth maximumBandwidth = new MaximumBandwidth(tlvHeader);
+        tlv = SubTlvToBytes.tlvToBytes(maximumBandwidth);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(7);
+        MaximumReservableBandwidth maximumReservableBandwidth = new MaximumReservableBandwidth(tlvHeader);
+        tlv = SubTlvToBytes.tlvToBytes(maximumReservableBandwidth);
+        assertThat(tlv, is(notNullValue()));
+
+        tlvHeader = new TlvHeader();
+        tlvHeader.setTlvLength(4);
+        tlvHeader.setTlvType(8);
+        UnreservedBandwidth unreservedBandwidth = new UnreservedBandwidth(tlvHeader);
+        tlv = SubTlvToBytes.tlvToBytes(unreservedBandwidth);
+        assertThat(tlv, is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java
new file mode 100644
index 0000000..0d7ff0c
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/TrafficEngineeringMetricTest.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+/**
+ * Unit test class for TrafficEngineeringMetric.
+ */
+public class TrafficEngineeringMetricTest {
+
+    private final byte[] packet = {0, 0, 1, 1};
+    private TrafficEngineeringMetric trafficEngineeringMetric;
+    private TlvHeader header;
+    private byte[] result;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        trafficEngineeringMetric = new TrafficEngineeringMetric(new TlvHeader());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        trafficEngineeringMetric = null;
+        header = null;
+        result = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests trafficEngineeringMetric() setter method.
+     */
+    @Test
+    public void testSetTrafficEngineeringMetric() throws Exception {
+        trafficEngineeringMetric.setTrafficEngineeringMetric(123456789L);
+        assertThat(trafficEngineeringMetric, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        header = new TlvHeader();
+        header.setTlvLength(4);
+        header.setTlvType(5);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        trafficEngineeringMetric = new TrafficEngineeringMetric(header);
+        trafficEngineeringMetric.readFrom(channelBuffer);
+        assertThat(trafficEngineeringMetric, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result = trafficEngineeringMetric.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
+     */
+    @Test
+    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
+        result = trafficEngineeringMetric.tlvBodyAsBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(trafficEngineeringMetric.toString(), is(notNullValue()));
+    }
+}
\ No newline at end of file
diff --git a/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java
new file mode 100644
index 0000000..50c4c46
--- /dev/null
+++ b/protocols/isis/isisio/src/test/java/org/onosproject/isis/io/isispacket/tlv/subtlv/UnreservedBandwidthTest.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2016-present 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.isis.io.isispacket.tlv.subtlv;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onosproject.isis.io.isispacket.tlv.TlvHeader;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.notNullValue;
+
+/**
+ * Unit test class for UnreservedBandwidth.
+ */
+public class UnreservedBandwidthTest {
+
+    private final byte[] packet = {0, 0, 0, 1};
+    private UnreservedBandwidth unreservedBandwidth;
+    private TlvHeader header;
+    private byte[] result;
+    private ChannelBuffer channelBuffer;
+
+    @Before
+    public void setUp() throws Exception {
+        unreservedBandwidth = new UnreservedBandwidth(new TlvHeader());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        unreservedBandwidth = null;
+        header = null;
+        result = null;
+        channelBuffer = null;
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(unreservedBandwidth.toString(), is(notNullValue()));
+    }
+
+    /**
+     * Tests addUnReservedBandwidth() method.
+     */
+    @Test
+    public void testAddUnReservedBandwidth() throws Exception {
+        unreservedBandwidth.addUnReservedBandwidth(123456.78f);
+        assertThat(unreservedBandwidth, is(notNullValue()));
+    }
+
+    /**
+     * Tests readFrom() method.
+     */
+    @Test
+    public void testReadFrom() throws Exception {
+        header = new TlvHeader();
+        header.setTlvLength(4);
+        header.setTlvType(8);
+        channelBuffer = ChannelBuffers.copiedBuffer(packet);
+        unreservedBandwidth = new UnreservedBandwidth(header);
+        unreservedBandwidth.readFrom(channelBuffer);
+        unreservedBandwidth.readFrom(channelBuffer);
+        assertThat(unreservedBandwidth, is(notNullValue()));
+    }
+
+    /**
+     * Tests asBytes() method.
+     */
+    @Test
+    public void testAsBytes() throws Exception {
+        result = unreservedBandwidth.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests getLinkSubTypeTlvBodyAsByteArray() method.
+     */
+    @Test
+    public void testGetLinkSubTypeTlvBodyAsByteArray() throws Exception {
+        result = unreservedBandwidth.asBytes();
+        assertThat(result, is(notNullValue()));
+    }
+}
\ No newline at end of file