Adding test for LongBandwidth

Change-Id: I4e2833eeb4204510c63340a5d23e19768a5d343e
diff --git a/utils/misc/src/test/java/org/onlab/util/LongBandwidthTest.java b/utils/misc/src/test/java/org/onlab/util/LongBandwidthTest.java
new file mode 100644
index 0000000..f44788b
--- /dev/null
+++ b/utils/misc/src/test/java/org/onlab/util/LongBandwidthTest.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright 2015-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.onlab.util;
+
+import org.junit.Test;
+
+import static org.hamcrest.Matchers.greaterThan;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.lessThan;
+import static org.junit.Assert.*;
+
+/**
+ * Unit tests for LongBandwidth.
+ */
+public class LongBandwidthTest {
+    private final long billion = 1000000000;
+    private final long one = 1;
+
+    //These are LongBandwidth objects because if a Bandwidth object is passed a
+    //long parameter it becomes a LongBandwidth object
+    Bandwidth notLongSmall = Bandwidth.kbps(1.0);
+    private final Bandwidth notLongBig = Bandwidth.kbps(1000.0);
+    private final Bandwidth big = Bandwidth.kbps(billion);
+    private final Bandwidth small = Bandwidth.kbps(one);
+
+    /**
+     * Tests the getter method of LongBandwidths.
+     */
+    @Test
+    public void testBps() {
+        Bandwidth expected = Bandwidth.bps(one);
+
+        assertEquals(one, expected.bps(), 0.0);
+    }
+
+    /**
+     * Tests add operation of two LongBandwidths and two Bandwidths.
+     */
+    @Test
+    public void testAdd() {
+        final long add = billion + one;
+        Bandwidth expected = Bandwidth.kbps(add);
+
+        assertThat(big.add(small), is(expected));
+
+        final double notLongAdd = 1001.0;
+        Bandwidth notLongExpected = Bandwidth.kbps(notLongAdd);
+
+        assertThat(notLongSmall.add(notLongBig), is(notLongExpected));
+    }
+
+    /**
+     * Tests subtract operation of two LongBandwidths and two Bandwidths.
+     */
+    @Test
+    public void testSubtract() {
+        final long sub = billion - one;
+        Bandwidth expected = Bandwidth.kbps(sub);
+
+        assertThat(big.subtract(small), is(expected));
+
+        final double notLongSubtract = 999.0;
+        Bandwidth notLongExpected = Bandwidth.kbps(notLongSubtract);
+
+        assertThat(notLongBig.subtract(notLongSmall), is(notLongExpected));
+    }
+
+
+    /**
+     * Tests if the first object is less than the second object, and then it
+     * tests if the compareTo function works correctly if comparing a smaller
+     * object to a larger one, and vice versa.
+     * Also tests the same thing but with Bandwidth objects.
+     */
+    @Test
+    public void testLessThan() {
+
+        assertThat(small, is(lessThan(big)));
+        assertThat(small.compareTo(big), is(-1));
+
+        assertThat(big, is(greaterThan(small)));
+        assertThat(big.compareTo(small), is(1));
+
+        assertThat(notLongSmall, is(lessThan(notLongBig)));
+        assertThat(notLongSmall.compareTo(notLongBig), is(-1));
+
+        assertThat(notLongBig, is(greaterThan(notLongSmall)));
+        assertThat(notLongBig.compareTo(notLongSmall), is(1));
+    }
+
+    /**
+     * Tests the equals function between itself, another equivalent Bandwidth
+     * object, a nonequivalent Bandwidth object, and an int.
+     */
+    @Test
+    public void testEquals() {
+        Bandwidth expected = Bandwidth.kbps(one);
+        assertFalse(small.equals(big));
+        assertTrue(small.equals(expected));
+        assertTrue(small.equals(small));
+        assertFalse(small.equals(1000));
+    }
+
+    /**
+     * Tests the hashcode function of a LongBandwidth.
+     */
+    @Test
+    public void testHashCode() {
+        Long expected = (one * 1000);
+        assertEquals(small.hashCode(), expected.hashCode());
+    }
+
+    /**
+     * Tests the toString function of a LongBandwidth.
+     */
+    @Test
+    public void testToString() {
+        String expected = "1000";
+        assertEquals(small.toString(), expected);
+    }
+}