Added tests for calls (audio and video), not all implemented.

This commit is contained in:
Sylvain Berfini 2013-06-17 16:18:02 +02:00
parent 6f762ddba3
commit df3884775b
6 changed files with 760 additions and 42 deletions

View file

@ -33,7 +33,7 @@
<!-- The following settings are only usefull if use_android_native_contact_edit_interface = false --> <!-- The following settings are only usefull if use_android_native_contact_edit_interface = false -->
<bool name="hide_phone_numbers_in_editor">false</bool> <bool name="hide_phone_numbers_in_editor">false</bool>
<bool name="hide_sip_addresses_in_editor">false</bool> <bool name="hide_sip_addresses_in_editor">false</bool>
<bool name="forbid_empty_new_contact_in_editor">false</bool> <bool name="forbid_empty_new_contact_in_editor">true</bool>
<bool name="disable_animations">false</bool> <bool name="disable_animations">false</bool>
<bool name="show_statusbar_only_on_dialer">true</bool> <bool name="show_statusbar_only_on_dialer">true</bool>

View file

@ -1,35 +0,0 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.InCallActivity;
import org.linphone.LinphoneActivity;
import org.linphone.core.LinphoneCall;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
/**
* @author Sylvain Berfini
*/
public class Calls extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
public void testASimpleCall() {
solo.enterText(0, iContext.getString(R.string.account_test_calls_login) + "@" + iContext.getString(R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
solo.waitForActivity("InCallActivity", 5000);
solo.assertCurrentActivity("Expected InCall Activity", InCallActivity.class);
solo.sleep(2000);
Assert.assertEquals(LinphoneCall.State.StreamsRunning, LinphoneTestManager.getLc().getCalls()[0].getState());
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
}

View file

@ -0,0 +1,353 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.InCallActivity;
import org.linphone.LinphoneActivity;
import org.linphone.LinphoneManager;
import org.linphone.core.LinphoneCall;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
/**
* @author Sylvain Berfini
*/
public class CallsAudio extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
public void testAInit() {
//Disable video
goToSettings();
selectItemInListOnUIThread(3);
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title));
solo.sleep(500);
solo.goBack();
solo.sleep(1000);
Assert.assertFalse(LinphoneManager.getLc().isVideoEnabled());
}
@SmallTest
@MediumTest
@LargeTest
public void testBOutgoingCallWithDefaultConfig() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testCDTMFRFC2833InPCMUCall() {
disableAllEnabledAudioCodecs();
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_pcmu));
goBackToDialerAfterCodecChanges();
solo.sleep(1000);
LinphoneManager.getLc().setUseRfc2833ForDtmfs(true);
LinphoneManager.getLc().setUseSipInfoForDtmfs(false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.clickOnView(solo.getView(org.linphone.R.id.Digit3));
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.sleep(1000);
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
//To enable when issue http://git.linphone.org/mantis/view.php?id=750 will be fixed
//Assert.assertTrue(LinphoneTestManager.getInstance().isDTMFReceived);
LinphoneTestManager.getInstance().isDTMFReceived = false;
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testDDTMFSIPINFO() {
LinphoneManager.getLc().setUseRfc2833ForDtmfs(false);
LinphoneManager.getLc().setUseSipInfoForDtmfs(true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.clickOnView(solo.getView(org.linphone.R.id.Digit3));
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.sleep(1000);
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
//To enable when issue http://git.linphone.org/mantis/view.php?id=751 will be fixed
//Assert.assertTrue(LinphoneTestManager.getInstance().isDTMFReceived);
LinphoneTestManager.getInstance().isDTMFReceived = false;
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testEOutgoingCallToAudioClient() {
LinphoneTestManager.getLc().enableVideo(false, false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testFOutgoingCallToVideoClient() {
LinphoneTestManager.getLc().enableVideo(true, true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testGOutgoingCallCancelled() {
LinphoneTestManager.getInstance().autoAnswer = false;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
solo.waitForActivity("InCallActivity", 5000);
solo.assertCurrentActivity("Expected InCall Activity", InCallActivity.class);
solo.sleep(2000);
Assert.assertEquals(LinphoneCall.State.OutgoingRinging, LinphoneManager.getLc().getCalls()[0].getState());
LinphoneTestManager.getInstance().autoAnswer = true;
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testHOutgoingCallDeclined() {
LinphoneTestManager.getInstance().autoAnswer = true; // Just in case
LinphoneTestManager.getInstance().declineCall = true;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
solo.sleep(500);
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.error_call_declined)));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
LinphoneTestManager.getInstance().declineCall = false;
}
@MediumTest // TODO: Remove
@LargeTest
public void testIIncomingAudioCall() {
LinphoneTestManager.getInstance().declineCall = false; // Just in case
LinphoneTestManager.getLc().enableVideo(false, false);
}
@MediumTest // TODO: Remove
@LargeTest
public void testJIncomingVideoCall() {
LinphoneTestManager.getLc().enableVideo(true, true);
}
@MediumTest
@LargeTest
public void testKSelfPauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
LinphoneCall.State state = LinphoneManager.getLc().getCalls()[0].getState();
solo.sleep(1000);
Assert.assertTrue(LinphoneCall.State.Paused == state || LinphoneCall.State.Pausing == state);
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
solo.sleep(1000);
state = LinphoneManager.getLc().getCalls()[0].getState();
Assert.assertTrue(LinphoneCall.State.Resuming == state || LinphoneCall.State.StreamsRunning == state);
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testLRemotePauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
LinphoneTestManager.getLc().pauseAllCalls();
solo.sleep(1000);
Assert.assertEquals(LinphoneCall.State.PausedByRemote, LinphoneManager.getLc().getCalls()[0].getState());
LinphoneTestManager.getLc().resumeCall(LinphoneTestManager.getLc().getCalls()[0]);
solo.sleep(1000);
LinphoneCall.State state = LinphoneManager.getLc().getCalls()[0].getState();
Assert.assertTrue(LinphoneCall.State.Resuming == state || LinphoneCall.State.StreamsRunning == state);
solo.clickLongOnScreen(200, 200); //To ensure controls are shown
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testMSwitchOnVideoInCallIsNotAllowed() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
Assert.assertFalse(solo.getView(org.linphone.R.id.video).isEnabled());
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
//TODO: Test each audio codec
private void assertCallIsCorrectlyRunning() {
solo.waitForActivity("InCallActivity", 5000);
solo.assertCurrentActivity("Expected InCall Activity", InCallActivity.class);
solo.sleep(2000);
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
Assert.assertEquals(LinphoneCall.State.StreamsRunning, call.getState());
}
private void goToSettings() {
solo.waitForActivity("LinphoneActivity", 2000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
solo.clickOnView(solo.getView(org.linphone.R.id.settings));
}
private void goToAudioCodecsSettings() {
goToSettings();
selectItemInListOnUIThread(4);
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_audio));
solo.sleep(500);
}
private void disableAllEnabledAudioCodecs() {
goToAudioCodecsSettings();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(aContext);
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_speex16_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_speex16_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_speex16));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_speex8_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_speex8_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_speex8));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_ilbc_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_ilbc_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_ilbc));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_amr_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_amr_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_amr));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_amrwb_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_amrwb_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_amrwb));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_g729_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_g729_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_g729));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_gsm_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_gsm_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_gsm));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_g722_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_g722_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_g722));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_silk24_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_silk24_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_silk24));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_silk16_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_silk16_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_silk16));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_pcmu_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_pcmu_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_pcmu));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_pcma_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_pcma_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_pcma));
solo.sleep(500);
}
}
private void goBackToDialerAfterCodecChanges()
{
solo.goBack();
solo.goBack();
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
}

