⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sizetest.java

📁 短信短消息SMPP开发的JAVA API最新版本。
💻 JAVA
字号:
/* * Java SMPP API * Copyright (C) 1998 - 2002 by Oran Kelly *  * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *  * A copy of the LGPL can be viewed at http://www.gnu.org/copyleft/lesser.html * Java SMPP API author: orank@users.sf.net * Java SMPP API Homepage: http://smppapi.sourceforge.net/ * $Id: SizeTest.java,v 1.4 2004/07/25 12:08:01 orank Exp $ */package ie.omk.smpp.message;import ie.omk.smpp.Address;import ie.omk.smpp.BadCommandIDException;import ie.omk.smpp.ErrorAddress;import ie.omk.smpp.SMPPException;import ie.omk.smpp.util.GSMConstants;import ie.omk.smpp.util.PacketFactory;import ie.omk.smpp.util.SMPPDate;import ie.omk.smpp.util.SMPPIO;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.Date;import junit.framework.TestCase;/** Test that the value reported by <code>getLength</code> matches the actual * length a packet serializes to and deserializes from. * @author Oran Kelly &lt;orank@users.sf.net&gt; */public class SizeTest extends TestCase {    // List of all the message types.    protected static final Class[] classList = {	AlertNotification.class,	BindReceiver.class,	BindReceiverResp.class,	BindTransceiver.class,	BindTransceiverResp.class,	BindTransmitter.class,	BindTransmitterResp.class,	CancelSM.class,	CancelSMResp.class,	DataSM.class,	DataSMResp.class,	DeliverSM.class,	DeliverSMResp.class,	EnquireLink.class,	EnquireLinkResp.class,	GenericNack.class,	ParamRetrieve.class,	ParamRetrieveResp.class,	QueryLastMsgs.class,	QueryLastMsgsResp.class,	QueryMsgDetails.class,	QueryMsgDetailsResp.class,	QuerySM.class,	QuerySMResp.class,	ReplaceSM.class,	ReplaceSMResp.class,	SubmitMulti.class,	SubmitMultiResp.class,	SubmitSM.class,	SubmitSMResp.class,	Unbind.class,	UnbindResp.class    };    public SizeTest(String n) {	super (n);    }    /** Test an individual packet. This method serializes the packet to a byte     * array and then deserializes a second packet from that byte array. It then     * asserts that <code>getLength</code> on the original packet matches the     * length of the byte array and that the length of the byte array matches     * the value returned from <code>getLength</code> on the deserialized     * packet.     */    private void testPacket(String n, SMPPPacket original) {	try {	    SMPPPacket deserialized;	    ByteArrayOutputStream out = new ByteArrayOutputStream();	    original.writeTo(out);	    byte[] array = out.toByteArray();	    int id = SMPPIO.bytesToInt(array, 4, 4);	    deserialized = PacketFactory.newInstance(id);	    if (deserialized == null) {		fail(n + " - PacketFactory returned null for Id 0x"			+ Integer.toHexString(id));		return;	    }	    deserialized.readFrom(array, 0);	    assertEquals(n + " serialized.", original.getLength(), array.length);	    assertEquals(n + " deserialized.", array.length,		    deserialized.getLength());	} catch (BadCommandIDException x) {	    fail(n + " serialization caused BadCommandIDException:\n"		    + x.toString());	} catch (SMPPProtocolException x) {	    fail(n + " serialization caused SMPPProtocolException:\n"		    + x.toString());	} catch (IOException x) {	    fail(n + " serialization caused I/O Exception:\n"		    + x.toString());	    return;	}    }    /** Test that packets report their sizes correctly. The <code>filled</code>     * parameter determines if the test run uses all the default values for the     * fields as determined by a message's constructor or if the test will fill     * in test values for all relevant fields in the message.     */    public void testMessageSizes(boolean filled) {	for (int i = 0; i < classList.length; i++) {	    String n = classList[i].getName();	    n = n.substring(n.lastIndexOf('.'));	    try {		SMPPPacket p = (SMPPPacket)classList[i].newInstance();		if (filled)		    initialiseFields(p);		testPacket(n, p);	    } catch (SMPPException x) {		fail(n + " field initialisation caused an SMPP exception:\n"			+ x.toString());	    } catch (InstantiationException x) {		fail(n + " is implemented incorrectly. Exception thrown:\n"			+ x.toString());	    } catch (IllegalAccessException x) {		fail(n + " constructor is not public.\n"			+ x.toString());	    } catch (ExceptionInInitializerError x) {		fail(n + " constructor threw an exception.\n"			+ x.toString());	    } catch (SecurityException x) {		fail("SecurityException instantiating " + n			+ "\n" + x.toString());	    }	}    }    /** Initialise field contents for the filled field test.     */    private void initialiseFields(SMPPPacket p)	throws ie.omk.smpp.SMPPException    {	int id = p.getCommandId();	switch (id) {	case SMPPPacket.ALERT_NOTIFICATION:	    p.setSequenceNum(34);	    p.setSource(new Address(0, 0, "445445445"));	    p.setDestination(new Address(0, 0, "67676767676767"));	    break;	case SMPPPacket.BIND_TRANSMITTER:	case SMPPPacket.BIND_RECEIVER:	case SMPPPacket.BIND_TRANSCEIVER:	    Bind b = (Bind)p;	    b.setSequenceNum(1);	    b.setSystemId("sysId");	    b.setSystemType("sysType");	    b.setPassword("passwd");	    b.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534[1-3]"));	    break;	case SMPPPacket.BIND_TRANSMITTER_RESP:	case SMPPPacket.BIND_RECEIVER_RESP:	case SMPPPacket.BIND_TRANSCEIVER_RESP:	    p.setSequenceNum(2);	    BindResp br = (BindResp)p;	    br.setSystemId("SMSC-ID");	    break;	case SMPPPacket.CANCEL_SM:	    p.setSequenceNum(3);	    p.setMessageId("deadbeef");	    p.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534111"));	    p.setDestination(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534222"));	    break;	case SMPPPacket.DELIVER_SM:	case SMPPPacket.SUBMIT_SM:	case SMPPPacket.SUBMIT_MULTI:	    p.setSequenceNum(5);	    p.setServiceType("svcTp");	    p.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534111"));	    if (id == SMPPPacket.SUBMIT_MULTI) {		SubmitMulti sml = (SubmitMulti)p;		sml.addDestination(new Address(			    GSMConstants.GSM_TON_UNKNOWN,			    GSMConstants.GSM_NPI_UNKNOWN,			    "991293211"));		sml.addDestination(new Address(			    GSMConstants.GSM_TON_UNKNOWN,			    GSMConstants.GSM_NPI_UNKNOWN,			    "991293212"));		sml.addDestination(new Address(			    GSMConstants.GSM_TON_UNKNOWN,			    GSMConstants.GSM_NPI_UNKNOWN,			    "991293213"));	    } else {		p.setDestination(new Address(			    GSMConstants.GSM_TON_UNKNOWN,			    GSMConstants.GSM_NPI_UNKNOWN,			    "65534222"));	    }	    //p.setProtocolId();	    p.setPriority(1);	    p.setDeliveryTime(new SMPPDate(new Date()));	    p.setExpiryTime(new SMPPDate(new Date()));	    p.setRegistered(1);	    p.setReplaceIfPresent(1);	    //p.setDataCoding();	    p.setMessageText("This is a short message");	    break;	case SMPPPacket.DATA_SM:	    p.setSequenceNum(45);	    p.setServiceType("svcTp");	    p.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534111"));	    p.setDestination(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534222"));	    p.setRegistered(1);	    break;	case SMPPPacket.DATA_SM_RESP:	    p.setSequenceNum(46);	    p.setMessageId("deadbeef");	    break;	case SMPPPacket.SUBMIT_SM_RESP:	case SMPPPacket.SUBMIT_MULTI_RESP:	    p.setSequenceNum(6);	    p.setMessageId("deadbeef");	    if (id == SMPPPacket.SUBMIT_MULTI_RESP) {		SubmitMultiResp smr = (SubmitMultiResp)p;		smr.add(new ErrorAddress(0, 0, "12345", 65));		smr.add(new ErrorAddress(0, 0, "12346", 66));		smr.add(new ErrorAddress(0, 0, "12347", 90));		smr.add(new ErrorAddress(0, 0, "99999", 999));	    }	    break;	case SMPPPacket.PARAM_RETRIEVE:	    p.setSequenceNum(7);	    ((ParamRetrieve)p).setParamName("getParam");	    break;	case SMPPPacket.PARAM_RETRIEVE_RESP:	    p.setSequenceNum(8);	    ((ParamRetrieveResp)p).setParamValue("paramValue - can be long.");	    break;	case SMPPPacket.QUERY_LAST_MSGS:	    p.setSequenceNum(9);	    p.setSource(new Address(0, 0, "65534111"));	    ((QueryLastMsgs)p).setMsgCount(45);	    break;	case SMPPPacket.QUERY_LAST_MSGS_RESP:	    p.setSequenceNum(10);	    QueryLastMsgsResp q = (QueryLastMsgsResp)p;	    q.addMessageId("deadbeef");	    q.addMessageId("cafecafe");	    q.addMessageId("12345678");	    q.addMessageId("77777777");	    q.addMessageId("beefdead");	    break;	case SMPPPacket.QUERY_MSG_DETAILS:	    p.setSequenceNum(11);	    p.setSource(new Address(0, 0, "65534111"));	    p.setMessageId("deadbeef");	    ((QueryMsgDetails)p).setSmLength(160);	    break;	case SMPPPacket.QUERY_MSG_DETAILS_RESP:	    p.setSequenceNum(15);	    QueryMsgDetailsResp q1 = (QueryMsgDetailsResp)p;	    q1.setServiceType("svcTp");	    q1.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534111"));	    q1.addDestination(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"991293211"));	    q1.addDestination(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"991293212"));	    q1.addDestination(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"991293213"));	    //q1.setProtocolId();	    q1.setPriority(1);	    q1.setDeliveryTime(new SMPPDate());	    q1.setExpiryTime(new SMPPDate());	    q1.setRegistered(1);	    q1.setReplaceIfPresent(1);	    //q1.setDataCoding();	    q1.setMessageText("This is a short message");	    q1.setMessageId("deadbeef");	    q1.setFinalDate(new SMPPDate());	    q1.setMessageStatus(1);	    q1.setErrorCode(2);	    break;	case SMPPPacket.QUERY_SM:	    p.setSequenceNum(17);	    p.setMessageId("deadbeef");	    p.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534111"));	    break;	case SMPPPacket.QUERY_SM_RESP:	    p.setSequenceNum(20);	    p.setMessageId("deadbeef");	    p.setFinalDate(new SMPPDate());	    p.setMessageStatus(1);	    p.setErrorCode(4);	    break;	case SMPPPacket.REPLACE_SM:	    p.setSequenceNum(22);	    p.setMessageId("deadbeef");	    p.setServiceType("svcTp");	    p.setSource(new Address(			GSMConstants.GSM_TON_UNKNOWN,			GSMConstants.GSM_NPI_UNKNOWN,			"65534111"));	    p.setDeliveryTime(new SMPPDate());	    p.setExpiryTime(new SMPPDate());	    p.setRegistered(1);	    p.setMessageText("This is a short message");	    break;	default:	    p.setSequenceNum(4);	    break;	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -