package org.mobicents.diameter.stack.parser; import java.io.IOException; import java.util.Date; import org.jdiameter.api.Avp; import org.jdiameter.api.AvpDataException; import org.jdiameter.api.AvpSet; import org.jdiameter.client.impl.parser.ElementParser; import org.junit.Assert; import org.junit.Test; public class AvpSetTest { private ElementParser elementParser = new ElementParser(); private static final int _CODE = 600; private static final long _VENDOR = 1000; @Test public void remove1Test() throws IOException, AvpDataException { AvpSet set = elementParser.decodeAvpSet(new byte[0], 1); set.addAvp(_CODE, new Date()); set.addAvp(_CODE, new Date()); set.addAvp(_CODE , new Date(), _VENDOR, true, true); Assert.assertEquals("Wrong set size", 3, set.size()); set.removeAvp(_CODE); Assert.assertEquals("Wrong set size", 1, set.size()); Avp avp = set.getAvpByIndex(0); Assert.assertEquals("Wrong avp code", _CODE, avp.getCode()); Assert.assertEquals("Wrong avp vendor", _VENDOR, avp.getVendorId()); //check again :) set.removeAvp(_CODE); Assert.assertEquals("Wrong set size", 1, set.size()); avp = set.getAvpByIndex(0); Assert.assertEquals("Wrong avp code", _CODE, avp.getCode()); Assert.assertEquals("Wrong avp vendor", _VENDOR, avp.getVendorId()); set.removeAvp(_CODE, _VENDOR); Assert.assertEquals("Wrong set size", 0, set.size()); } @Test public void remove2Test() throws IOException, AvpDataException { AvpSet set = elementParser.decodeAvpSet(new byte[0], 1); set.addAvp(_CODE, new Date()); set.addAvp(_CODE, new Date()); set.addAvp(_CODE , new Date(), _VENDOR, true, true); Assert.assertEquals("Wrong set size", 3, set.size()); set.removeAvp(_CODE, _VENDOR); Assert.assertEquals("Wrong set size", 2, set.size()); Avp avp = set.getAvpByIndex(0); Assert.assertEquals("Wrong avp code", _CODE, avp.getCode()); Assert.assertEquals("Wrong avp vendor", 0L, avp.getVendorId()); avp = set.getAvpByIndex(1); Assert.assertEquals("Wrong avp code", _CODE, avp.getCode()); Assert.assertEquals("Wrong avp vendor", 0L, avp.getVendorId()); set.removeAvp(_CODE); Assert.assertEquals("Wrong set size", 0, set.size()); } @Test(timeout = 500) public void decodeWithVendorIdZero() throws IOException, AvpDataException { byte avpCode = 123; byte vendorId = 1; byte[] avpSetBytes = new byte[] { 0, 0, 1, 3, 64, 0, 0, 12, 0, 0, 0, 3, 0, 0, 1, 41, 0, 0, 0, 20, 0, 0, 1, 42, 0, 0, 0, 12, 0, 0, 7, -47, 0, 0, 0, 1, 0, 0, 0, 26, 109, 111, 98, 105, 99, 101, 110, 116, 115, 45, 100, 105, 97, 109, 101, 116, 101, 114, 0, 0, 0, 0, 0, avpCode, -64, 0, 0, 15, 0, 0, 0, vendorId, 88, 88, 88, 0 }; AvpSet avpVendor1 = elementParser.decodeAvpSet(avpSetBytes); Assert.assertNotNull(avpVendor1.getAvp(123, 1)); vendorId = 0; avpSetBytes = new byte[] { 0, 0, 1, 3, 64, 0, 0, 12, 0, 0, 0, 3, 0, 0, 1, 41, 0, 0, 0, 20, 0, 0, 1, 42, 0, 0, 0, 12, 0, 0, 7, -47, 0, 0, 0, 1, 0, 0, 0, 26, 109, 111, 98, 105, 99, 101, 110, 116, 115, 45, 100, 105, 97, 109, 101, 116, 101, 114, 0, 0, 0, 0, 0, avpCode, -64, 0, 0, 15, 0, 0, 0, vendorId, 88, 88, 88, 0 }; AvpSet avpVendor0 = elementParser.decodeAvpSet(avpSetBytes); Assert.assertNotNull(avpVendor0.getAvp(123, 0)); } }