View file

@ -0,0 +1,387 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.InCallActivity;
import org.linphone.LinphoneActivity;
import org.linphone.LinphoneManager;
import org.linphone.core.LinphoneCall;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
/**
* @author Sylvain Berfini
*/
public class CallsVideo extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
public void testAInit() {
//Disable video
goToSettings();
selectItemInListOnUIThread(3);
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title));
solo.sleep(500);
solo.goBack();
solo.sleep(1000);
Assert.assertTrue(LinphoneManager.getLc().isVideoEnabled());
}
@SmallTest
@MediumTest
@LargeTest
public void testBOutgoingCallWithDefaultConfig() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testCDTMFRFC2833InPCMUCall() {
disableAllEnabledAudioCodecs();
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_pcmu));
goBackToDialerAfterCodecChanges();
solo.sleep(1000);
LinphoneManager.getLc().setUseRfc2833ForDtmfs(true);
LinphoneManager.getLc().setUseSipInfoForDtmfs(false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.clickOnView(solo.getView(org.linphone.R.id.Digit3));
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.sleep(1000);
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
//To enable when issue http://git.linphone.org/mantis/view.php?id=750 will be fixed
//Assert.assertTrue(LinphoneTestManager.getInstance().isDTMFReceived);
LinphoneTestManager.getInstance().isDTMFReceived = false;
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testDDTMFSIPINFO() {
LinphoneManager.getLc().setUseRfc2833ForDtmfs(false);
LinphoneManager.getLc().setUseSipInfoForDtmfs(true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.clickOnView(solo.getView(org.linphone.R.id.Digit3));
solo.clickOnView(solo.getView(org.linphone.R.id.dialer));
solo.sleep(1000);
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
//To enable when issue http://git.linphone.org/mantis/view.php?id=751 will be fixed
//Assert.assertTrue(LinphoneTestManager.getInstance().isDTMFReceived);
LinphoneTestManager.getInstance().isDTMFReceived = false;
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testEOutgoingCallToAudioClient() {
LinphoneTestManager.getLc().enableVideo(false, false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testFOutgoingCallToVideoClient() {
LinphoneTestManager.getLc().enableVideo(true, true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testGOutgoingCallCancelled() {
LinphoneTestManager.getInstance().autoAnswer = false;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
solo.waitForActivity("InCallActivity", 5000);
solo.assertCurrentActivity("Expected InCall Activity", InCallActivity.class);
solo.sleep(2000);
Assert.assertEquals(LinphoneCall.State.OutgoingRinging, LinphoneManager.getLc().getCalls()[0].getState());
LinphoneTestManager.getInstance().autoAnswer = true;
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testHOutgoingCallDeclined() {
LinphoneTestManager.getInstance().autoAnswer = true; // Just in case
LinphoneTestManager.getInstance().declineCall = true;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
solo.sleep(500);
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.error_call_declined)));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
LinphoneTestManager.getInstance().declineCall = false;
}
@MediumTest // TODO: Remove
@LargeTest
public void testIIncomingAudioCall() {
LinphoneTestManager.getInstance().declineCall = false; // Just in case
LinphoneTestManager.getLc().enableVideo(false, false);
}
@MediumTest // TODO: Remove
@LargeTest
public void testJIncomingVideoCall() {
LinphoneTestManager.getLc().enableVideo(true, true);
}
//TODO: Test each video codec
@MediumTest
@LargeTest
public void testKSelfPauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
LinphoneCall.State state = LinphoneManager.getLc().getCalls()[0].getState();
solo.sleep(1000);
Assert.assertTrue(LinphoneCall.State.Paused == state || LinphoneCall.State.Pausing == state);
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
solo.sleep(1000);
state = LinphoneManager.getLc().getCalls()[0].getState();
Assert.assertTrue(LinphoneCall.State.Resuming == state || LinphoneCall.State.StreamsRunning == state);
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testLRemotePauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
LinphoneTestManager.getLc().pauseAllCalls();
solo.sleep(1000);
Assert.assertEquals(LinphoneCall.State.PausedByRemote, LinphoneManager.getLc().getCalls()[0].getState());
LinphoneTestManager.getLc().resumeCall(LinphoneTestManager.getLc().getCalls()[0]);
solo.sleep(1000);
LinphoneCall.State state = LinphoneManager.getLc().getCalls()[0].getState();
Assert.assertTrue(LinphoneCall.State.Resuming == state || LinphoneCall.State.StreamsRunning == state);
solo.clickLongOnScreen(200, 200); //To ensure controls are shown
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
@MediumTest
@LargeTest
public void testMSwitchOffVideoInCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.clickOnView(solo.getView(org.linphone.R.id.Call));
assertCallIsCorrectlyRunning();
Assert.assertTrue(solo.getView(org.linphone.R.id.video).isEnabled());
solo.clickOnView(solo.getView(org.linphone.R.id.video));
Assert.assertFalse(LinphoneManager.getLc().getCurrentCall().cameraEnabled());
solo.clickOnView(solo.getView(org.linphone.R.id.hangUp));
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
private void assertCallIsCorrectlyRunning() {
solo.waitForActivity("InCallActivity", 5000);
solo.assertCurrentActivity("Expected InCall Activity", InCallActivity.class);
solo.sleep(2000);
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
Assert.assertEquals(LinphoneCall.State.StreamsRunning, call.getState());
}
private void goToSettings() {
solo.waitForActivity("LinphoneActivity", 2000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
solo.clickOnView(solo.getView(org.linphone.R.id.settings));
}
private void goToAudioCodecsSettings() {
goToSettings();
selectItemInListOnUIThread(4);
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_audio));
solo.sleep(500);
}
private void goToVideoCodecsSettings() {
goToSettings();
selectItemInListOnUIThread(6);
if (solo.searchText(aContext.getString(org.linphone.R.string.pref_video), 2)) // Needed in case pref_video_enable_title contains pref_video
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video), 2);
else
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video));
solo.sleep(500);
}
private void disableAllEnabledAudioCodecs() {
goToAudioCodecsSettings();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(aContext);
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_speex16_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_speex16_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_speex16));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_speex8_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_speex8_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_speex8));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_ilbc_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_ilbc_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_ilbc));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_amr_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_amr_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_amr));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_amrwb_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_amrwb_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_amrwb));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_g729_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_g729_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_g729));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_gsm_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_gsm_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_gsm));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_g722_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_g722_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_g722));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_silk24_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_silk24_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_silk24));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_silk16_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_silk16_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_silk16));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_pcmu_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_pcmu_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_pcmu));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_codec_pcma_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_codec_pcma_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_codec_pcma));
solo.sleep(500);
}
}
private void disableAllEnabledVideoCodecs() {
goToVideoCodecsSettings();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(aContext);
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_video_codec_vp8_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_video_codec_vp8_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_vp8_title));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_video_codec_h264_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_video_codec_h264_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_h264_title));
solo.sleep(500);
}
if (prefs.getBoolean(aContext.getString(org.linphone.R.string.pref_video_codec_mpeg4_key), aContext.getResources().getBoolean(org.linphone.R.bool.pref_video_codec_mpeg4_default))) {
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_mpeg4_title));
solo.sleep(500);
}
}
private void goBackToDialerAfterCodecChanges()
{
solo.goBack();
solo.goBack();
solo.waitForActivity("LinphoneActivity", 5000);
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
}
}

