package org.mobicents.mgcp.stack.test.parser;
import jain.protocol.ip.mgcp.message.parms.Bandwidth;
import jain.protocol.ip.mgcp.message.parms.BearerInformation;
import jain.protocol.ip.mgcp.message.parms.CapabilityValue;
import jain.protocol.ip.mgcp.message.parms.CompressionAlgorithm;
import jain.protocol.ip.mgcp.message.parms.ConnectionIdentifier;
import jain.protocol.ip.mgcp.message.parms.ConnectionMode;
import jain.protocol.ip.mgcp.message.parms.ConnectionParm;
import jain.protocol.ip.mgcp.message.parms.DigitMap;
import jain.protocol.ip.mgcp.message.parms.EchoCancellation;
import jain.protocol.ip.mgcp.message.parms.EmbeddedRequest;
import jain.protocol.ip.mgcp.message.parms.EncryptionMethod;
import jain.protocol.ip.mgcp.message.parms.EndpointIdentifier;
import jain.protocol.ip.mgcp.message.parms.EventName;
import jain.protocol.ip.mgcp.message.parms.GainControl;
import jain.protocol.ip.mgcp.message.parms.InfoCode;
import jain.protocol.ip.mgcp.message.parms.LocalOptionValue;
import jain.protocol.ip.mgcp.message.parms.NotifiedEntity;
import jain.protocol.ip.mgcp.message.parms.PacketizationPeriod;
import jain.protocol.ip.mgcp.message.parms.ReasonCode;
import jain.protocol.ip.mgcp.message.parms.RegularConnectionParm;
import jain.protocol.ip.mgcp.message.parms.RequestedAction;
import jain.protocol.ip.mgcp.message.parms.RequestedEvent;
import jain.protocol.ip.mgcp.message.parms.ResourceReservation;
import jain.protocol.ip.mgcp.message.parms.RestartMethod;
import jain.protocol.ip.mgcp.message.parms.SilenceSuppression;
import jain.protocol.ip.mgcp.message.parms.TypeOfNetwork;
import jain.protocol.ip.mgcp.message.parms.TypeOfService;
import jain.protocol.ip.mgcp.pkg.MgcpEvent;
import jain.protocol.ip.mgcp.pkg.PackageName;
import java.text.ParseException;
import org.mobicents.jain.protocol.ip.mgcp.pkg.AUMgcpEvent;
import org.mobicents.jain.protocol.ip.mgcp.pkg.AUPackage;
import org.mobicents.mgcp.stack.parser.Utils;
import org.mobicents.mgcp.stack.parser.UtilsFactory;
import org.mobicents.mgcp.stack.test.TestHarness;
public class ParserTest extends TestHarness {
Utils parser = null;
UtilsFactory factory = null;
public ParserTest() {
super("ParserTest");
}
@Override
public void setUp() {
factory = new UtilsFactory(2);
parser = factory.allocate();
}
@Override
public void tearDown() {
}
public void testDecodeEncodeCapabilityList() throws ParseException {
String capability = "a:PCMU;G729,p:10-100,e:on,s:off,v:L;S,m:sendonly;recvonly;sendrecv;inactive;netwloop;netwtest";
CapabilityValue[] capabilities = parser.decodeCapabilityList(capability);
assertNotNull(capabilities);
assertEquals(6, capabilities.length);
String encodedCapability = parser.encodeCapabilityList(capabilities);
assertEquals(capability, encodedCapability);
// Test 2
// capability = "a:PCMU;G728, p:10-100, e:on, s:off, t:1, v:L, m:sendonly;recvonly;sendrecv;inactive, a:G729, p:30-90, e:on, s:on, t:1, v:L, m:sendonly;recvonly;sendrecv;inactive;confrnce";
// capabilities = parser.decodeCapabilityList(capability);
}
public void testDecodeEncodeInfoCodeList() throws ParseException {
String requestedInfo = "R,D,S,X,N,I,T,O,ES";
InfoCode[] infoCodeList = parser.decodeInfoCodeList(requestedInfo);
assertNotNull(infoCodeList);
assertEquals(9, infoCodeList.length);
String encodedInfoCodeList = parser.encodeInfoCodeList(infoCodeList);
assertEquals(requestedInfo, encodedInfoCodeList);
}
public void testDecodeConnectionMode() {
String connectionMode = "conttest";
ConnectionMode cMode = parser.decodeConnectionMode(connectionMode);
assertNotNull(cMode);
assertEquals(connectionMode, cMode.toString());
}
public void testDecodeEncodeBearerInformation() throws ParseException {
String text = "e:mu";
BearerInformation bearerInformation = parser.decodeBearerInformation(text);
assertNotNull(bearerInformation);
assertEquals("mu", bearerInformation.toString());
String encodedText = parser.encodeBearerInformation(bearerInformation);
assertEquals(text, encodedText);
}
public void testDecodeLocalOptionValueList() throws ParseException {
String text = "p:10,a:PCMU";
LocalOptionValue[] localOptionValueList = parser.decodeLocalOptionValueList(text);
assertNotNull(localOptionValueList);
assertEquals(2, localOptionValueList.length);
String encodedText = parser.encodeLocalOptionValueList(localOptionValueList);
assertEquals(text, encodedText);
text = "a:G729;PCMU,p:30-90,e:on,s:on,customkey:customevalue";
localOptionValueList = parser.decodeLocalOptionValueList(text);
assertEquals(5, localOptionValueList.length);
encodedText = parser.encodeLocalOptionValueList(localOptionValueList);
assertEquals(text, encodedText);
}
public void testDecodeEncodeBandwidth() throws ParseException {
String text = "64";
Bandwidth bandwidth = parser.decodeBandwidth(text);
assertNotNull(bandwidth);
assertEquals(64, bandwidth.getBandwidthLowerBound());
assertEquals(64, bandwidth.getBandwidthUpperBound());
String encodedText = parser.encodeBandwidth(bandwidth);
assertEquals(text, encodedText);
text = "64-128";
bandwidth = parser.decodeBandwidth(text);
assertNotNull(bandwidth);
assertEquals(64, bandwidth.getBandwidthLowerBound());
assertEquals(128, bandwidth.getBandwidthUpperBound());
encodedText = parser.encodeBandwidth(bandwidth);
assertEquals(text, encodedText);
}
public void testDecodeEncodeCompressionAlgorithm() throws ParseException {
String text = "PCMU;G726";
CompressionAlgorithm compressionAlgorithm = parser.decodeCompressionAlgorithm(text);
assertNotNull(compressionAlgorithm);
assertEquals(2, compressionAlgorithm.getCompressionAlgorithmNames().length);
String encodedText = parser.encodeCompressionAlgorithm(compressionAlgorithm);
assertEquals(text, encodedText);
}
public void testDecodeEncodeEchoCancellation() throws ParseException {
String text = "on";
EchoCancellation echoCancellation = parser.decodeEchoCancellation(text);
assertNotNull(echoCancellation);
assertTrue(echoCancellation.getEchoCancellation());
String encodedText = parser.encodeEchoCancellation(echoCancellation);
assertEquals(text, encodedText);
}
public void testDecodeEncodeEncryptionMethod() throws ParseException {
String text = "base64:somekey";
EncryptionMethod encryptionMethod = parser.decodeEncryptionMethod(text);
assertNotNull(encryptionMethod);
assertEquals(2, encryptionMethod.getEncryptionMethod());
assertEquals("somekey", encryptionMethod.getEncryptionKey());
String encodedText = parser.encodeEncryptionMethod(encryptionMethod);
assertEquals(text, encodedText);
}
public void testDecodeEncodeGainControl() throws ParseException {
String text = "auto";
GainControl gainControl = parser.decodeGainControl(text);
assertNotNull(gainControl);
assertTrue(gainControl.getGainControlAuto());
String encodedText = parser.encodeGainControl(gainControl);
assertEquals(text, encodedText);
text = "101";
gainControl = parser.decodeGainControl(text);
assertEquals(101, gainControl.getGainControl());
encodedText = parser.encodeGainControl(gainControl);
assertEquals(text, encodedText);
}
public void testDecodeEncodePacketizationPeriod() throws ParseException {
String text = "20";
PacketizationPeriod packetizationPeriod = parser.decodePacketizationPeriod(text);
assertNotNull(packetizationPeriod);
assertEquals(20, packetizationPeriod.getPacketizationPeriodLowerBound());
assertEquals(packetizationPeriod.getPacketizationPeriodLowerBound(), packetizationPeriod
.getPacketizationPeriodUpperBound());
String encodedText = parser.encodePacketizationPeriod(packetizationPeriod);
assertEquals(text, encodedText);
text = "20-25";
packetizationPeriod = parser.decodePacketizationPeriod(text);
assertEquals(20, packetizationPeriod.getPacketizationPeriodLowerBound());
assertEquals(25, packetizationPeriod.getPacketizationPeriodUpperBound());
encodedText = parser.encodePacketizationPeriod(packetizationPeriod);
assertEquals(text, encodedText);
}
public void testDecodeEncodeResourceReservation() throws ParseException {
String text = "be";
ResourceReservation resourceReservation = parser.decodeResourceReservation(text);
assertNotNull(resourceReservation);
assertEquals(ResourceReservation.BEST_EFFORT, resourceReservation.getResourceReservation());
String encodedText = parser.encodeResourceReservation(resourceReservation);
assertEquals(text, encodedText);
}
public void testDecodeEncodeSilenceSuppression() throws ParseException {
String text = "off";
SilenceSuppression silenceSuppression = parser.decodeSilenceSuppression(text);
assertNotNull(silenceSuppression);
assertEquals(false, silenceSuppression.getSilenceSuppression());
String encodedText = parser.encodeSilenceSuppression(silenceSuppression);
assertEquals(text, encodedText);
}
public void testDecodeEncodeTypeOfNetwork() throws ParseException {
String text = "atm";
TypeOfNetwork typeOfNetwork = parser.decodeTypeOfNetwork(text);
assertNotNull(typeOfNetwork);
assertEquals(TypeOfNetwork.ATM, typeOfNetwork.getTypeOfNetwork());
String encodedText = parser.encodeTypeOfNetwork(typeOfNetwork);
assertEquals(text, encodedText);
}
public void testDecodeEncodeTypeOfService() throws ParseException {
String text = "5";
TypeOfService typeOfService = parser.decodeTypeOfService(text);
assertNotNull(typeOfService);
assertEquals(5, typeOfService.getTypeOfService());
String encodedText = parser.encodeTypeOfService(typeOfService);
assertEquals(text, encodedText);
}
public void testDecodeEncodeRestartMethod() throws ParseException {
String text = "disconnected";
RestartMethod restartMethod = parser.decodeRestartMethod(text);
assertNotNull(restartMethod);
assertEquals(RestartMethod.DISCONNECTED, restartMethod.getRestartMethod());
String encodedText = restartMethod.toString();
assertEquals(text, encodedText);
}
public void testDecodeEncodeEventName() throws ParseException {
String text = "L/rg@112A9FF";
String param = "to=6000";
EventName eventName = parser.decodeEventName(text, param);
assertNotNull(eventName);
PackageName packageName = eventName.getPackageName();
assertEquals(PackageName.LINE, packageName.intValue());
MgcpEvent mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.RINGING, mgcpEvent.intValue());
assertEquals("rg", mgcpEvent.getName());
assertEquals("to=6000", mgcpEvent.getParms());
ConnectionIdentifier connectionIdentifier = eventName.getConnectionIdentifier();
assertNotNull(connectionIdentifier);
assertEquals("112A9FF", connectionIdentifier.toString());
String encodedText = parser.encodeEventName(eventName);
assertEquals(text + "(" + param + ")", encodedText);
// Test 2
text = "G/rt@$";
eventName = parser.decodeEventName(text, null);
assertNotNull(eventName);
packageName = eventName.getPackageName();
assertEquals(PackageName.GENERIC_MEDIA, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.RINGBACK_TONE, mgcpEvent.intValue());
assertEquals("rt", mgcpEvent.getName());
assertNull(mgcpEvent.getParms());
connectionIdentifier = eventName.getConnectionIdentifier();
assertNotNull(connectionIdentifier);
assertEquals(ConnectionIdentifier.AnyConnection.toString(), connectionIdentifier.toString());
encodedText = parser.encodeEventName(eventName);
assertEquals(text, encodedText);
// Test 3
text = "R/qa@*";
eventName = parser.decodeEventName(text, null);
assertNotNull(eventName);
packageName = eventName.getPackageName();
assertEquals(PackageName.RTP, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.QUALITY_ALERT, mgcpEvent.intValue());
assertEquals("qa", mgcpEvent.getName());
assertNull(mgcpEvent.getParms());
connectionIdentifier = eventName.getConnectionIdentifier();
assertNotNull(connectionIdentifier);
assertEquals(ConnectionIdentifier.AllConnections.toString(), connectionIdentifier.toString());
encodedText = parser.encodeEventName(eventName);
assertEquals(text, encodedText);
// Test 4
text = "D/[0-9#T]";
eventName = parser.decodeEventName(text, null);
packageName = eventName.getPackageName();
assertEquals(PackageName.DTMF, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.getCurrentLargestEventValue(), mgcpEvent.intValue());
assertEquals("[0-9#T]", mgcpEvent.getName());
connectionIdentifier = eventName.getConnectionIdentifier();
assertNull(connectionIdentifier);
encodedText = parser.encodeEventName(eventName);
assertEquals(text, encodedText);
// Test 5
text = "T/AllEvents";
eventName = parser.decodeEventName(text, null);
packageName = eventName.getPackageName();
assertEquals(PackageName.TRUNK, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.ALL_EVENTS, mgcpEvent.intValue());
assertEquals("AllEvents", mgcpEvent.getName());
connectionIdentifier = eventName.getConnectionIdentifier();
assertNull(connectionIdentifier);
encodedText = parser.encodeEventName(eventName);
assertEquals(text, encodedText);
// Test 6
text = "*/AllEvents";
eventName = parser.decodeEventName(text, null);
packageName = eventName.getPackageName();
assertEquals(PackageName.ALL_PACKAGES, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.ALL_EVENTS, mgcpEvent.intValue());
assertEquals("AllEvents", mgcpEvent.getName());
connectionIdentifier = eventName.getConnectionIdentifier();
assertNull(connectionIdentifier);
encodedText = parser.encodeEventName(eventName);
assertEquals(text, encodedText);
//Test 7
text = "AU/aupr";
eventName = parser.decodeEventName(text, "ip=22 ns=42 na=2");
packageName = eventName.getPackageName();
assertEquals(AUPackage.ADVANCED_AUDIO, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(AUMgcpEvent.PLAY_RECORD, mgcpEvent.intValue());
assertEquals("ip=22 ns=42 na=2", mgcpEvent.getParms());
}
public void testDecodeEncodeEmbeddedRequest() throws ParseException {
String text = "R(D/[0-9#T] (D),L/hu (N)),S(L/dl)";
EmbeddedRequest embeddedRequest = parser.decodeEmbeddedRequest(text);
assertNotNull(embeddedRequest);
RequestedEvent[] requestedEventList = embeddedRequest.getEmbeddedRequestList();
assertNotNull(requestedEventList);
assertEquals(2, requestedEventList.length);
// Test for Dtmf event D/[0-9#T]
RequestedEvent event1 = requestedEventList[0];
EventName eventName1 = event1.getEventName();
PackageName packageName = eventName1.getPackageName();
assertEquals(PackageName.DTMF, packageName.intValue());
MgcpEvent mgcpEvent = eventName1.getEventIdentifier();
// There are two custom Events and hence CurrentLargestEventValue will
// be greater than 2
assertEquals(MgcpEvent.getCurrentLargestEventValue(), mgcpEvent.intValue());
assertEquals("[0-9#T]", mgcpEvent.getName());
ConnectionIdentifier connectionIdentifier = eventName1.getConnectionIdentifier();
assertNull(connectionIdentifier);
RequestedAction[] requestedActionList1 = event1.getRequestedActions();
assertEquals(1, requestedActionList1.length);
assertEquals(RequestedAction.TREAT_ACCORDING_TO_DIGIT_MAP, requestedActionList1[0].getRequestedAction());
// Test for Dtmf event L/hu(N)
RequestedEvent event2 = requestedEventList[1];
EventName eventName2 = event2.getEventName();
PackageName packageName2 = eventName2.getPackageName();
assertEquals(PackageName.LINE, packageName2.intValue());
MgcpEvent mgcpEvent2 = eventName2.getEventIdentifier();
// There are two custom Events and hence CurrentLargestEventValue will
// be greater than 2
assertEquals(MgcpEvent.ON_HOOK_TRANSITION, mgcpEvent2.intValue());
assertEquals(MgcpEvent.hu.toString(), mgcpEvent2.getName());
ConnectionIdentifier connectionIdentifier2 = eventName2.getConnectionIdentifier();
assertNull(connectionIdentifier2);
RequestedAction[] requestedActionList2 = event2.getRequestedActions();
assertEquals(1, requestedActionList2.length);
assertEquals(RequestedAction.NOTIFY_IMMEDIATELY, requestedActionList2[0].getRequestedAction());
// Test the EmbeddedSignalRequest
EventName[] embeddedSignalRequestList = embeddedRequest.getEmbeddedSignalRequest();
assertNotNull(embeddedSignalRequestList);
assertEquals(1, embeddedSignalRequestList.length);
EventName eventName = embeddedSignalRequestList[0];
packageName = eventName.getPackageName();
assertEquals(PackageName.LINE, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.DIAL_TONE, mgcpEvent.intValue());
assertNull(mgcpEvent.getParms());
assertNull(eventName.getConnectionIdentifier());
// Test DigitMap
DigitMap digitMap = embeddedRequest.getEmbeddedDigitMap();
assertNull(digitMap);
String encodedText = parser.encodeEmbeddedRequest(embeddedRequest);
assertEquals(text, encodedText);
}
public void testDecodeEncodeRequestedEvent() throws ParseException {
// Test 1
String text = "L/hu (N)";
RequestedEvent requestedEvent = parser.decodeRequestedEvent(text);
assertNotNull(requestedEvent);
EventName eventName = requestedEvent.getEventName();
assertEquals(PackageName.LINE, eventName.getPackageName().intValue());
assertEquals(MgcpEvent.ON_HOOK_TRANSITION, eventName.getEventIdentifier().intValue());
RequestedAction[] requestedActionList = requestedEvent.getRequestedActions();
assertEquals(1, requestedActionList.length);
assertEquals(RequestedAction.NOTIFY_IMMEDIATELY, requestedActionList[0].getRequestedAction());
String encodedText = parser.encodeRequestedEvent(requestedEvent);
assertEquals(text, encodedText);
// Test 2
text = "L/hf (S,N)";
requestedEvent = parser.decodeRequestedEvent(text);
assertNotNull(requestedEvent);
eventName = requestedEvent.getEventName();
assertEquals(PackageName.LINE, eventName.getPackageName().intValue());
assertEquals(MgcpEvent.FLASH_HOOK, eventName.getEventIdentifier().intValue());
requestedActionList = requestedEvent.getRequestedActions();
assertEquals(2, requestedActionList.length);
assertEquals(RequestedAction.SWAP, requestedActionList[0].getRequestedAction());
assertEquals(RequestedAction.NOTIFY_IMMEDIATELY, requestedActionList[1].getRequestedAction());
encodedText = parser.encodeRequestedEvent(requestedEvent);
assertEquals(text, encodedText);
// Test 3
text = "R/foobar (N) (epar=2)";
requestedEvent = parser.decodeRequestedEvent(text);
assertNotNull(requestedEvent);
eventName = requestedEvent.getEventName();
assertEquals(PackageName.RTP, eventName.getPackageName().intValue());
assertEquals(MgcpEvent.getCurrentLargestEventValue(), eventName.getEventIdentifier().intValue());
assertEquals("foobar", eventName.getEventIdentifier().getName());
assertEquals("epar=2", eventName.getEventIdentifier().getParms());
requestedActionList = requestedEvent.getRequestedActions();
assertEquals(1, requestedActionList.length);
assertEquals(RequestedAction.NOTIFY_IMMEDIATELY, requestedActionList[0].getRequestedAction());
encodedText = parser.encodeRequestedEvent(requestedEvent);
assertEquals(text, encodedText);
// Test 4
text = "L/hd (E(R(D/[0-9#T] (D),L/hu (N)),S(L/dl),D([0-9].[#T])))";
requestedEvent = parser.decodeRequestedEvent(text);
assertNotNull(requestedEvent);
eventName = requestedEvent.getEventName();
assertEquals(PackageName.LINE, eventName.getPackageName().intValue());
requestedActionList = requestedEvent.getRequestedActions();
assertEquals(1, requestedActionList.length);
assertEquals(RequestedAction.EMBEDDED_NOTIFICATION_REQUEST, requestedActionList[0].getRequestedAction());
EmbeddedRequest embeddedRequest = requestedActionList[0].getEmbeddedRequest();
assertNotNull(embeddedRequest);
RequestedEvent[] requestedEventList = embeddedRequest.getEmbeddedRequestList();
assertNotNull(requestedEventList);
assertEquals(2, requestedEventList.length);
// Test for Dtmf event D/[0-9#T]
RequestedEvent event1 = requestedEventList[0];
EventName eventName1 = event1.getEventName();
PackageName packageName = eventName1.getPackageName();
assertEquals(PackageName.DTMF, packageName.intValue());
MgcpEvent mgcpEvent = eventName1.getEventIdentifier();
// There are two custom Events and hence CurrentLargestEventValue will
// be greater than 2
assertEquals(MgcpEvent.getCurrentLargestEventValue() - 1, mgcpEvent.intValue());
assertEquals("[0-9#T]", mgcpEvent.getName());
ConnectionIdentifier connectionIdentifier = eventName1.getConnectionIdentifier();
assertNull(connectionIdentifier);
RequestedAction[] requestedActionList1 = event1.getRequestedActions();
assertEquals(1, requestedActionList1.length);
assertEquals(RequestedAction.TREAT_ACCORDING_TO_DIGIT_MAP, requestedActionList1[0].getRequestedAction());
// Test for Dtmf event L/hu(N)
RequestedEvent event2 = requestedEventList[1];
EventName eventName2 = event2.getEventName();
PackageName packageName2 = eventName2.getPackageName();
assertEquals(PackageName.LINE, packageName2.intValue());
MgcpEvent mgcpEvent2 = eventName2.getEventIdentifier();
// There are two custom Events and hence CurrentLargestEventValue will
// be greater than 2
assertEquals(MgcpEvent.ON_HOOK_TRANSITION, mgcpEvent2.intValue());
assertEquals(MgcpEvent.hu.toString(), mgcpEvent2.getName());
ConnectionIdentifier connectionIdentifier2 = eventName2.getConnectionIdentifier();
assertNull(connectionIdentifier2);
RequestedAction[] requestedActionList2 = event2.getRequestedActions();
assertEquals(1, requestedActionList2.length);
assertEquals(RequestedAction.NOTIFY_IMMEDIATELY, requestedActionList2[0].getRequestedAction());
// Test the EmbeddedSignalRequest
EventName[] embeddedSignalRequestList = embeddedRequest.getEmbeddedSignalRequest();
assertNotNull(embeddedSignalRequestList);
assertEquals(1, embeddedSignalRequestList.length);
eventName = embeddedSignalRequestList[0];
packageName = eventName.getPackageName();
assertEquals(PackageName.LINE, packageName.intValue());
mgcpEvent = eventName.getEventIdentifier();
assertEquals(MgcpEvent.DIAL_TONE, mgcpEvent.intValue());
assertNull(mgcpEvent.getParms());
assertNull(eventName.getConnectionIdentifier());
// Test DigitMap
DigitMap digitMap = embeddedRequest.getEmbeddedDigitMap();
assertEquals("[0-9].[#T]", digitMap.toString());
encodedText = parser.encodeRequestedEvent(requestedEvent);
assertEquals(text, encodedText);
}
public void testDecodeEncodeConnectionParm() {
String text = "PR=780";
ConnectionParm connectionParm = parser.decodeConnectionParm(text);
assertNotNull(connectionParm);
assertEquals(RegularConnectionParm.PACKETS_RECEIVED, connectionParm.getConnectionParmType());
assertEquals(780, connectionParm.getConnectionParmValue());
String encodedText = parser.encodeConnectionParm(connectionParm);
assertEquals(text, encodedText);
// Test Custom
text = "MS=1";
connectionParm = parser.decodeConnectionParm(text);
assertNotNull(connectionParm);
assertEquals(1, connectionParm.getConnectionParmValue());
encodedText = parser.encodeConnectionParm(connectionParm);
assertEquals(text, encodedText);
}
public void testDecodeReasonCode() {
String text = "0 Endpoint state is nominal.";
ReasonCode reasonCode = parser.decodeReasonCode(text);
assertNotNull(reasonCode);
assertEquals(ReasonCode.ENDPOINT_STATE_IS_NOMINAL, reasonCode.getValue());
String encodedText = reasonCode.toString();
assertEquals(text, encodedText);
}
public void testDecodeEncodeNotifiedEntity() throws ParseException {
String text = "128.96.41.12";
NotifiedEntity notifiedEntity = parser.decodeNotifiedEntity(text, true);
assertNotNull(notifiedEntity);
assertEquals("128.96.41.12", notifiedEntity.getDomainName());
assertEquals(2427, notifiedEntity.getPortNumber());
String encodedText = parser.encodeNotifiedEntity(notifiedEntity);
assertEquals("128.96.41.12:2427", encodedText);
// Test 2
text = "CA-1@whatever.net";
notifiedEntity = parser.decodeNotifiedEntity(text, false);
assertEquals("whatever.net", notifiedEntity.getDomainName());
assertEquals("CA-1", notifiedEntity.getLocalName());
assertEquals(2727, notifiedEntity.getPortNumber());
encodedText = parser.encodeNotifiedEntity(notifiedEntity);
assertEquals("CA-1@whatever.net:2727", encodedText);
// Test 3
text = "ca@ca1.whatever.net:5678";
notifiedEntity = parser.decodeNotifiedEntity(text, false);
assertEquals("ca1.whatever.net", notifiedEntity.getDomainName());
assertEquals("ca", notifiedEntity.getLocalName());
assertEquals(5678, notifiedEntity.getPortNumber());
encodedText = parser.encodeNotifiedEntity(notifiedEntity);
assertEquals(text, encodedText);
}
public void testDecodeEncodeEndpointIdentifier() {
String text = "aaln/1@rgw.whatever.net";
EndpointIdentifier endpointIdentifier = parser.decodeEndpointIdentifier(text);
assertNotNull(endpointIdentifier);
assertEquals("aaln/1", endpointIdentifier.getLocalEndpointName());
assertEquals("rgw.whatever.net", endpointIdentifier.getDomainName());
String encodedText = parser.encodeEndpointIdentifier(endpointIdentifier);
assertEquals(text, encodedText);
}
}