+
+ @Test
+ public void testMultiprotocolCapabilitiesUtil() throws BGPParsingException {
+ final byte[] bytes = new byte[] {0, 1, 0, 1};
+ final ByteBuf bytesBuf = Unpooled.copiedBuffer(bytes);
+ final BgpTableType parsedAfiSafi = MultiprotocolCapabilitiesUtil.parseMPAfiSafi(bytesBuf, afiReg,
+ safiReg).get();
+ assertEquals(Ipv4AddressFamily.VALUE, parsedAfiSafi.getAfi());
+ assertEquals(UnicastSubsequentAddressFamily.VALUE, parsedAfiSafi.getSafi());
+
+ final ByteBuf serializedAfiSafi = Unpooled.buffer(4);
+ MultiprotocolCapabilitiesUtil.serializeMPAfiSafi(afiReg, safiReg, Ipv4AddressFamily.VALUE,
+ UnicastSubsequentAddressFamily.VALUE, serializedAfiSafi);
+ assertArrayEquals(bytes, serializedAfiSafi.array());
+ }
+
+ @Test
+ public void testUnsupportedAfi() {
+ final byte[] bytes = new byte[] {0, 2, 0, 1};
+ final ByteBuf bytesBuf = Unpooled.copiedBuffer(bytes);
+ final Optional<BgpTableType> parsedAfiSafi = MultiprotocolCapabilitiesUtil.parseMPAfiSafi(bytesBuf, afiReg,
+ safiReg);
+ assertFalse(parsedAfiSafi.isPresent());
+ }
+
+ @Test
+ public void testUnsupportedSafi() {
+ final byte[] bytes = new byte[] {0, 1, 0, 3};
+ final ByteBuf bytesBuf = Unpooled.copiedBuffer(bytes);
+ final Optional<BgpTableType> parsedAfiSafi = MultiprotocolCapabilitiesUtil.parseMPAfiSafi(bytesBuf, afiReg,
+ safiReg);
+ assertFalse(parsedAfiSafi.isPresent());
+ }
+
+ @Test(expected = ParameterLengthOverflowException.class)
+ public void testFormatParameterOverflow() throws ParameterLengthOverflowException {
+ ParameterUtil.formatParameter(2, Unpooled.buffer().writeZero(256), Unpooled.buffer());
+ }
+
+ @Test
+ public void testFormatParameter() throws ParameterLengthOverflowException {
+ final ByteBuf output = Unpooled.buffer();
+ ParameterUtil.formatParameter(2, Unpooled.buffer().writeZero(255), output);
+
+ assertEquals(257, output.readableBytes());
+ assertEquals(2, output.readUnsignedByte());
+ assertEquals(255, output.readUnsignedByte());
+ }
+
+ @Test
+ public void testFormatExtendedParameter() {
+ final ByteBuf output = Unpooled.buffer();
+ ParameterUtil.formatExtendedParameter(2, Unpooled.buffer().writeZero(256), output);
+
+ assertEquals(259, output.readableBytes());
+ assertEquals(2, output.readUnsignedByte());
+ assertEquals(256, output.readUnsignedShort());
+ }