package org.ovirt.engine.core.utils; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.util.Collection; import org.apache.commons.lang.math.LongRange; import org.junit.Test; public class MacAddressRangeUtilsTest { @Test public void testMacToString() throws Exception { assertThat(MacAddressRangeUtils.macToString(112910729216L), is("00:1a:4a:01:00:00")); } @Test public void testMacToLong() throws Exception { assertThat(MacAddressRangeUtils.macToLong("00:1a:4a:01:00:00"), is(112910729216L)); } protected void testRange(String start, String end, long expectedStart, long expectedEnd) { final Collection<LongRange> ranges = MacAddressRangeUtils.parseRangeString(start + '-' + end); final LongRange firstRange = ranges.iterator().next(); assertThat(firstRange.getMinimumLong(), equalTo(expectedStart)); assertThat(firstRange.getMaximumLong(), equalTo(expectedEnd)); } @Test public void testParseValidRange() { String start = "00:1a:4a:01:00:00"; String end = "00:1a:4a:FF:FF:FF"; final long expectedStart = MacAddressRangeUtils.macToLong(start); final long expectedEnd = MacAddressRangeUtils.macToLong(end); testRange(start, end, expectedStart, expectedEnd); } @Test public void testParseHugeRange() { String start = "00:1a:4a:01:00:00"; String end = "00:FF:FF:FF:FF:FF"; final long expectedStart = MacAddressRangeUtils.macToLong(start); final long expectedEnd = MacAddressRangeUtils.macToLong(start) + Integer.MAX_VALUE - 1; testRange(start, end, expectedStart, expectedEnd); } @Test public void testParseClippedEndRange() { String start = "00:FF:FF:FF:FF:FF"; String end = "01:1a:4a:01:00:00"; final long expectedStartEnd = MacAddressRangeUtils.macToLong(start); testRange(start, end, expectedStartEnd, expectedStartEnd); } @Test public void testParseClippedStartRange() { String start = "01:FF:FF:FF:FF:FF"; String end = "02:00:00:00:00:00"; final long expectedStartEnd = MacAddressRangeUtils.macToLong(end); testRange(start, end, expectedStartEnd, expectedStartEnd); } @Test public void testParseWholeRangeMulticast() { String start = "01:FF:FF:FF:FF:00"; String end = "01:FF:FF:FF:FF:00"; final Collection<LongRange> ranges = MacAddressRangeUtils.parseRangeString(start + '-' + end); assertThat(ranges.isEmpty(), is(true)); } }