ONOS-2739 - OSPF Basic Packet Structures , which includes encoding and decoding

Change-Id: I4bf4b7eb26a0e2b5006b41b24d67c7f21450b11b
diff --git a/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java
new file mode 100644
index 0000000..2876deb
--- /dev/null
+++ b/protocols/ospf/protocol/src/test/java/org/onosproject/ospf/protocol/lsa/LsaHeaderTest.java
@@ -0,0 +1,308 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.ospf.protocol.lsa;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.onlab.packet.Ip4Address;
+import org.onosproject.ospf.controller.OspfLsaType;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.*;
+
+/**
+ * Unit test class for LsaHeader.
+ */
+public class LsaHeaderTest {
+
+    private LsaHeader lsaHeader;
+    private int result;
+    private Ip4Address result1;
+    private long result2;
+    private OspfLsaType ospflsaType;
+    private LsaHeader header;
+    private byte[] result3;
+    private LsaHeader lsaHeader1;
+    private String result4;
+
+    @Before
+    public void setUp() throws Exception {
+        lsaHeader = new LsaHeader();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        lsaHeader = null;
+        result1 = null;
+        ospflsaType = null;
+        header = null;
+        result3 = null;
+        lsaHeader1 = null;
+    }
+
+    /**
+     * Tests equals() method.
+     */
+    @Test
+    public void testEquals() throws Exception {
+        assertThat(lsaHeader.equals(new LsaHeader()), is(true));
+    }
+
+    /**
+     * Tests hashCode() method.
+     */
+    @Test
+    public void testHashCode() throws Exception {
+        result = lsaHeader.hashCode();
+        assertThat(result, is(notNullValue()));
+    }
+
+    /**
+     * Tests age() getter method.
+     */
+    @Test
+    public void testGetAge() throws Exception {
+        lsaHeader.setAge(10);
+        result = lsaHeader.age();
+        assertThat(result, is(10));
+    }
+
+    /**
+     * Tests age() setter method.
+     */
+    @Test
+    public void testSetAge() throws Exception {
+        lsaHeader.setAge(10);
+        result = lsaHeader.age();
+        assertThat(result, is(10));
+    }
+
+    /**
+     * Tests options() getter method.
+     */
+    @Test
+    public void testGetOptions() throws Exception {
+        lsaHeader.setOptions(2);
+        result = lsaHeader.options();
+        assertThat(result, is(2));
+    }
+
+    /**
+     * Tests options() setter method.
+     */
+    @Test
+    public void testSetOptions() throws Exception {
+        lsaHeader.setOptions(2);
+        result = lsaHeader.options();
+        assertThat(result, is(2));
+    }
+
+    /**
+     * Tests lsType() getter method.
+     */
+    @Test
+    public void testGetLsType() throws Exception {
+        lsaHeader.setLsType(1);
+        result = lsaHeader.lsType();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests lsType() setter method.
+     */
+    @Test
+    public void testSetLsType() throws Exception {
+        lsaHeader.setLsType(1);
+        result = lsaHeader.lsType();
+        assertThat(result, is(1));
+    }
+
+    /**
+     * Tests linkStateId() getter method.
+     */
+    @Test
+    public void testGetLinkStateId() throws Exception {
+        lsaHeader.setLinkStateId("10.226.165.164");
+        result4 = lsaHeader.linkStateId();
+        assertThat(result4, is("10.226.165.164"));
+    }
+
+    /**
+     * Tests linkStateId() setter method.
+     */
+    @Test
+    public void testSetLinkStateId() throws Exception {
+        lsaHeader.setLinkStateId("10.226.165.164");
+        result4 = lsaHeader.linkStateId();
+        assertThat(result4, is("10.226.165.164"));
+    }
+
+    /**
+     * Tests advertisingRouter() setter method.
+     */
+    @Test
+    public void testGetAdvertisingRouter() throws Exception {
+        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.164"));
+        result1 = lsaHeader.advertisingRouter();
+        assertThat(result1, is(Ip4Address.valueOf("10.226.165.164")));
+    }
+
+    /**
+     * Tests advertisingRouter() setter method.
+     */
+    @Test
+    public void testSetAdvertisingRouter() throws Exception {
+        lsaHeader.setAdvertisingRouter(Ip4Address.valueOf("10.226.165.164"));
+        result1 = lsaHeader.advertisingRouter();
+        assertThat(result1, is(Ip4Address.valueOf("10.226.165.164")));
+    }
+
+    /**
+     * Tests lsSequenceNo() getter method.
+     */
+    @Test
+    public void testGetLsSequenceNo() throws Exception {
+        lsaHeader.setLsSequenceNo(222);
+        result2 = lsaHeader.lsSequenceNo();
+        assertThat(result2, is(222L));
+    }
+
+    /**
+     * Tests lsSequenceNo() setter method.
+     */
+    @Test
+    public void testSetLsSequenceNo() throws Exception {
+        lsaHeader.setLsSequenceNo(222);
+        result2 = lsaHeader.lsSequenceNo();
+        assertThat(result2, is(222L));
+    }
+
+    /**
+     * Tests lsCheckSum() getter method.
+     */
+    @Test
+    public void testGetLsChecksum() throws Exception {
+        lsaHeader.setLsCheckSum(2);
+        result = lsaHeader.lsCheckSum();
+        assertThat(result, is(2));
+    }
+
+    /**
+     * Tests lsCheckSum() setter method.
+     */
+    @Test
+    public void testSetLsChecksum() throws Exception {
+        lsaHeader.setLsCheckSum(2);
+        result = lsaHeader.lsCheckSum();
+        assertThat(result, is(2));
+    }
+
+    /**
+     * Tests lsPacketLen() getter method.
+     */
+    @Test
+    public void testGetLsPacketLen() throws Exception {
+        lsaHeader.setLsPacketLen(48);
+        result = lsaHeader.lsPacketLen();
+        assertThat(result, is(48));
+    }
+
+    /**
+     * Tests lsPacketLen() getter method.
+     */
+    @Test
+    public void testSetLsPacketLen() throws Exception {
+        lsaHeader.setLsPacketLen(48);
+        result = lsaHeader.lsPacketLen();
+        assertThat(result, is(48));
+    }
+
+    /**
+     * Tests getOspfLsaType() getter method.
+     */
+    @Test
+    public void testGetOspfLsaType() throws Exception {
+        lsaHeader.setLsType(1);
+        ospflsaType = lsaHeader.getOspfLsaType();
+        assertThat(ospflsaType, is(notNullValue()));
+        assertThat(ospflsaType, is(OspfLsaType.ROUTER));
+        lsaHeader.setLsType(2);
+        ospflsaType = lsaHeader.getOspfLsaType();
+        assertThat(ospflsaType, is(notNullValue()));
+        assertThat(ospflsaType, is(OspfLsaType.NETWORK));
+        lsaHeader.setLsType(3);
+        ospflsaType = lsaHeader.getOspfLsaType();
+        assertThat(ospflsaType, is(notNullValue()));
+        assertThat(ospflsaType, is(OspfLsaType.SUMMARY));
+        lsaHeader.setLsType(4);
+        ospflsaType = lsaHeader.getOspfLsaType();
+        assertThat(ospflsaType, is(notNullValue()));
+        assertThat(ospflsaType, is(OspfLsaType.ASBR_SUMMARY));
+        lsaHeader.setLsType(5);
+        ospflsaType = lsaHeader.getOspfLsaType();
+        assertThat(ospflsaType, is(notNullValue()));
+        assertThat(ospflsaType, is(OspfLsaType.EXTERNAL_LSA));
+        lsaHeader.setLsType(6);
+        ospflsaType = lsaHeader.getOspfLsaType();
+        assertThat(ospflsaType, is(notNullValue()));
+        assertThat(ospflsaType, is(OspfLsaType.UNDEFINED));
+    }
+
+    /**
+     * Tests lsaHeader() getter method.
+     */
+    @Test
+    public void testGetLsaHeader() throws Exception {
+        header = (LsaHeader) lsaHeader.lsaHeader();
+        assertThat(header, instanceOf(LsaHeader.class));
+    }
+
+    /**
+     * Tests getLsaHeaderAsByteArray() method.
+     */
+    @Test
+    public void testGetLsaHeaderAsByteArray() throws Exception {
+        result3 = lsaHeader.getLsaHeaderAsByteArray();
+        assertThat(result3, is(notNullValue()));
+    }
+
+    /**
+     * Tests to string method.
+     */
+    @Test
+    public void testToString() throws Exception {
+        assertThat(lsaHeader.toString(), is(notNullValue()));
+    }
+
+    /**
+     * Tests populateHeader() method.
+     */
+    @Test
+    public void testPopulateHeader() throws Exception {
+        lsaHeader1 = new LsaHeader();
+        lsaHeader1.setLsPacketLen(10);
+        lsaHeader1.setAdvertisingRouter(Ip4Address.valueOf("1.1.1.1"));
+        lsaHeader1.setOptions(2);
+        lsaHeader1.setAge(20);
+        lsaHeader1.setLsType(3);
+        lsaHeader1.setLinkStateId("2.2.2.2");
+        lsaHeader1.setLsCheckSum(1234);
+        lsaHeader1.setLsSequenceNo(456789);
+        lsaHeader.populateHeader(lsaHeader1);
+        assertThat(lsaHeader1, is(notNullValue()));
+    }
+}
\ No newline at end of file