package de.uniluebeck.itm.wsn.drivers.core; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsNot.not; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import org.junit.Test; public class MacAddressTest { private static final String MAC_DEC_STRING = "74565"; private static final String MAC_HEX_STRING = "0x12345"; private static final String MAC_BIN_STRING = "0b10010001101000101"; private static final long MAC_LONG = 0x12345; private static final byte[] MAC_BYTES = new byte[]{0, 0, 0, 0, 0, 1, 35, 69}; private static final byte[] MAC_BYTES_16_BIT = new byte[]{0, 0, 0, 0, 0, 0, 35, 69}; private static final byte[] MAC_BYTES_OTHER = new byte[]{0, 1, 0, 0, 0, 1, 35, 70}; @Test public void fromStringToString() { assertEquals(MAC_DEC_STRING, new MacAddress(MAC_DEC_STRING).toDecString()); assertEquals(MAC_DEC_STRING, new MacAddress(MAC_HEX_STRING).toDecString()); assertEquals(MAC_DEC_STRING, new MacAddress(MAC_BIN_STRING).toDecString()); assertEquals(MAC_HEX_STRING, new MacAddress(MAC_DEC_STRING).toHexString()); assertEquals(MAC_HEX_STRING, new MacAddress(MAC_HEX_STRING).toHexString()); assertEquals(MAC_HEX_STRING, new MacAddress(MAC_BIN_STRING).toHexString()); assertEquals(MAC_BIN_STRING, new MacAddress(MAC_DEC_STRING).toBinString()); assertEquals(MAC_BIN_STRING, new MacAddress(MAC_HEX_STRING).toBinString()); assertEquals(MAC_BIN_STRING, new MacAddress(MAC_BIN_STRING).toBinString()); } @Test public void fromStringToLong() { assertEquals(MAC_LONG, new MacAddress(MAC_DEC_STRING).toLong()); assertEquals(MAC_LONG, new MacAddress(MAC_HEX_STRING).toLong()); assertEquals(MAC_LONG, new MacAddress(MAC_BIN_STRING).toLong()); } @Test public void fromStringToByteArray() { assertArrayEquals(MAC_BYTES, new MacAddress(MAC_DEC_STRING).toByteArray()); assertArrayEquals(MAC_BYTES, new MacAddress(MAC_HEX_STRING).toByteArray()); assertArrayEquals(MAC_BYTES, new MacAddress(MAC_BIN_STRING).toByteArray()); } @Test public void fromLongToLong() { assertEquals(MAC_LONG, new MacAddress(MAC_LONG).toLong()); } @Test public void fromLongToByteArray() { assertArrayEquals(MAC_BYTES, new MacAddress(MAC_LONG).toByteArray()); } @Test public void fromLongToString() { assertEquals(MAC_DEC_STRING, new MacAddress(MAC_LONG).toDecString()); assertEquals(MAC_HEX_STRING, new MacAddress(MAC_LONG).toHexString()); assertEquals(MAC_BIN_STRING, new MacAddress(MAC_LONG).toBinString()); } @Test public void fromByteArrayToByteArray() { assertArrayEquals(MAC_BYTES, new MacAddress(MAC_BYTES).toByteArray()); } @Test public void fromByteArrayToLong() { assertEquals(MAC_LONG, new MacAddress(MAC_BYTES).toLong()); } @Test public void fromByteArrayToString() { assertEquals(MAC_DEC_STRING, new MacAddress(MAC_BYTES).toDecString()); assertEquals(MAC_HEX_STRING, new MacAddress(MAC_BYTES).toHexString()); assertEquals(MAC_BIN_STRING, new MacAddress(MAC_BYTES).toBinString()); } @Test public void equalsTest() { assertTrue(new MacAddress(MAC_BYTES).equals(new MacAddress(MAC_BYTES))); assertTrue(new MacAddress(MAC_HEX_STRING).equals(new MacAddress(MAC_BYTES))); assertTrue(new MacAddress(MAC_DEC_STRING).equals(new MacAddress(MAC_BYTES))); assertTrue(new MacAddress(MAC_BIN_STRING).equals(new MacAddress(MAC_BYTES))); assertFalse(new MacAddress(MAC_BYTES).equals(new MacAddress(MAC_BYTES_OTHER))); assertFalse(new MacAddress(MAC_HEX_STRING).equals(new MacAddress(MAC_BYTES_OTHER))); assertFalse(new MacAddress(MAC_DEC_STRING).equals(new MacAddress(MAC_BYTES_OTHER))); assertFalse(new MacAddress(MAC_BIN_STRING).equals(new MacAddress(MAC_BYTES_OTHER))); } @Test public void hashCodeTest() { assertEquals(new MacAddress(MAC_BYTES).hashCode(), new MacAddress(MAC_BYTES).hashCode()); assertEquals(new MacAddress(MAC_HEX_STRING).hashCode(), new MacAddress(MAC_BYTES).hashCode()); assertEquals(new MacAddress(MAC_DEC_STRING).hashCode(), new MacAddress(MAC_BYTES).hashCode()); assertEquals(new MacAddress(MAC_BIN_STRING).hashCode(), new MacAddress(MAC_BYTES).hashCode()); assertThat(new MacAddress(MAC_BYTES).hashCode(), not(equalTo(new MacAddress(MAC_BYTES_OTHER).hashCode()))); assertThat(new MacAddress(MAC_HEX_STRING).hashCode(), not(equalTo(new MacAddress(MAC_BYTES_OTHER).hashCode()))); assertThat(new MacAddress(MAC_DEC_STRING).hashCode(), not(equalTo(new MacAddress(MAC_BYTES_OTHER).hashCode()))); assertThat(new MacAddress(MAC_BIN_STRING).hashCode(), not(equalTo(new MacAddress(MAC_BYTES_OTHER).hashCode()))); } @Test public void to16BitMacAddressTest() { assertEquals(new MacAddress(MAC_BYTES_16_BIT), new MacAddress(MAC_BYTES).to16BitMacAddress()); assertEquals(new MacAddress(MAC_BYTES_16_BIT), new MacAddress(MAC_HEX_STRING).to16BitMacAddress()); assertEquals(new MacAddress(MAC_BYTES_16_BIT), new MacAddress(MAC_DEC_STRING).to16BitMacAddress()); assertEquals(new MacAddress(MAC_BYTES_16_BIT), new MacAddress(MAC_BIN_STRING).to16BitMacAddress()); } }