void tst_QSimToolkit::testDeliverRefresh() { QFETCH( QByteArray, data ); QFETCH( QByteArray, resp ); QFETCH( int, resptype ); QFETCH( int, refreshtype ); QFETCH( int, numfiles ); QFETCH( QString, fileids ); QFETCH( int, options ); // Output a dummy line to give some indication of which test we are currently running. qDebug() << ""; // Clear the client/server state. server->clear(); deliveredCommand = QSimCommand(); // Compose and send the command. QSimCommand cmd; cmd.setType( QSimCommand::Refresh ); cmd.setRefreshType( (QSimCommand::RefreshType)refreshtype ); if ( numfiles > 0 ) { QByteArray extData; extData += (char)numfiles; extData += QAtUtils::fromHex( fileids ); cmd.addExtensionField( 0x92, extData ); } server->emitCommand( cmd ); // Wait for the command to arrive in the client. QVERIFY( QFutureSignal::wait( this, SIGNAL(commandSeen()), 100 ) ); // Verify that the command was delivered exactly as we asked. QVERIFY( deliveredCommand.type() == cmd.type() ); QVERIFY( deliveredCommand.refreshType() == cmd.refreshType() ); QVERIFY( deliveredCommand.extensionData() == cmd.extensionData() ); QCOMPARE( deliveredCommand.toPdu( (QSimCommand::ToPduOptions)options ), data ); // The response should have been sent immediately. QCOMPARE( server->responseCount(), 1 ); QCOMPARE( server->envelopeCount(), 0 ); if ( resptype != 0x0003 ) { QCOMPARE( server->lastResponse(), resp ); } else { // We cannot test the "additional EF's read" case because the qtopiaphone // library will always respond with "command performed successfully". QByteArray resp2 = resp; resp2[resp2.size() - 1] = 0x00; QCOMPARE( server->lastResponse(), resp2 ); } }
void tst_QSimToolkit::testDeliverSendSMS() { QFETCH( QByteArray, data ); QFETCH( QByteArray, resp ); QFETCH( QByteArray, tpdu ); QFETCH( int, resptype ); QFETCH( QString, text ); QFETCH( QString, number ); QFETCH( bool, smsPacking ); QFETCH( int, iconId ); QFETCH( bool, iconSelfExplanatory ); QFETCH( QByteArray, textAttribute ); QFETCH( QString, html ); QFETCH( int, options ); Q_UNUSED(html); // Output a dummy line to give some indication of which test we are currently running. qDebug() << ""; // Clear the client/server state. server->clear(); deliveredCommand = QSimCommand(); // Compose and send the command. QSimCommand cmd; cmd.setType( QSimCommand::SendSMS ); cmd.setDestinationDevice( QSimCommand::Network ); cmd.setText( text ); if ( text.isEmpty() && ( options & QSimCommand::EncodeEmptyStrings ) != 0 ) cmd.setSuppressUserFeedback( true ); cmd.setNumber( number ); cmd.setSmsPacking( smsPacking ); cmd.setIconId( (uint)iconId ); cmd.setIconSelfExplanatory( iconSelfExplanatory ); cmd.setTextAttribute( textAttribute ); QByteArray newtpdu = tpdu; if ( smsPacking ) { // To prevent truncation of the 1.4.1 test data during 7-bit to 8-bit conversion, // we extract the TPDU from "data" rather than use "tpdu". newtpdu = QSimCommand::fromPdu( data ).extensionField(0x8B); } newtpdu[1] = (char)0; cmd.addExtensionField( 0x8B, newtpdu ); server->emitCommand( cmd ); // Wait for the command to arrive in the client. QVERIFY( QFutureSignal::wait( this, SIGNAL(commandSeen()), 100 ) ); // Verify that the command was delivered exactly as we asked. QVERIFY( deliveredCommand.type() == cmd.type() ); QVERIFY( deliveredCommand.text() == cmd.text() ); QVERIFY( deliveredCommand.suppressUserFeedback() == cmd.suppressUserFeedback() ); QVERIFY( deliveredCommand.number() == cmd.number() ); QVERIFY( deliveredCommand.smsPacking() == cmd.smsPacking() ); QVERIFY( deliveredCommand.iconId() == cmd.iconId() ); QVERIFY( deliveredCommand.iconSelfExplanatory() == cmd.iconSelfExplanatory() ); QVERIFY( deliveredCommand.extensionData() == cmd.extensionData() ); QVERIFY( deliveredCommand.textAttribute() == cmd.textAttribute() ); QCOMPARE( deliveredCommand.toPdu( (QSimCommand::ToPduOptions)options ), data ); // The terminal response should have been sent immediately to ack reception of the command. QCOMPARE( server->responseCount(), 1 ); QCOMPARE( server->envelopeCount(), 0 ); if ( resptype != 0x0004 ) { QCOMPARE( server->lastResponse(), resp ); } else { // We cannot test the "icon not displayed" case because the qtopiaphone // library will always respond with "command performed successfully". // Presumably the Qtopia user interface can always display icons. QByteArray resp2 = resp; resp2[resp2.size() - 1] = 0x00; QCOMPARE( server->lastResponse(), resp2 ); } }