View file

@ -49,6 +49,9 @@ public class LinphoneTestManager implements LinphoneCoreListener {
private static Transports initialTransports; private static Transports initialTransports;
public String lastMessageReceived; public String lastMessageReceived;
public boolean isDTMFReceived = false;
public boolean autoAnswer = true;
public boolean declineCall = false;
private Timer mTimer = new Timer("Linphone scheduler"); private Timer mTimer = new Timer("Linphone scheduler");
@ -62,7 +65,7 @@ public class LinphoneTestManager implements LinphoneCoreListener {
throw new RuntimeException("Linphone Manager is already initialized"); throw new RuntimeException("Linphone Manager is already initialized");
instance = new LinphoneTestManager(ac, ic); instance = new LinphoneTestManager(ac, ic);
instance.startLibLinphone(ac); instance.startLibLinphone(ic);
TelephonyManager tm = (TelephonyManager) ac.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager tm = (TelephonyManager) ac.getSystemService(Context.TELEPHONY_SERVICE);
boolean gsmIdle = tm.getCallState() == TelephonyManager.CALL_STATE_IDLE; boolean gsmIdle = tm.getCallState() == TelephonyManager.CALL_STATE_IDLE;
setGsmIdle(gsmIdle); setGsmIdle(gsmIdle);
@ -188,6 +191,9 @@ public class LinphoneTestManager implements LinphoneCoreListener {
mLc.setFirewallPolicy(FirewallPolicy.NoFirewall); mLc.setFirewallPolicy(FirewallPolicy.NoFirewall);
} }
mLc.setUseRfc2833ForDtmfs(false);
mLc.setUseSipInfoForDtmfs(true);
//accounts //accounts
try { try {
initAccounts(); initAccounts();
@ -411,6 +417,9 @@ public class LinphoneTestManager implements LinphoneCoreListener {
// TODO Auto-generated method stub // TODO Auto-generated method stub
Log.e("Call state = " + cstate.toString()); Log.e("Call state = " + cstate.toString());
if (cstate == LinphoneCall.State.IncomingReceived) { if (cstate == LinphoneCall.State.IncomingReceived) {
if (declineCall) {
mLc.terminateCall(call);
} else if (autoAnswer) {
try { try {
mLc.acceptCall(call); mLc.acceptCall(call);
} catch (LinphoneCoreException e) { } catch (LinphoneCoreException e) {
@ -418,6 +427,7 @@ public class LinphoneTestManager implements LinphoneCoreListener {
} }
} }
} }
}
@Override @Override
public void callStatsUpdated(LinphoneCore lc, LinphoneCall call, public void callStatsUpdated(LinphoneCore lc, LinphoneCall call,
@ -471,7 +481,8 @@ public class LinphoneTestManager implements LinphoneCoreListener {
@Override @Override
public void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf) { public void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
Log.e("DTMF received = " + dtmf);
isDTMFReceived = true;
} }
@Override @Override

View file

@ -1,6 +1,7 @@
package org.linphone.test; package org.linphone.test;
import org.linphone.LinphoneLauncherActivity; import org.linphone.LinphoneLauncherActivity;
import org.linphone.LinphoneManager;
import android.content.Context; import android.content.Context;
import android.test.ActivityInstrumentationTestCase2; import android.test.ActivityInstrumentationTestCase2;
@ -31,6 +32,7 @@ public abstract class SampleTest extends ActivityInstrumentationTestCase2<Linpho
@Override @Override
public void tearDown() throws Exception { public void tearDown() throws Exception {
LinphoneManager.getLcIfManagerNotDestroyedOrNull().terminateAllCalls();
solo.finishOpenedActivities(); solo.finishOpenedActivities();
} }