/*** * check if mask is valid and netmasked formated and return true if does * * @param netmask in valid format , please verify first with @see {@link MaskValidator#isValidNetmaskFormat(String)} * @return true if the netmask is in IPv4 format and valid, false otherwise */ public boolean isNetmaskValid(String netmask) { long addressInBits = ipAddressConverter.convertIpAddressToLong(netmask); long mask = 1; boolean isFirstOneFound = false; for (int i = 0; i < 32; i++) { if (isFirstOneFound && (mask & addressInBits) != 1) { return false; } if ((mask & addressInBits) == 1) { isFirstOneFound = true; } addressInBits >>= 1; } return true; }
protected String convertStringToIpv4Address(String subnetB) { return getIpAddressConverter().convertPrefixToNetmask(subnetB); }
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); }
/*** * check if CIDR represent valid network add * * @param cidr * in correct format, please use the following function first: @see * {@link CidrValidator#isCidrFormatValid(String)} * @return true if valid CIDR ,false otherwise */ public boolean isCidrNetworkAddressValid(String cidr) { String[] temp = cidr.split("/"); long ipAsInteger = ipAddressConverter.convertIpAddressToLong(temp[0]); int mask = Integer.parseInt(temp[1]); return isNetworkAddress(ipAsInteger, mask); }
@Test public void checkDifferentSubnetStringAndIntegerRepresentation() { when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true); when(mockedMaskValidator.isPrefixValid(DIFFERENT_PREFIX)).thenReturn(true); when(mockIpAddressConverter.convertPrefixToNetmask(DIFFERENT_PREFIX)).thenReturn(INVALID_NETMASK_FORMAT); assertFalse(underTest.equalSubnet(VALID_NETMASK_FORMAT, DIFFERENT_PREFIX)); }
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); }
@Test public void checkDifferentSubnetIntegerAndStringRepresentation() { when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true); when(mockedMaskValidator.isPrefixValid(DIFFERENT_PREFIX)).thenReturn(true); when(mockIpAddressConverter.convertPrefixToNetmask(DIFFERENT_PREFIX)).thenReturn(INVALID_NETMASK_FORMAT); assertFalse(underTest.equalSubnet(DIFFERENT_PREFIX, VALID_NETMASK_FORMAT)); } }
@Test public void checkEqualSubnetIntegerAndStringRepresentation() { when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true); when(mockedMaskValidator.isPrefixValid(VALID_PREFIX)).thenReturn(true); when(mockIpAddressConverter.convertPrefixToNetmask(VALID_PREFIX)).thenReturn(VALID_NETMASK_FORMAT); assertTrue(underTest.equalSubnet(VALID_PREFIX, VALID_NETMASK_FORMAT)); }
@Test public void checkEqualSubnetStringAndIntegerRepresentation() { when(mockedMaskValidator.isValidNetmaskFormat(VALID_NETMASK_FORMAT)).thenReturn(true); when(mockedMaskValidator.isPrefixValid(VALID_PREFIX)).thenReturn(true); when(mockIpAddressConverter.convertPrefixToNetmask(VALID_PREFIX)).thenReturn(VALID_NETMASK_FORMAT); assertTrue(underTest.equalSubnet(VALID_NETMASK_FORMAT, VALID_PREFIX)); }
@Test public void checkInvalidNullStringIpv4AddressConversion() { assertThrows(NumberFormatException.class, () -> underTest.convertPrefixToNetmask(null)); }
@Test public void checkInvalidStringIpv4AddressConversion() { assertThrows(NumberFormatException.class, () -> underTest.convertPrefixToNetmask("a'")); }