Added tests for calls (audio and video), not all implemented.
This commit is contained in:
parent
6f762ddba3
commit
df3884775b
6 changed files with 760 additions and 42 deletions
|
@ -33,7 +33,7 @@
|
|||
<!-- 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_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="show_statusbar_only_on_dialer">true</bool>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
353
tests/src/org/linphone/test/CallsAudio.java
Normal file
353
tests/src/org/linphone/test/CallsAudio.java
Normal 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);
|
||||
}
|
||||
}
|
387
tests/src/org/linphone/test/CallsVideo.java
Normal file
387
tests/src/org/linphone/test/CallsVideo.java
Normal 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);
|
||||
}
|
||||
}
|
|
@ -49,6 +49,9 @@ public class LinphoneTestManager implements LinphoneCoreListener {
|
|||
private static Transports initialTransports;
|
||||
|
||||
public String lastMessageReceived;
|
||||
public boolean isDTMFReceived = false;
|
||||
public boolean autoAnswer = true;
|
||||
public boolean declineCall = false;
|
||||
|
||||
private Timer mTimer = new Timer("Linphone scheduler");
|
||||
|
||||
|
@ -62,7 +65,7 @@ public class LinphoneTestManager implements LinphoneCoreListener {
|
|||
throw new RuntimeException("Linphone Manager is already initialized");
|
||||
|
||||
instance = new LinphoneTestManager(ac, ic);
|
||||
instance.startLibLinphone(ac);
|
||||
instance.startLibLinphone(ic);
|
||||
TelephonyManager tm = (TelephonyManager) ac.getSystemService(Context.TELEPHONY_SERVICE);
|
||||
boolean gsmIdle = tm.getCallState() == TelephonyManager.CALL_STATE_IDLE;
|
||||
setGsmIdle(gsmIdle);
|
||||
|
@ -188,6 +191,9 @@ public class LinphoneTestManager implements LinphoneCoreListener {
|
|||
mLc.setFirewallPolicy(FirewallPolicy.NoFirewall);
|
||||
}
|
||||
|
||||
mLc.setUseRfc2833ForDtmfs(false);
|
||||
mLc.setUseSipInfoForDtmfs(true);
|
||||
|
||||
//accounts
|
||||
try {
|
||||
initAccounts();
|
||||
|
@ -411,10 +417,14 @@ public class LinphoneTestManager implements LinphoneCoreListener {
|
|||
// TODO Auto-generated method stub
|
||||
Log.e("Call state = " + cstate.toString());
|
||||
if (cstate == LinphoneCall.State.IncomingReceived) {
|
||||
try {
|
||||
mLc.acceptCall(call);
|
||||
} catch (LinphoneCoreException e) {
|
||||
e.printStackTrace();
|
||||
if (declineCall) {
|
||||
mLc.terminateCall(call);
|
||||
} else if (autoAnswer) {
|
||||
try {
|
||||
mLc.acceptCall(call);
|
||||
} catch (LinphoneCoreException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -471,7 +481,8 @@ public class LinphoneTestManager implements LinphoneCoreListener {
|
|||
@Override
|
||||
public void dtmfReceived(LinphoneCore lc, LinphoneCall call, int dtmf) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
Log.e("DTMF received = " + dtmf);
|
||||
isDTMFReceived = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.linphone.test;
|
||||
|
||||
import org.linphone.LinphoneLauncherActivity;
|
||||
import org.linphone.LinphoneManager;
|
||||
|
||||
import android.content.Context;
|
||||
import android.test.ActivityInstrumentationTestCase2;
|
||||
|
@ -31,6 +32,7 @@ public abstract class SampleTest extends ActivityInstrumentationTestCase2<Linpho
|
|||
|
||||
@Override
|
||||
public void tearDown() throws Exception {
|
||||
LinphoneManager.getLcIfManagerNotDestroyedOrNull().terminateAllCalls();
|
||||
solo.finishOpenedActivities();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue