package org.ovirt.engine.core.common.utils;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertEquals;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ErrorCollector;
public class IPv4AddressConverterTest {
private IPAddressConverter underTest = IPv4AddressConverter.getInstance();
@Rule
public ErrorCollector errorCollector = new ErrorCollector();
@Test
public void checkIpAddressConversionToLong() {
runIpAddressConversionToLong("255.255.255.255", 0xffffffffL);
runIpAddressConversionToLong("1.1.1.1", 0x01010101);
runIpAddressConversionToLong("1.255.4.255", 0x01ff04ff);
runIpAddressConversionToLong("0.128.0.7", 0x00800007);
runIpAddressConversionToLong("1.2.3.4", 0x01020304);
runIpAddressConversionToLong("0.0.0.1", 0x00000001);
runIpAddressConversionToLong("1.1.1.1", 0x01010101);
}
private void runIpAddressConversionToLong(String Ipv4Address, long expectedIpAddressAsLong){
String errorMessage =
String.format("Fail to convert IPv4 Address: %s to long.", Ipv4Address);
long actualIpAddressAsLongResult = underTest.convertIpAddressToLong(Ipv4Address);
runTest(errorMessage, expectedIpAddressAsLong, actualIpAddressAsLongResult);
}
private <T> void runTest(String errorMessage, T expected, T actual) {
errorCollector.checkThat(errorMessage, expected, equalTo(actual));
}
@Test
public void checkConvertPrefixToIpv4Address(){
runConvertPrefixToIpv4Address("255.255.255.255", "32");
runConvertPrefixToIpv4Address("0.0.0.0", "0");
runConvertPrefixToIpv4Address("255.255.255.254", "31");
runConvertPrefixToIpv4Address("255.254.0.0", "15");
runConvertPrefixToIpv4Address("254.0.0.0", "7");
}
private void runConvertPrefixToIpv4Address(String expectedIpv4Address, String prefix){
String errorMessage =
String.format("Fail to convert prefix %s to IPv4 address: %s.", prefix, expectedIpv4Address);
String actualIpv4Address = underTest.convertPrefixToNetmask(prefix);
runTest(errorMessage, expectedIpv4Address, actualIpv4Address);
}
@Test(expected = NumberFormatException.class)
public void checkInvalidNullStringIpv4AddressConversion() {
assertEquals("", underTest.convertPrefixToNetmask(null));
}
@Test(expected = NumberFormatException.class)
public void checkInvalidStringIpv4AddressConversion() {
assertEquals("", underTest.convertPrefixToNetmask("a'"));
}
@Test
public void checkConvertPrefixWithTrailingSlashToIpv4Address(){
runConvertPrefixToIpv4Address("255.255.0.0", "/16");
}
}