void tst_QSimToolkit::testEncodeProvideLocalInformation() { QFETCH( QByteArray, data ); QFETCH( QByteArray, resp ); QFETCH( QByteArray, info ); QFETCH( int, resptype ); QFETCH( int, localtype ); QFETCH( int, options ); // Output a dummy line to give some indication of which test we are currently running. qDebug() << ""; // Check that the command PDU can be parsed correctly. QSimCommand decoded = QSimCommand::fromPdu(data); QVERIFY( decoded.type() == QSimCommand::ProvideLocalInformation ); QVERIFY( decoded.destinationDevice() == QSimCommand::ME ); QCOMPARE( decoded.qualifier(), localtype ); // Check that the original command PDU can be reconstructed correctly. QByteArray encoded = decoded.toPdu( (QSimCommand::ToPduOptions)options ); QCOMPARE( encoded, data ); // Check that the terminal response PDU can be parsed correctly. QSimTerminalResponse decodedResp = QSimTerminalResponse::fromPdu(resp); QVERIFY( data.contains( decodedResp.commandPdu() ) ); if ( resptype < 0x0100 ) { QVERIFY( decodedResp.result() == (QSimTerminalResponse::Result)resptype ); QVERIFY( decodedResp.causeData().isEmpty() ); QVERIFY( decodedResp.cause() == QSimTerminalResponse::NoSpecificCause ); } else { QVERIFY( decodedResp.result() == (QSimTerminalResponse::Result)(resptype >> 8) ); QVERIFY( decodedResp.causeData().size() == 1 ); QVERIFY( decodedResp.cause() == (QSimTerminalResponse::Cause)(resptype & 0xFF) ); } // Check that the original terminal response PDU can be reconstructed correctly. QCOMPARE( decodedResp.toPdu(), resp ); }
void tst_QSimToolkit::testDeliverProvideLocalInformation() { QFETCH( QByteArray, data ); QFETCH( QByteArray, resp ); QFETCH( QByteArray, info ); QFETCH( int, resptype ); QFETCH( int, localtype ); 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::ProvideLocalInformation ); cmd.setQualifier( localtype ); 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.qualifier() == cmd.qualifier() ); QCOMPARE( deliveredCommand.toPdu( (QSimCommand::ToPduOptions)options ), data ); // The response should have been sent immediately. QCOMPARE( server->responseCount(), 1 ); QCOMPARE( server->envelopeCount(), 0 ); QSimTerminalResponse resp2 = QSimTerminalResponse::fromPdu( server->lastResponse() ); QVERIFY( resp2.result() == (QSimTerminalResponse::Result)resptype ); QVERIFY( resp2.cause() == QSimTerminalResponse::NoSpecificCause ); }