112de25a6f806848952d8c334a90c5884aba4690fTom Taylor/*
212de25a6f806848952d8c334a90c5884aba4690fTom Taylor * Copyright (C) 2008 The Android Open Source Project
312de25a6f806848952d8c334a90c5884aba4690fTom Taylor *
412de25a6f806848952d8c334a90c5884aba4690fTom Taylor * Licensed under the Apache License, Version 2.0 (the "License");
512de25a6f806848952d8c334a90c5884aba4690fTom Taylor * you may not use this file except in compliance with the License.
612de25a6f806848952d8c334a90c5884aba4690fTom Taylor * You may obtain a copy of the License at
712de25a6f806848952d8c334a90c5884aba4690fTom Taylor *
812de25a6f806848952d8c334a90c5884aba4690fTom Taylor *      http://www.apache.org/licenses/LICENSE-2.0
912de25a6f806848952d8c334a90c5884aba4690fTom Taylor *
1012de25a6f806848952d8c334a90c5884aba4690fTom Taylor * Unless required by applicable law or agreed to in writing, software
1112de25a6f806848952d8c334a90c5884aba4690fTom Taylor * distributed under the License is distributed on an "AS IS" BASIS,
1212de25a6f806848952d8c334a90c5884aba4690fTom Taylor * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1312de25a6f806848952d8c334a90c5884aba4690fTom Taylor * See the License for the specific language governing permissions and
1412de25a6f806848952d8c334a90c5884aba4690fTom Taylor * limitations under the License.
1512de25a6f806848952d8c334a90c5884aba4690fTom Taylor */
1612de25a6f806848952d8c334a90c5884aba4690fTom Taylor
1712de25a6f806848952d8c334a90c5884aba4690fTom Taylorpackage com.android.basicsmsreceiver;
1812de25a6f806848952d8c334a90c5884aba4690fTom Taylor
1912de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport java.util.ArrayList;
2012de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport java.util.List;
2112de25a6f806848952d8c334a90c5884aba4690fTom Taylor
2212de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.app.Activity;
2312de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.app.PendingIntent;
2412de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.content.BroadcastReceiver;
2512de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.content.Context;
2612de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.content.Intent;
2712de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.content.IntentFilter;
2812de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.database.Cursor;
2912de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.graphics.Color;
3012de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.os.Bundle;
3112de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.provider.Telephony;
3212de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.telephony.SmsManager;
3312de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.telephony.SmsMessage;
3412de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.telephony.TelephonyManager;
3512de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.test.ActivityInstrumentationTestCase2;
3612de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.test.suitebuilder.annotation.MediumTest;
3712de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.test.suitebuilder.annotation.SmallTest;
3812de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.test.suitebuilder.annotation.LargeTest;
3912de25a6f806848952d8c334a90c5884aba4690fTom Taylorimport android.util.Log;
4012de25a6f806848952d8c334a90c5884aba4690fTom Taylor
4112de25a6f806848952d8c334a90c5884aba4690fTom Taylor/**
4212de25a6f806848952d8c334a90c5884aba4690fTom Taylor * Various instrumentation tests for BasicSmsReceiver.
4312de25a6f806848952d8c334a90c5884aba4690fTom Taylor *
4412de25a6f806848952d8c334a90c5884aba4690fTom Taylor * To run this test: runtest basicsmsreceiver
4512de25a6f806848952d8c334a90c5884aba4690fTom Taylor *
4612de25a6f806848952d8c334a90c5884aba4690fTom Taylor * TODO: write tests that verify that notifications get created. As of now, I don't see a way
4712de25a6f806848952d8c334a90c5884aba4690fTom Taylor * to query the NotificationManager for what notifications are there. I only see methods to
4812de25a6f806848952d8c334a90c5884aba4690fTom Taylor * post and cancel notifications.
4912de25a6f806848952d8c334a90c5884aba4690fTom Taylor *
5012de25a6f806848952d8c334a90c5884aba4690fTom Taylor */
5112de25a6f806848952d8c334a90c5884aba4690fTom Taylorpublic class DialogSmsDisplayTests
5212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        extends ActivityInstrumentationTestCase2<DialogSmsDisplay> {
5312de25a6f806848952d8c334a90c5884aba4690fTom Taylor
5412de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private boolean mHasSms;
5512de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private String mMyNumber;       // phone number of this device
5612de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public static final String ACTION_SMS_SENT =
5712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        "com.android.basicsmsreceiver.tests.SMS_SENT_ACTION";
5812de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private static String TAG = "DialogSmsDisplayTests";
5912de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private List<String> mReceivedMessages = new ArrayList<String>();
6012de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private String mReceivedSender;
6112de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private DialogSmsDisplay dialogSmsDisplayActivity;
6212de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private int mMessageReceivedCount;
6312de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private BroadcastReceiver mSmsSenderReceiver;
6412de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private BroadcastReceiver mSmsReceiverReceiver;
6512de25a6f806848952d8c334a90c5884aba4690fTom Taylor
6612de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public DialogSmsDisplayTests() {
6712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        super("com.android.basicsmsreceiver", DialogSmsDisplay.class);
6812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        Log.i(TAG, "DialogSmsDisplayTests");
6912de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
7012de25a6f806848952d8c334a90c5884aba4690fTom Taylor
7112de25a6f806848952d8c334a90c5884aba4690fTom Taylor    @Override
7212de25a6f806848952d8c334a90c5884aba4690fTom Taylor    protected void setUp() throws Exception {
7312de25a6f806848952d8c334a90c5884aba4690fTom Taylor        super.setUp();
7412de25a6f806848952d8c334a90c5884aba4690fTom Taylor
7512de25a6f806848952d8c334a90c5884aba4690fTom Taylor        dialogSmsDisplayActivity = (DialogSmsDisplay)getActivity();
7612de25a6f806848952d8c334a90c5884aba4690fTom Taylor
7712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        TelephonyManager telephonyManager = ((TelephonyManager)dialogSmsDisplayActivity
7812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                .getSystemService(Context.TELEPHONY_SERVICE));
7912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        mHasSms = true;     //telephonyManager.isSmsCapable();
8012de25a6f806848952d8c334a90c5884aba4690fTom Taylor        mMyNumber = telephonyManager.getLine1Number();
8112de25a6f806848952d8c334a90c5884aba4690fTom Taylor
8212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        Log.i(TAG, "hasSms: " + mHasSms + " my number: " + mMyNumber);
8312de25a6f806848952d8c334a90c5884aba4690fTom Taylor
8412de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertTrue("SMS must be enabled on the device", mHasSms);
8512de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertNotNull("Device does not have a phone number", mMyNumber);
8612de25a6f806848952d8c334a90c5884aba4690fTom Taylor
8712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (mHasSms) {
8812de25a6f806848952d8c334a90c5884aba4690fTom Taylor            // Register broadcast receivers for SMS sent and delivered intents
8912de25a6f806848952d8c334a90c5884aba4690fTom Taylor            mSmsSenderReceiver = new BroadcastReceiver() {
9012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                @Override
9112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                public void onReceive(Context context, Intent intent) {
9212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    String message = null;
9312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    boolean error = true;
9412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    switch (getResultCode()) {
9512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        case Activity.RESULT_OK:
9612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            message = "Message sent!";
9712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            error = false;
9812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            break;
9912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
10012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            message = "Error.";
10112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            break;
10212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        case SmsManager.RESULT_ERROR_NO_SERVICE:
10312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            message = "Error: No SMS service.";
10412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            break;
10512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        case SmsManager.RESULT_ERROR_NULL_PDU:
10612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            message = "Error: Null PDU.";
10712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            break;
10812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        case SmsManager.RESULT_ERROR_RADIO_OFF:
10912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            message = "Error: Radio off.";
11012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            break;
11112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    }
11212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    assertFalse(message, error);
11312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                }
11412de25a6f806848952d8c334a90c5884aba4690fTom Taylor            };
11512de25a6f806848952d8c334a90c5884aba4690fTom Taylor            dialogSmsDisplayActivity.registerReceiver(mSmsSenderReceiver,
11612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    new IntentFilter(ACTION_SMS_SENT));
11712de25a6f806848952d8c334a90c5884aba4690fTom Taylor
11812de25a6f806848952d8c334a90c5884aba4690fTom Taylor            // Register broadcast receivers for received SMS
11912de25a6f806848952d8c334a90c5884aba4690fTom Taylor            mSmsReceiverReceiver = new BroadcastReceiver() {
12012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                @Override
12112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                public void onReceive(Context context, Intent intent) {
12212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    Bundle extras = intent.getExtras();
12312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    Log.i(TAG, "onReceive");
12412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    if (extras == null)
12512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        return;
12612de25a6f806848952d8c334a90c5884aba4690fTom Taylor
12712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    Object[] pdus = (Object[]) extras.get("pdus");
12812de25a6f806848952d8c334a90c5884aba4690fTom Taylor
12912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    for (int i = 0; i < pdus.length; i++) {
13012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        SmsMessage message = SmsMessage.createFromPdu((byte[]) pdus[i]);
13112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        String sender = message.getOriginatingAddress();
13212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        if (mReceivedSender != null) {
13312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            assertEquals(mReceivedSender, sender);
13412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        } else {
13512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                            mReceivedSender = sender;
13612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        }
13712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        mReceivedMessages.add(message.getMessageBody().toString());
13812de25a6f806848952d8c334a90c5884aba4690fTom Taylor
13912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                        Log.i(TAG, "From: " + mReceivedSender + " message: " +
14012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                                mReceivedMessages.get(mReceivedMessages.size() - 1));
14112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    }
14212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                }
14312de25a6f806848952d8c334a90c5884aba4690fTom Taylor            };
14412de25a6f806848952d8c334a90c5884aba4690fTom Taylor            dialogSmsDisplayActivity.registerReceiver(mSmsReceiverReceiver,
14512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    new IntentFilter(Telephony.Sms.Intents.SMS_RECEIVED_ACTION));
14612de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
14712de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
14812de25a6f806848952d8c334a90c5884aba4690fTom Taylor
14912de25a6f806848952d8c334a90c5884aba4690fTom Taylor    @Override
15012de25a6f806848952d8c334a90c5884aba4690fTom Taylor    protected void tearDown() throws Exception {
15112de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (mSmsSenderReceiver != null) {
15212de25a6f806848952d8c334a90c5884aba4690fTom Taylor            dialogSmsDisplayActivity.unregisterReceiver(mSmsSenderReceiver);
15312de25a6f806848952d8c334a90c5884aba4690fTom Taylor            mSmsSenderReceiver = null;
15412de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
15512de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (mSmsReceiverReceiver != null) {
15612de25a6f806848952d8c334a90c5884aba4690fTom Taylor            dialogSmsDisplayActivity.unregisterReceiver(mSmsReceiverReceiver);
15712de25a6f806848952d8c334a90c5884aba4690fTom Taylor            mSmsReceiverReceiver = null;
15812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
15912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        super.tearDown();
16012de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
16112de25a6f806848952d8c334a90c5884aba4690fTom Taylor
16212de25a6f806848952d8c334a90c5884aba4690fTom Taylor    // Returns the broken up list of messages for long messages or the original message in
16312de25a6f806848952d8c334a90c5884aba4690fTom Taylor    // element 0.
16412de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private List<String> sendSmsMessageInternal(String messageOut) {
16512de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (!mHasSms) {
16612de25a6f806848952d8c334a90c5884aba4690fTom Taylor            fail("no sms on device");
16712de25a6f806848952d8c334a90c5884aba4690fTom Taylor            return null;
16812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
16912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        SmsManager sms = SmsManager.getDefault();
17012de25a6f806848952d8c334a90c5884aba4690fTom Taylor
17112de25a6f806848952d8c334a90c5884aba4690fTom Taylor        List<String> messages = sms.divideMessage(messageOut);
17212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        mMessageReceivedCount = 0;
17312de25a6f806848952d8c334a90c5884aba4690fTom Taylor        mReceivedSender = null;
17412de25a6f806848952d8c334a90c5884aba4690fTom Taylor        mReceivedMessages.clear();
17512de25a6f806848952d8c334a90c5884aba4690fTom Taylor
17612de25a6f806848952d8c334a90c5884aba4690fTom Taylor        for (String message : messages) {
17712de25a6f806848952d8c334a90c5884aba4690fTom Taylor            Log.i(TAG, "sendSmsMessage: " + messageOut + " to: " + mMyNumber);
17812de25a6f806848952d8c334a90c5884aba4690fTom Taylor            sms.sendTextMessage(mMyNumber, null, message, PendingIntent.getBroadcast(
17912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                    dialogSmsDisplayActivity, 0, new Intent(ACTION_SMS_SENT), 0), null);
18012de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
18112de25a6f806848952d8c334a90c5884aba4690fTom Taylor        return messages;
18212de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
18312de25a6f806848952d8c334a90c5884aba4690fTom Taylor
18412de25a6f806848952d8c334a90c5884aba4690fTom Taylor    // returns true if "messageCount" sms messages are received, false if timeout
18512de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private boolean waitForSms(int messageCount) {
18612de25a6f806848952d8c334a90c5884aba4690fTom Taylor        // wait up to two minutes for the sent message to be received
18712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        long now = System.currentTimeMillis();
18812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        boolean success = true;
18912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        Log.i(TAG, "waitForSms -- waiting for: " + messageCount + " parts");
19012de25a6f806848952d8c334a90c5884aba4690fTom Taylor        while (mReceivedMessages.size() < messageCount) {
19112de25a6f806848952d8c334a90c5884aba4690fTom Taylor            try {
19212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                Thread.sleep(1000);
19312de25a6f806848952d8c334a90c5884aba4690fTom Taylor            } catch (Exception e) {
19412de25a6f806848952d8c334a90c5884aba4690fTom Taylor            }
19512de25a6f806848952d8c334a90c5884aba4690fTom Taylor            if (System.currentTimeMillis() - now > 1000 * 2 * 60) {
19612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                // Give up after two minutes
19712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                success = false;
19812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                break;
19912de25a6f806848952d8c334a90c5884aba4690fTom Taylor            }
20012de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
20112de25a6f806848952d8c334a90c5884aba4690fTom Taylor        if (success) {
20212de25a6f806848952d8c334a90c5884aba4690fTom Taylor            // Wait 5 seconds for the dialog to launch and update
20312de25a6f806848952d8c334a90c5884aba4690fTom Taylor            try {
20412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                Thread.sleep(5000);
20512de25a6f806848952d8c334a90c5884aba4690fTom Taylor            } catch (Exception e) {
20612de25a6f806848952d8c334a90c5884aba4690fTom Taylor            }
20712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
20812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        return success;
20912de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
21012de25a6f806848952d8c334a90c5884aba4690fTom Taylor
21112de25a6f806848952d8c334a90c5884aba4690fTom Taylor    private void sendMessageTest(String message) {
21212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        List<String> messages = sendSmsMessageInternal(message);
21312de25a6f806848952d8c334a90c5884aba4690fTom Taylor        Log.i(TAG, "sendMessageTest -- message broken into " + messages.size() + "parts");
21412de25a6f806848952d8c334a90c5884aba4690fTom Taylor
21512de25a6f806848952d8c334a90c5884aba4690fTom Taylor        boolean receivedSms = waitForSms(messages.size());
21612de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertTrue("sms not received after two minutes", receivedSms);
21712de25a6f806848952d8c334a90c5884aba4690fTom Taylor
21812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        // Check to see if message/# matches
21912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertEquals(mMyNumber, mReceivedSender);
22012de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertEquals(messages.size(), mReceivedMessages.size());
22112de25a6f806848952d8c334a90c5884aba4690fTom Taylor        int i = 0;
22212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        for (String messageFrag : messages) {
22312de25a6f806848952d8c334a90c5884aba4690fTom Taylor            assertEquals(messageFrag, mReceivedMessages.get(i++));
22412de25a6f806848952d8c334a90c5884aba4690fTom Taylor        }
22512de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
22612de25a6f806848952d8c334a90c5884aba4690fTom Taylor
22712de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public void testSendingSmallSmsMessage() {
22812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        sendMessageTest("This is a regular size message that might be sent");
22912de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
23012de25a6f806848952d8c334a90c5884aba4690fTom Taylor
23112de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public void testSendingLargeSmsMessage() {
23212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        sendMessageTest("This is a long long message. " +
23312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
23412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
23512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
23612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
23712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
23812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
23912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
24912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25412de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25512de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25612de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25712de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25812de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. " +
25912de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "This is a long long message. ");
26012de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
26112de25a6f806848952d8c334a90c5884aba4690fTom Taylor
26212de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public void testOnNewIntentSmall() {
26312de25a6f806848952d8c334a90c5884aba4690fTom Taylor        // Test a small message and a non-numeric phone number
26412de25a6f806848952d8c334a90c5884aba4690fTom Taylor        sendOnNewIntent("this is a big fat test", "xyzzy", 2000);
26512de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
26612de25a6f806848952d8c334a90c5884aba4690fTom Taylor
26712de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public void testOnNewIntentLarge() {
26812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        // A long message like this should never really happen because SMS messages are limited
26912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        // to about 140 characters.
27012de25a6f806848952d8c334a90c5884aba4690fTom Taylor        sendOnNewIntent("now is the time for all good men to come to the aid of their country1" +
27112de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "now is the time for all good men to come to the aid of their country2" +
27212de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "now is the time for all good men to come to the aid of their country3",
27312de25a6f806848952d8c334a90c5884aba4690fTom Taylor                "513-891-7823", 2001);
27412de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
27512de25a6f806848952d8c334a90c5884aba4690fTom Taylor
27612de25a6f806848952d8c334a90c5884aba4690fTom Taylor    public void sendOnNewIntent(String message, String dest, int notificationId) {
27712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        Intent di = new Intent();
27812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        di.setClass(dialogSmsDisplayActivity, DialogSmsDisplay.class);
27912de25a6f806848952d8c334a90c5884aba4690fTom Taylor        di.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP |
28012de25a6f806848952d8c334a90c5884aba4690fTom Taylor                Intent.FLAG_ACTIVITY_CLEAR_TOP);
28112de25a6f806848952d8c334a90c5884aba4690fTom Taylor        di.putExtra(DialogSmsDisplay.SMS_FROM_ADDRESS_EXTRA, dest);
28212de25a6f806848952d8c334a90c5884aba4690fTom Taylor        di.putExtra(DialogSmsDisplay.SMS_MESSAGE_EXTRA, message);
28312de25a6f806848952d8c334a90c5884aba4690fTom Taylor        di.putExtra(DialogSmsDisplay.SMS_NOTIFICATION_ID_EXTRA, notificationId);
28412de25a6f806848952d8c334a90c5884aba4690fTom Taylor        dialogSmsDisplayActivity.onNewIntent(di);
28512de25a6f806848952d8c334a90c5884aba4690fTom Taylor
28612de25a6f806848952d8c334a90c5884aba4690fTom Taylor        // Check to see if message/# matches
28712de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertEquals(dest, dialogSmsDisplayActivity.mFromAddress);
28812de25a6f806848952d8c334a90c5884aba4690fTom Taylor        assertEquals(message, dialogSmsDisplayActivity.mMessage);
28912de25a6f806848952d8c334a90c5884aba4690fTom Taylor    }
29012de25a6f806848952d8c334a90c5884aba4690fTom Taylor}
291