Update gradle.build and dependencies
This commit is contained in:
parent
6426b27086
commit
5da51b9c33
23 changed files with 74 additions and 2213 deletions
26
build.gradle
26
build.gradle
|
@ -18,21 +18,32 @@ buildscript {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:2.2.2'
|
classpath 'com.android.tools.build:gradle:2.3.0'
|
||||||
if (googleFile.exists()) {
|
if (googleFile.exists()) {
|
||||||
classpath 'com.google.gms:google-services:3.0.0'
|
classpath 'com.google.gms:google-services:3.0.0'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile fileTree(include: '*.jar', dir: 'libs')
|
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2') {
|
||||||
androidTestCompile fileTree(include: '*.jar', dir: 'libs-test')
|
exclude module: 'support-annotations'
|
||||||
|
}
|
||||||
|
compile group: 'org.apache.commons', name: 'commons-compress', version: '1.5'
|
||||||
if (firebaseEnable()) {
|
if (firebaseEnable()) {
|
||||||
compile 'com.google.firebase:firebase-messaging:9.0.0'
|
compile 'com.google.firebase:firebase-messaging:9.0.0'
|
||||||
} else {
|
} else {
|
||||||
|
compile "com.google.android.gms:play-services-gcm:10.2.0"
|
||||||
compile 'com.android.support:support-v4:+'
|
compile 'com.android.support:support-v4:+'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,6 +67,7 @@ if (!firebaseEnable()) {
|
||||||
excludeFiles.add('**/Firebase*')
|
excludeFiles.add('**/Firebase*')
|
||||||
println '[Push Notification] Firebase disabled'
|
println '[Push Notification] Firebase disabled'
|
||||||
} else {
|
} else {
|
||||||
|
excludeFiles.add('**/gcm*')
|
||||||
println '[Push Notification] Firebase enabled'
|
println '[Push Notification] Firebase enabled'
|
||||||
}
|
}
|
||||||
excludeFiles.add('**/mediastream/MediastreamerActivity.java')
|
excludeFiles.add('**/mediastream/MediastreamerActivity.java')
|
||||||
|
@ -67,6 +79,8 @@ android {
|
||||||
buildToolsVersion "25.0.2"
|
buildToolsVersion "25.0.2"
|
||||||
applicationId getPackageName()
|
applicationId getPackageName()
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
||||||
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
|
@ -117,7 +131,7 @@ android {
|
||||||
release.setRoot('build-types/release')
|
release.setRoot('build-types/release')
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
/*sourceSets {
|
||||||
androidTest {
|
androidTest {
|
||||||
manifest.srcFile 'AndroidManifest.xml'
|
manifest.srcFile 'AndroidManifest.xml'
|
||||||
def srcDirs = submoduleDir
|
def srcDirs = submoduleDir
|
||||||
|
@ -134,13 +148,13 @@ android {
|
||||||
|
|
||||||
// Exclude some useless files
|
// Exclude some useless files
|
||||||
packagingOptions {
|
packagingOptions {
|
||||||
exclude '**/gdb.*'
|
exclude '**//*gdb.*'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
debug.setRoot('build-types/debug')
|
debug.setRoot('build-types/debug')
|
||||||
release.setRoot('build-types/release')
|
release.setRoot('build-types/release')
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
task runApplication() {
|
task runApplication() {
|
||||||
|
|
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
||||||
#Wed Mar 29 17:34:30 CEST 2017
|
#Thu Apr 27 14:17:25 CEST 2017
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-3.4-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-3.4-all.zip
|
||||||
|
|
|
@ -12,10 +12,18 @@ buildscript {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile fileTree(dir: 'libs', include: 'commons-compress-1.11.jar')
|
compile group: 'org.apache.commons', name: 'commons-compress', version: '1.5'
|
||||||
}
|
}
|
||||||
|
|
||||||
def submoduleDir = ['submodules/mediastreamer2/java/src',
|
def submoduleDir = ['submodules/mediastreamer2/java/src',
|
||||||
|
|
|
@ -16,12 +16,19 @@ buildscript {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
androidTestCompile group: 'org.apache.commons', name: 'commons-compress', version: '1.5'
|
||||||
compile project(":libLinphoneAndroidSdk")
|
compile project(":libLinphoneAndroidSdk")
|
||||||
compile fileTree(dir: 'libs', include: '*.jar')
|
|
||||||
androidTestCompile fileTree(dir: 'libs', include: '*.jar')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
libs/gcm.jar
BIN
libs/gcm.jar
Binary file not shown.
|
@ -17,10 +17,19 @@ buildscript {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
mavenLocal()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.library'
|
apply plugin: 'com.android.library'
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile fileTree(dir: 'libs', include: '*.jar')
|
compile group: 'org.apache.commons', name: 'commons-compress', version: '1.5'
|
||||||
|
compile "com.google.android.gms:play-services-gcm:10.2.0"
|
||||||
compile 'com.google.firebase:firebase-messaging:9.0.0'
|
compile 'com.google.firebase:firebase-messaging:9.0.0'
|
||||||
compile 'com.android.support:support-v4:+'
|
compile 'com.android.support:support-v4:+'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,181 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.LinphonePreferences;
|
|
||||||
import org.linphone.assistant.AssistantActivity;
|
|
||||||
import org.linphone.core.LinphoneProxyConfig;
|
|
||||||
import org.linphone.mediastream.video.capture.hwconf.Hacks;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.widget.EditText;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import android.widget.Button;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class AccountAssistant extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testAWizardDisplayedAfterInstall() {
|
|
||||||
LinphonePreferences.instance().setXmlrpcUrl("https://sip3.linphone.org:444/inapp.php");
|
|
||||||
solo.waitForActivity("AssistantActivity", 3000);
|
|
||||||
solo.assertCurrentActivity("Expected Assistant Activity", AssistantActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testBLoginWithLinphoneAccount() {
|
|
||||||
solo.waitForActivity("AssistantActivity", 3000);
|
|
||||||
solo.assertCurrentActivity("Expected Assistant Activity", AssistantActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.login_linphone));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.use_username));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_username), iContext.getString(org.linphone.R.string.account_linphone_login));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_password), iContext.getString(org.linphone.R.string.account_linphone_pwd));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.assistant_apply));
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.assistant_skip));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
//Test echo calibration launch at first start
|
|
||||||
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.assistant_codec_down_question)));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.answerNo));
|
|
||||||
|
|
||||||
solo.waitForActivity("LinphoneActivity", 8000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_linphone_login) + "@sip.linphone.org"));
|
|
||||||
|
|
||||||
solo.sleep(3000); //Wait for registration to be done
|
|
||||||
LinphoneProxyConfig[] proxyConfigs = LinphoneManager.getLc().getProxyConfigList();
|
|
||||||
Assert.assertEquals(1, proxyConfigs.length);
|
|
||||||
LinphoneProxyConfig proxyConfig = proxyConfigs[0];
|
|
||||||
waitForRegistration(proxyConfig);
|
|
||||||
|
|
||||||
//Check the wizard added sip.linphone.org custom settings
|
|
||||||
LinphonePreferences prefs = LinphonePreferences.instance();
|
|
||||||
String stunServer = prefs.getStunServer();
|
|
||||||
Assert.assertEquals(aContext.getString(org.linphone.R.string.default_stun), stunServer);
|
|
||||||
|
|
||||||
String transport = prefs.getAccountTransportKey(0);
|
|
||||||
Assert.assertEquals(aContext.getString(org.linphone.R.string.pref_transport_tls_key), transport);
|
|
||||||
|
|
||||||
String proxy = prefs.getAccountProxy(0);
|
|
||||||
Assert.assertEquals("<sip:" + aContext.getString(org.linphone.R.string.default_domain) + ";transport=tls>", proxy);
|
|
||||||
|
|
||||||
String username = prefs.getAccountUsername(0);
|
|
||||||
Assert.assertEquals(iContext.getString(org.linphone.R.string.account_linphone_login), username);
|
|
||||||
|
|
||||||
boolean ice = prefs.isIceEnabled();
|
|
||||||
Assert.assertEquals(ice, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testCWizardDoesntShowWhenAccountIsConfigured() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testDLoginWithGenericAccount() {
|
|
||||||
startAssistant();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.login_generic));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_username), iContext.getString(org.linphone.R.string.account_generic_login));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_password), iContext.getString(org.linphone.R.string.account_generic_pwd));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_domain), iContext.getString(org.linphone.R.string.account_generic_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.assistant_apply));
|
|
||||||
|
|
||||||
if (!Hacks.hasBuiltInEchoCanceller())
|
|
||||||
solo.waitForActivity("LinphoneActivity", 8000);
|
|
||||||
else
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_generic_login) + "@" + iContext.getString(org.linphone.R.string.account_generic_domain)));
|
|
||||||
|
|
||||||
solo.sleep(3000); //Wait for registration to be done
|
|
||||||
LinphoneProxyConfig[] proxyConfigs = LinphoneManager.getLc().getProxyConfigList();
|
|
||||||
Assert.assertEquals(proxyConfigs.length, 2);
|
|
||||||
LinphoneProxyConfig proxyConfig = proxyConfigs[1];
|
|
||||||
waitForRegistration(proxyConfig);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testECreateNewAccount() {
|
|
||||||
startAssistant();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.create_account));
|
|
||||||
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.username), iContext.getString(org.linphone.R.string.account_create_login).substring(0, 2));
|
|
||||||
solo.sleep(200);
|
|
||||||
TextView error = (TextView) solo.getView(org.linphone.R.id.username_error);
|
|
||||||
int sleepingTime = 1500;
|
|
||||||
Button createAccount = (Button) solo.getView(org.linphone.R.id.assistant_create);
|
|
||||||
|
|
||||||
Assert.assertEquals(error.getText(), aContext.getString(org.linphone.R.string.wizard_username_incorrect));
|
|
||||||
Assert.assertFalse(createAccount.isEnabled());
|
|
||||||
|
|
||||||
solo.clearEditText((EditText) solo.getView(org.linphone.R.id.username));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.username), iContext.getString(org.linphone.R.string.account_linphone_login));
|
|
||||||
solo.sleep(sleepingTime * 2);
|
|
||||||
Assert.assertEquals(error.getText(), aContext.getString(org.linphone.R.string.wizard_username_unavailable));
|
|
||||||
Assert.assertFalse(createAccount.isEnabled());
|
|
||||||
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.password), iContext.getString(org.linphone.R.string.account_create_pwd).substring(0, 2));
|
|
||||||
solo.sleep(sleepingTime);
|
|
||||||
error = (TextView) solo.getView(org.linphone.R.id.confirm_password_error);
|
|
||||||
Assert.assertEquals(error.getText(), aContext.getString(org.linphone.R.string.wizard_passwords_unmatched));
|
|
||||||
Assert.assertFalse(createAccount.isEnabled());
|
|
||||||
|
|
||||||
solo.clearEditText((EditText) solo.getView(org.linphone.R.id.password));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.password), iContext.getString(org.linphone.R.string.account_create_pwd).substring(0, 2));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.confirm_password), iContext.getString(org.linphone.R.string.account_create_pwd).substring(0,2));
|
|
||||||
solo.sleep(sleepingTime);
|
|
||||||
error = (TextView) solo.getView(org.linphone.R.id.password_error);
|
|
||||||
Assert.assertEquals(error.getText(), aContext.getString(org.linphone.R.string.wizard_password_incorrect));
|
|
||||||
Assert.assertFalse(createAccount.isEnabled());
|
|
||||||
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.email), iContext.getString(org.linphone.R.string.account_create_email).substring(0, 12));
|
|
||||||
solo.sleep(sleepingTime);
|
|
||||||
error = (TextView) solo.getView(org.linphone.R.id.email_error);
|
|
||||||
Assert.assertEquals(error.getText(), aContext.getString(org.linphone.R.string.wizard_email_incorrect));
|
|
||||||
Assert.assertFalse(createAccount.isEnabled());
|
|
||||||
|
|
||||||
solo.clearEditText((EditText) solo.getView(org.linphone.R.id.username));
|
|
||||||
solo.clearEditText((EditText) solo.getView(org.linphone.R.id.password));
|
|
||||||
solo.clearEditText((EditText) solo.getView(org.linphone.R.id.confirm_password));
|
|
||||||
solo.clearEditText((EditText) solo.getView(org.linphone.R.id.email));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.username), iContext.getString(org.linphone.R.string.account_create_login));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.password), iContext.getString(org.linphone.R.string.account_create_pwd));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.confirm_password), iContext.getString(org.linphone.R.string.account_create_pwd));
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.email), iContext.getString(org.linphone.R.string.account_create_email));
|
|
||||||
solo.sleep(sleepingTime);
|
|
||||||
Assert.assertEquals(error.getText(), "");
|
|
||||||
Assert.assertTrue(createAccount.isEnabled());
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testFCancelWizard() {
|
|
||||||
startAssistant();
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.assistant_cancel));
|
|
||||||
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startAssistant() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.side_menu_button));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.menu_assistant));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,86 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.FragmentsAvailable;
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.LinphonePreferences;
|
|
||||||
import org.linphone.core.LinphoneProxyConfig;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class AccountManagement extends SampleTest {
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testAEditAccount() {
|
|
||||||
goToSettings();
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_generic_login) + "@" + iContext.getString(org.linphone.R.string.account_generic_domain));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_username));
|
|
||||||
solo.enterText(0, "new");
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(android.R.id.button1));
|
|
||||||
|
|
||||||
solo.goBack();
|
|
||||||
solo.goBack();
|
|
||||||
solo.waitForFragmentByTag(FragmentsAvailable.DIALER.toString(), 2000);
|
|
||||||
|
|
||||||
LinphoneProxyConfig[] proxyConfigs = LinphoneManager.getLc().getProxyConfigList();
|
|
||||||
LinphoneProxyConfig proxyConfig = proxyConfigs[0];
|
|
||||||
waitForRegistration(proxyConfig);
|
|
||||||
Assert.assertEquals(proxyConfigs.length, 2);
|
|
||||||
proxyConfig = proxyConfigs[1];
|
|
||||||
waitForRegistration(proxyConfig);
|
|
||||||
Assert.assertTrue(proxyConfig.getIdentity(), proxyConfig.getIdentity().contains("new"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testBDeleteAccount() {
|
|
||||||
goToSettings();
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_generic_login) + "new");
|
|
||||||
selectItemInListOnUIThread(16);
|
|
||||||
solo.clickLongOnText(aContext.getString(org.linphone.R.string.pref_delete_account));
|
|
||||||
|
|
||||||
solo.goBack();
|
|
||||||
solo.goBack();
|
|
||||||
|
|
||||||
LinphoneProxyConfig[] proxyConfigs = LinphoneManager.getLc().getProxyConfigList();
|
|
||||||
Assert.assertEquals(1, proxyConfigs.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testCDisableAccount() {
|
|
||||||
goToSettings();
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_linphone_login));
|
|
||||||
selectItemInListOnUIThread(14);
|
|
||||||
solo.clickLongOnText(aContext.getString(org.linphone.R.string.pref_disable_account));
|
|
||||||
|
|
||||||
solo.goBack();
|
|
||||||
solo.goBack();
|
|
||||||
|
|
||||||
Assert.assertFalse(LinphonePreferences.instance().isAccountEnabled(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testDEnableAccount() {
|
|
||||||
goToSettings();
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_linphone_login));
|
|
||||||
selectItemInListOnUIThread(14);
|
|
||||||
solo.clickLongOnText(aContext.getString(org.linphone.R.string.pref_disable_account));
|
|
||||||
|
|
||||||
solo.goBack();
|
|
||||||
solo.goBack();
|
|
||||||
|
|
||||||
Assert.assertTrue(LinphonePreferences.instance().isAccountEnabled(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToSettings() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.side_menu_button));
|
|
||||||
solo.clickOnText("Settings");
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class AinitTestEnv extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testAInitLinphoneCore() {
|
|
||||||
LinphoneTestManager.createAndStart(aContext, iContext, 1);
|
|
||||||
|
|
||||||
solo.sleep(5000);
|
|
||||||
Assert.assertEquals(1, LinphoneTestManager.getLc().getProxyConfigList().length);
|
|
||||||
waitForRegistration(LinphoneTestManager.getLc().getProxyConfigList()[0]);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,486 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.CallActivity;
|
|
||||||
import org.linphone.CallIncomingActivity;
|
|
||||||
import org.linphone.CallOutgoingActivity;
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.core.LinphoneCall;
|
|
||||||
import org.linphone.core.LinphoneCore;
|
|
||||||
import org.linphone.core.LinphoneCoreException;
|
|
||||||
import org.linphone.core.PayloadType;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @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_title));
|
|
||||||
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() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertOutgoingCallIsCorrectlyRunning();
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testCDTMFRFC2833InPCMUCall() {
|
|
||||||
disableAllEnabledAudioCodecs();
|
|
||||||
solo.clickOnText("PCMU");
|
|
||||||
goBackToDialerAfterCodecChanges();
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
LinphoneManager.getLc().setUseRfc2833ForDtmfs(true);
|
|
||||||
LinphoneManager.getLc().setUseSipInfoForDtmfs(false);
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.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.hang_up));
|
|
||||||
|
|
||||||
//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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.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.hang_up));
|
|
||||||
|
|
||||||
//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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.waitForActivity("CallOutgoingActivity", 2000);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.waitForActivity("CallOutgoingActivity", 5000);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.waitForActivity("CallOutgoingActivity", 200);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallOutgoingActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
waitForCallState(LinphoneManager.getLc().getCalls()[0],LinphoneCall.State.OutgoingRinging);
|
|
||||||
|
|
||||||
LinphoneTestManager.getInstance().autoAnswer = true;
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.outgoing_hang_up));
|
|
||||||
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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.sleep(1500);
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testIIncomingAudioCall() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
LinphoneTestManager.getLc().enableVideo(false, false);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("CallIncomingActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming Call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
/*View topLayout = solo.getView(org.linphone.R.id.topLayout);
|
|
||||||
int topLayoutHeigh = topLayout.getMeasuredHeight();
|
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
|
||||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
|
||||||
int topOffset = dm.heightPixels - topLayoutHeigh;
|
|
||||||
int slidersTop = topLayoutHeigh - 80 - topOffset; // 80 is the bottom margin set in incoming.xml
|
|
||||||
solo.drag(10, topLayout.getMeasuredWidth() - 10, slidersTop, slidersTop, 10);*/
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.accept));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testJIncomingVideoCall() {
|
|
||||||
LinphoneTestManager.getLc().enableVideo(true, true);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("CallIncomingActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming Call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
/*solo.sleep(1000);
|
|
||||||
View topLayout = solo.getView(org.linphone.R.id.topLayout);
|
|
||||||
int topLayoutHeigh = topLayout.getMeasuredHeight();
|
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
|
||||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
|
||||||
int topOffset = dm.heightPixels - topLayoutHeigh;
|
|
||||||
int slidersTop = topLayoutHeigh - 80 - topOffset; // 80 is the bottom margin set in incoming.xml
|
|
||||||
solo.drag(10, topLayout.getMeasuredWidth() - 10, slidersTop, slidersTop, 10);*/
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.accept));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testKSelfPauseResumeCall() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.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));
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallPaused(LinphoneManager.getLc().getCalls()[0]);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call_pause));
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallResumed(LinphoneManager.getLc().getCalls()[0]);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testLRemotePauseResumeCall() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
|
|
||||||
LinphoneTestManager.getLc().pauseAllCalls();
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallState(LinphoneManager.getLc().getCalls()[0], LinphoneCall.State.PausedByRemote);
|
|
||||||
|
|
||||||
LinphoneTestManager.getLc().resumeCall(LinphoneTestManager.getLc().getCalls()[0]);
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallResumed(LinphoneManager.getLc().getCalls()[0]);
|
|
||||||
|
|
||||||
solo.clickLongOnScreen(200, 200); //To ensure controls are shown
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testMSwitchOnVideoInCallIsNotAllowed() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.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.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testNDeclineIncomingCall() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
LinphoneTestManager.getLc().enableVideo(false, false);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("CallIncomingActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming Call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
View topLayout = solo.getView(org.linphone.R.id.topLayout);
|
|
||||||
int topLayoutHeigh = topLayout.getMeasuredHeight();
|
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
|
||||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
|
||||||
int topOffset = dm.heightPixels - topLayoutHeigh;
|
|
||||||
int slidersTop = topLayoutHeigh - 80 - topOffset; // 80 is the bottom margin set in incoming.xml
|
|
||||||
solo.drag(topLayout.getMeasuredWidth() - 10, 10, slidersTop, slidersTop, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testOCancelledIncomingCall() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
LinphoneTestManager.getLc().enableVideo(false, false);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("CallIncomingActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming Call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
LinphoneTestManager.getLc().terminateAllCalls();
|
|
||||||
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testPDisplayMissedCallsNumber() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText("1"));
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO: Test each audio codec
|
|
||||||
|
|
||||||
private void assertOutgoingCallIsCorrectlyRunning() {
|
|
||||||
solo.waitForActivity("CallOutgoingActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected OutgoingCall Activity", CallOutgoingActivity.class);
|
|
||||||
|
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
|
||||||
waitForCallState(call, LinphoneCall.State.OutgoingProgress);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertCallIsCorrectlyRunning() {
|
|
||||||
solo.waitForActivity("CallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallActivity.class);
|
|
||||||
|
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
|
||||||
waitForCallState(call, LinphoneCall.State.StreamsRunning);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToSettings() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.side_menu_button));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.menu_settings));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToAudioCodecsSettings() {
|
|
||||||
goToSettings();
|
|
||||||
|
|
||||||
selectItemInListOnUIThread(4);
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_audio_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isAudioCodecEnabled(String mime, int rate) {
|
|
||||||
LinphoneCore lc = LinphoneTestManager.getLc();
|
|
||||||
for (final PayloadType pt : lc.getAudioCodecs()) {
|
|
||||||
if (pt.getMime().equals(mime) && pt.getRate() == rate)
|
|
||||||
return lc.isPayloadTypeEnabled(pt);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableAllEnabledAudioCodecs() {
|
|
||||||
goToAudioCodecsSettings();
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("opus", 48000)) {
|
|
||||||
solo.clickOnText("opus");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("speex", 16000)) {
|
|
||||||
solo.clickOnText("speex");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("speex", 8000)) {
|
|
||||||
solo.clickOnText("speex", 1);
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("iLBC", 8000)) {
|
|
||||||
solo.clickOnText("iLBC");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("AMR", 8000)) {
|
|
||||||
solo.clickOnText("AMR");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("AMRWB", 8000)) {
|
|
||||||
solo.clickOnText("AMRWB");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("G729", 8000)) {
|
|
||||||
solo.clickOnText("G729");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("GSM", 8000)) {
|
|
||||||
solo.clickOnText("GSM");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("G722", 8000)) {
|
|
||||||
solo.clickOnText("G722");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("SILK", 24000)) {
|
|
||||||
solo.clickOnText("SILK");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("SILK", 16000)) {
|
|
||||||
solo.clickOnText("SILK", 1);
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("SILK", 8000)) {
|
|
||||||
solo.clickOnText("SILK", 2);
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("PCMU", 8000)) {
|
|
||||||
solo.clickOnText("PCMU");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("PCMA", 8000)) {
|
|
||||||
solo.clickOnText("PCMA");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goBackToDialerAfterCodecChanges() {
|
|
||||||
solo.goBack();
|
|
||||||
solo.goBack();
|
|
||||||
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,569 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.CallActivity;
|
|
||||||
import org.linphone.CallIncomingActivity;
|
|
||||||
import org.linphone.CallOutgoingActivity;
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.core.LinphoneCall;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
import org.linphone.core.LinphoneCore;
|
|
||||||
import org.linphone.core.LinphoneCoreException;
|
|
||||||
import org.linphone.core.PayloadType;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class CallsVideo extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testAInit() {
|
|
||||||
//Enable video
|
|
||||||
goToSettings();
|
|
||||||
|
|
||||||
// enable auto accept and auto share video
|
|
||||||
goToVideoCodecsSettings();
|
|
||||||
solo.sleep(500);
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_enable_title));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_initiate_call_with_video_title));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_automatically_accept_video_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
solo.goBack();
|
|
||||||
|
|
||||||
solo.goBack();
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertTrue(LinphoneManager.getLc().isVideoEnabled());
|
|
||||||
Assert.assertTrue(LinphoneManager.getLc().getVideoAutoAcceptPolicy());
|
|
||||||
Assert.assertTrue(LinphoneManager.getLc().getVideoAutoInitiatePolicy());
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testBOutgoingCallWithDefaultConfig() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
LinphoneTestManager.getLc().enableVideo(true, true);
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertOutgoingCallIsCorrectlyRunning();
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
assertCallIsRunningWithVideo();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testCDTMFRFC2833InPCMUCall() {
|
|
||||||
disableAllEnabledAudioCodecs();
|
|
||||||
solo.clickOnText("PCMU");
|
|
||||||
goBackToDialerAfterCodecChanges();
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
LinphoneManager.getLc().setUseRfc2833ForDtmfs(true);
|
|
||||||
LinphoneManager.getLc().setUseSipInfoForDtmfs(false);
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.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.hang_up));
|
|
||||||
|
|
||||||
//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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.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.hang_up));
|
|
||||||
|
|
||||||
//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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertOutgoingCallIsCorrectlyRunning();
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertOutgoingCallIsCorrectlyRunning();
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
assertCallIsRunningWithVideo();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
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.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.waitForActivity("InCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
waitForCallState(LinphoneManager.getLc().getCalls()[0],LinphoneCall.State.OutgoingRinging);
|
|
||||||
|
|
||||||
LinphoneTestManager.getInstance().autoAnswer = true;
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testHOutgoingCallDeclined() {
|
|
||||||
LinphoneTestManager.getInstance().autoAnswer = true; // Just in case
|
|
||||||
LinphoneTestManager.getInstance().declineCall = true;
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.sleep(1500);
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testIIncomingAudioCall() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
LinphoneTestManager.getLc().enableVideo(false, false);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("IncomingCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming Call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.accept));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testJIncomingVideoCall() {
|
|
||||||
LinphoneTestManager.getLc().enableVideo(true, true);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("IncomingCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming Call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.accept));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
assertCallIsRunningWithVideo();
|
|
||||||
}
|
|
||||||
|
|
||||||
// @SmallTest
|
|
||||||
// @MediumTest
|
|
||||||
// @LargeTest
|
|
||||||
// public void testJIncommingCallWithCallPlayer() throws InterruptedException {
|
|
||||||
// testJIncomingVideoCall();
|
|
||||||
// Thread.sleep(2000);
|
|
||||||
// callPlayerTest();
|
|
||||||
// }
|
|
||||||
|
|
||||||
//TODO: Test each video codec
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testKSelfPauseResumeCall() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallPaused(LinphoneManager.getLc().getCalls()[0]);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call_pause));
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallResumed(LinphoneManager.getLc().getCalls()[0]);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testLRemotePauseResumeCall() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
|
|
||||||
LinphoneTestManager.getLc().pauseAllCalls();
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallState(LinphoneManager.getLc().getCalls()[0], LinphoneCall.State.PausedByRemote);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
LinphoneTestManager.getLc().resumeCall(LinphoneTestManager.getLc().getCalls()[0]);
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
waitForCallResumed(LinphoneManager.getLc().getCalls()[0]);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testMSwitchOffVideoInCall() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
assertCallIsRunningWithVideo();
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.getView(org.linphone.R.id.video).isEnabled());
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video_frame));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.video));
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertFalse(LinphoneManager.getLc().getCurrentCall().getCurrentParamsCopy().getVideoEnabled());
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertCallIsRunningWithVideo() {
|
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
|
||||||
Assert.assertTrue(call.getCurrentParamsCopy().getVideoEnabled());
|
|
||||||
}
|
|
||||||
private void assertOutgoingCallIsCorrectlyRunning() {
|
|
||||||
solo.waitForActivity("CallOutgoingActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected OutgoingCall Activity", CallOutgoingActivity.class);
|
|
||||||
|
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
|
||||||
|
|
||||||
waitForCallState(call, LinphoneCall.State.OutgoingProgress);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertCallIsCorrectlyRunning() {
|
|
||||||
solo.waitForActivity("CallActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallActivity.class);
|
|
||||||
|
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
|
||||||
|
|
||||||
waitForCallState(call, LinphoneCall.State.StreamsRunning);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToSettings() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.side_menu_button));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.menu_settings));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToAudioCodecsSettings() {
|
|
||||||
goToSettings();
|
|
||||||
|
|
||||||
selectItemInListOnUIThread(4);
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_audio_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToVideoCodecsSettings() {
|
|
||||||
//goToSettings();
|
|
||||||
|
|
||||||
selectItemInListOnUIThread(6);
|
|
||||||
if (solo.searchText(aContext.getString(org.linphone.R.string.pref_video_title), 2)) // Needed in case pref_video_enable_title contains pref_video
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_title), 2);
|
|
||||||
else
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isAudioCodecEnabled(String mime, int rate) {
|
|
||||||
LinphoneCore lc = LinphoneTestManager.getLc();
|
|
||||||
for (final PayloadType pt : lc.getAudioCodecs()) {
|
|
||||||
if (pt.getMime().equals(mime) && pt.getRate() == rate)
|
|
||||||
return lc.isPayloadTypeEnabled(pt);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableAllEnabledAudioCodecs() {
|
|
||||||
goToAudioCodecsSettings();
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("opus", 48000)) {
|
|
||||||
solo.clickOnText("opus");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("speex", 16000)) {
|
|
||||||
solo.clickOnText("speex");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("speex", 8000)) {
|
|
||||||
solo.clickOnText("speex", 1);
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("iLBC", 8000)) {
|
|
||||||
solo.clickOnText("iLBC");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("AMR", 8000)) {
|
|
||||||
solo.clickOnText("AMR");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("AMRWB", 8000)) {
|
|
||||||
solo.clickOnText("AMRWB");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("G729", 8000)) {
|
|
||||||
solo.clickOnText("G729");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("GSM", 8000)) {
|
|
||||||
solo.clickOnText("GSM");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("G722", 8000)) {
|
|
||||||
solo.clickOnText("G722");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("SILK", 24000)) {
|
|
||||||
solo.clickOnText("SILK");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("SILK", 16000)) {
|
|
||||||
solo.clickOnText("SILK", 1);
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("SILK", 8000)) {
|
|
||||||
solo.clickOnText("SILK", 2);
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("PCMU", 8000)) {
|
|
||||||
solo.clickOnText("PCMU");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAudioCodecEnabled("PCMA", 8000)) {
|
|
||||||
solo.clickOnText("PCMA");
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isVideoCodecEnabled(String mime) {
|
|
||||||
LinphoneCore lc = LinphoneTestManager.getLc();
|
|
||||||
for (final PayloadType pt : lc.getVideoCodecs()) {
|
|
||||||
if (pt.getMime().equals(mime))
|
|
||||||
return lc.isPayloadTypeEnabled(pt);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void disableAllEnabledVideoCodecs() {
|
|
||||||
goToVideoCodecsSettings();
|
|
||||||
|
|
||||||
if (isVideoCodecEnabled("VP8")) {
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_vp8_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isVideoCodecEnabled("H264")) {
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_h264_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isVideoCodecEnabled("MP4V-ES")) {
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_mpeg4_title));
|
|
||||||
solo.sleep(500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void forceH264Codec() {
|
|
||||||
// goToVideoCodecsSettings();
|
|
||||||
//
|
|
||||||
// if (isVideoCodecEnabled("VP8")) {
|
|
||||||
// solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_vp8_title));
|
|
||||||
// solo.sleep(500);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!isVideoCodecEnabled("H264")) {
|
|
||||||
// solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_h264_title));
|
|
||||||
// solo.sleep(500);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (isVideoCodecEnabled("MP4V-ES")) {
|
|
||||||
// solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_mpeg4_title));
|
|
||||||
// solo.sleep(500);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// private void enableAllDisabledVideoCodecs() {
|
|
||||||
// goToVideoCodecsSettings();
|
|
||||||
//
|
|
||||||
// if (!isVideoCodecEnabled("VP8")) {
|
|
||||||
// solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_vp8_title));
|
|
||||||
// solo.sleep(500);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!isVideoCodecEnabled("H264")) {
|
|
||||||
// solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_codec_h264_title));
|
|
||||||
// solo.sleep(500);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (!isVideoCodecEnabled("MP4V-ES")) {
|
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void callPlayerTest() throws InterruptedException {
|
|
||||||
// LinphoneCall call = LinphoneTestManager.getLc().getCurrentCall();
|
|
||||||
// Assert.assertNotNull(call);
|
|
||||||
// if(call == null) return;
|
|
||||||
// LinphonePlayer player = call.getPlayer();
|
|
||||||
// Assert.assertNotNull(player);
|
|
||||||
// if(player == null) return;
|
|
||||||
// EofListenerImpl eof = new EofListenerImpl();
|
|
||||||
// int openResult = player.open("/storage/sdcard0/Movies/test.mkv", eof);
|
|
||||||
// Assert.assertEquals(openResult, 0);
|
|
||||||
// if(openResult == 0) {
|
|
||||||
// Assert.assertEquals(player.start(), 0);
|
|
||||||
// try {
|
|
||||||
// Assert.assertTrue(eof.waitForEof(20000));
|
|
||||||
// } catch (InterruptedException e) {
|
|
||||||
// throw e;
|
|
||||||
// } finally {
|
|
||||||
// player.close();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// private class EofListenerImpl implements LinphonePlayer.Listener {
|
|
||||||
// private boolean mEof = false;
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void endOfFile(LinphonePlayer player) {
|
|
||||||
// mEof = true;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public boolean waitForEof(int timeout) throws InterruptedException {
|
|
||||||
// final int refreshTime = 100;
|
|
||||||
// int time = 0;
|
|
||||||
// while(time < timeout && !mEof) {
|
|
||||||
// Thread.sleep(refreshTime);
|
|
||||||
// time += refreshTime;
|
|
||||||
// }
|
|
||||||
// return time < timeout;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
}
|
|
|
@ -1,149 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.core.LinphoneChatMessage;
|
|
||||||
import org.linphone.core.LinphoneChatMessage.State;
|
|
||||||
import org.linphone.core.LinphoneChatRoom;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
|
|
||||||
import com.robotium.solo.Solo;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.widget.EditText;
|
|
||||||
import android.widget.AutoCompleteTextView;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class Chat extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testAEmptyChatHistory() {
|
|
||||||
goToChat();
|
|
||||||
|
|
||||||
LinphoneChatRoom[] chats = LinphoneTestManager.getInstance().getLc().getChatRooms();
|
|
||||||
for (LinphoneChatRoom chatroom : chats) {
|
|
||||||
chatroom.deleteHistory();
|
|
||||||
}
|
|
||||||
|
|
||||||
Assert.assertEquals(0, LinphoneActivity.instance().getUnreadMessageCount());
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testBDisplayEmptyChatHistory() {
|
|
||||||
goToChat();
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.no_chat_history)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testCSendTextMessage() {
|
|
||||||
goToChat();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.new_discussion));
|
|
||||||
solo.enterText((EditText)solo.getView(org.linphone.R.id.search_contact_field), "sip:" + iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
|
|
||||||
solo.enterText((EditText)solo.getView(org.linphone.R.id.message), iContext.getString(org.linphone.R.string.chat_test_text_sent));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.send_message));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.chat_test_text_sent)));
|
|
||||||
Assert.assertEquals(iContext.getString(org.linphone.R.string.chat_test_text_sent), LinphoneTestManager.getInstance().lastMessageReceived);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testDIsNotEmptyChatHistory() {
|
|
||||||
goToChat();
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_test_calls_login)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testEReceiveTextMessage() {
|
|
||||||
goToChat();
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_test_calls_login));
|
|
||||||
|
|
||||||
LinphoneChatRoom chatRoom = LinphoneTestManager.getLc().getOrCreateChatRoom("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
LinphoneChatMessage msg = chatRoom.createLinphoneChatMessage(iContext.getString(org.linphone.R.string.chat_test_text_received));
|
|
||||||
chatRoom.sendMessage(msg, new LinphoneChatMessage.StateListener() {
|
|
||||||
@Override
|
|
||||||
public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg,
|
|
||||||
State state) {
|
|
||||||
Log.e("Chat message state = " + state.toString());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.chat_test_text_received)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testFDeleteMessage() {
|
|
||||||
goToChat();
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_test_calls_login));
|
|
||||||
|
|
||||||
solo.clickLongOnText(iContext.getString(org.linphone.R.string.chat_test_text_received));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.delete));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.chat_test_text_received)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testGChatLandscape() {
|
|
||||||
goToChat();
|
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_test_calls_login));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.setActivityOrientation(Solo.LANDSCAPE);
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
solo.enterText((EditText) solo.getView(org.linphone.R.id.message), iContext.getString(org.linphone.R.string.chat_test_text_sent));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.send_message));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.chat_test_text_sent)));
|
|
||||||
Assert.assertEquals(iContext.getString(org.linphone.R.string.chat_test_text_sent), LinphoneTestManager.getInstance().lastMessageReceived);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.back));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_test_calls_login)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testHDeleteConversation() {
|
|
||||||
goToChat();
|
|
||||||
|
|
||||||
/*solo.clickOnText(aContext.getString(org.linphone.R.string.button_edit));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.button_ok));
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.no_chat_history)));*/
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToChat() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.chat));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,298 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.CallActivity;
|
|
||||||
import org.linphone.CallIncomingActivity;
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.core.LinphoneCall;
|
|
||||||
import org.linphone.core.LinphoneCoreException;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.util.DisplayMetrics;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
public class ConferenceAndMultiCall extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testAInit() {
|
|
||||||
LinphoneTestManager.createAndStart(aContext, iContext, 2);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
waitForRegistration(LinphoneTestManager.getLc(2).getProxyConfigList()[0]);
|
|
||||||
|
|
||||||
//Disable video
|
|
||||||
goToSettings();
|
|
||||||
|
|
||||||
selectItemInListOnUIThread(3);
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.pref_video_title));
|
|
||||||
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 testBSimpleConference() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; // Just in case
|
|
||||||
startConference();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testCRemoveOneFromConference() {
|
|
||||||
startConference();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.conference_pause));
|
|
||||||
|
|
||||||
Assert.assertEquals(1, LinphoneTestManager.getLc(1).getCallsNb());
|
|
||||||
Assert.assertEquals(1, LinphoneTestManager.getLc(2).getCallsNb());
|
|
||||||
solo.sleep(1000);
|
|
||||||
Assert.assertFalse(LinphoneManager.getLc().isInConference());
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testDChangePausedCall() {
|
|
||||||
startTwoCalls();
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
LinphoneCall call1 = LinphoneTestManager.getLc(1).getCalls()[0];
|
|
||||||
LinphoneCall call2 = LinphoneTestManager.getLc(2).getCalls()[0];
|
|
||||||
waitForCallState(call2,LinphoneCall.State.StreamsRunning);
|
|
||||||
waitForCallState(call1,LinphoneCall.State.PausedByRemote);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call_pause));
|
|
||||||
solo.sleep(2000);
|
|
||||||
waitForCallState(call1,LinphoneCall.State.StreamsRunning);
|
|
||||||
waitForCallState(call2,LinphoneCall.State.PausedByRemote);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testEPauseAllCalls() {
|
|
||||||
startTwoCalls();
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
LinphoneCall call1 = LinphoneTestManager.getLc(1).getCalls()[0];
|
|
||||||
LinphoneCall call2 = LinphoneTestManager.getLc(2).getCalls()[0];
|
|
||||||
waitForCallState(call2,LinphoneCall.State.StreamsRunning);
|
|
||||||
waitForCallState(call1,LinphoneCall.State.PausedByRemote);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
|
|
||||||
solo.sleep(2000);
|
|
||||||
waitForCallState(call2,LinphoneCall.State.PausedByRemote);
|
|
||||||
waitForCallState(call1,LinphoneCall.State.PausedByRemote);
|
|
||||||
|
|
||||||
// All calls are paused, one click on hang_up terminates them all
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testFAddNewCallAndCancelIt() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
LinphoneTestManager.getInstance().autoAnswer = false;
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.options));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.add_call));
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.R.string.conference_account_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.outgoing_hang_up));
|
|
||||||
|
|
||||||
waitForCallState(LinphoneTestManager.getLc(1).getCalls()[0],LinphoneCall.State.PausedByRemote);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.pause));
|
|
||||||
solo.sleep(1000);
|
|
||||||
waitForCallState(LinphoneTestManager.getLc(1).getCalls()[0],LinphoneCall.State.StreamsRunning);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
LinphoneTestManager.getInstance().autoAnswer = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testGAddNewCallDeclined() {
|
|
||||||
LinphoneTestManager.getInstance().autoAnswer = true; // Just in case
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
LinphoneTestManager.getInstance().declineCall = true;
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.options));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.add_call));
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.R.string.conference_account_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
waitForCallState(LinphoneTestManager.getLc(1).getCalls()[0],LinphoneCall.State.PausedByRemote);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testHIncomingCallWhileInCallAndDecline() {
|
|
||||||
LinphoneTestManager.getInstance().declineCall = false; //Just in case
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc(2).invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("IncomingCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
View topLayout = solo.getView(org.linphone.R.id.topLayout);
|
|
||||||
int topLayoutHeigh = topLayout.getMeasuredHeight();
|
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
|
||||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
|
||||||
int topOffset = dm.heightPixels - topLayoutHeigh;
|
|
||||||
int slidersTop = topLayoutHeigh - 80 - topOffset; // 80 is the bottom margin set in incoming.xml
|
|
||||||
solo.drag(topLayout.getMeasuredWidth() - 10, 10, slidersTop, slidersTop, 10);
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@LargeTest
|
|
||||||
public void testIIncomingCallWhileInCallAndAccept() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
try {
|
|
||||||
LinphoneTestManager.getLc(2).invite("sip:" + iContext.getString(org.linphone.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.R.string.account_linphone_domain));
|
|
||||||
} catch (LinphoneCoreException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
solo.waitForActivity("IncomingCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Incoming call Activity", CallIncomingActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
View topLayout = solo.getView(org.linphone.R.id.topLayout);
|
|
||||||
int topLayoutHeigh = topLayout.getMeasuredHeight();
|
|
||||||
DisplayMetrics dm = new DisplayMetrics();
|
|
||||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
|
||||||
int topOffset = dm.heightPixels - topLayoutHeigh;
|
|
||||||
int slidersTop = topLayoutHeigh - 80 - topOffset; // 80 is the bottom margin set in incoming.xml
|
|
||||||
solo.drag(10, topLayout.getMeasuredWidth() - 10, slidersTop, slidersTop, 10);
|
|
||||||
|
|
||||||
solo.sleep(1000);
|
|
||||||
LinphoneCall call1 = LinphoneTestManager.getLc(1).getCalls()[0];
|
|
||||||
waitForCallState(call1,LinphoneCall.State.PausedByRemote);
|
|
||||||
assertCallIsCorrectlyRunning(2);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToSettings() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.side_menu_button));
|
|
||||||
solo.clickOnText(aContext.getString(org.linphone.R.string.menu_settings));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startTwoCalls() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.options));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.add_call));
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.R.string.conference_account_domain));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
assertCallIsCorrectlyRunning(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startConference() {
|
|
||||||
startTwoCalls();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.options));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.conference));
|
|
||||||
solo.sleep(1000);
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning(1);
|
|
||||||
assertCallIsCorrectlyRunning(2);
|
|
||||||
Assert.assertTrue(LinphoneManager.getLc().isInConference());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertCallIsCorrectlyRunning(int lcId) {
|
|
||||||
solo.waitForActivity("CallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
Assert.assertEquals(1, LinphoneTestManager.getLc(lcId).getCallsNb());
|
|
||||||
LinphoneCall call = LinphoneTestManager.getLc(lcId).getCalls()[0];
|
|
||||||
|
|
||||||
int retry = 0;
|
|
||||||
while ((call.getState() == LinphoneCall.State.OutgoingProgress || call.getState() == LinphoneCall.State.IncomingReceived) && retry < 5) {
|
|
||||||
solo.sleep(1000);
|
|
||||||
retry++;
|
|
||||||
Log.w("call in progress but not running, retry = " + retry);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitForCallState(call, LinphoneCall.State.StreamsRunning);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,131 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.ContactsListFragment;
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.R;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
import android.view.View;
|
|
||||||
import android.widget.ScrollView;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class Contacts extends SampleTest {
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testAAddContactFromHistoryAndDeleteIt() {
|
|
||||||
goToHistory();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.detail));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.add_contact));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.newContact));
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain)));
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.contact_name));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.ok));
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.contact_name));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.deleteContact));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete_button));
|
|
||||||
|
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testBCreateContactWithPhoneNumber() {
|
|
||||||
goToContacts();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.newContact));
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.contact_name));
|
|
||||||
solo.enterText(3, iContext.getString(org.linphone.R.string.contact_number));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.ok));
|
|
||||||
solo.sleep(2000);
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testCTestContactFilter1() {
|
|
||||||
goToContacts();
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.linphone_contacts));
|
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testDEditContactAddSipAddressAndRemoveNumber() {
|
|
||||||
goToContacts();
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.all_contacts));
|
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.contact_name));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.editContact));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete_field));
|
|
||||||
solo.enterText(2, iContext.getString(org.linphone.R.string.contact_sip));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.ok));
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_sip)));
|
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.contact_number)));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testETestContactFilter2() {
|
|
||||||
goToContacts();
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.linphone_contacts));
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testFStartChatFromContact() {
|
|
||||||
goToContacts();
|
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.contact_name));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.contact_chat));
|
|
||||||
//Assert.assertTrue(solo.search(aContext.get(org.linphone.R.string.send_message)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testGDeleteContact() {
|
|
||||||
goToContacts();
|
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.contact_name));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.deleteContact));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete_button));
|
|
||||||
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToContacts() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.contacts));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToHistory() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.history));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,88 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.CallActivity;
|
|
||||||
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 History extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testACheckForTestCallInHistory() {
|
|
||||||
goToHistory();
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.today)));
|
|
||||||
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_test_calls_login)));
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testBFilterMissedCalls() {
|
|
||||||
goToHistory();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.missed_calls));
|
|
||||||
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.no_missed_call_history)));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testCCallBackFromHistory() {
|
|
||||||
goToHistory();
|
|
||||||
|
|
||||||
solo.clickOnText(iContext.getString(org.linphone.R.string.account_test_calls_login));
|
|
||||||
|
|
||||||
solo.waitForActivity("InCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
Assert.assertEquals(1, LinphoneTestManager.getLc().getCallsNb());
|
|
||||||
waitForCallState(LinphoneTestManager.getLc().getCalls()[0],LinphoneCall.State.StreamsRunning);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.hang_up));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testDDeleteOne() {
|
|
||||||
goToHistory();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.edit));
|
|
||||||
solo.sleep(500);
|
|
||||||
solo.clickOnCheckBox(1);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete));
|
|
||||||
solo.sleep(500);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete_button));
|
|
||||||
}
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testEDeleteAll() {
|
|
||||||
goToHistory();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.edit));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.select_all));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete));
|
|
||||||
solo.sleep(500);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.delete_button));
|
|
||||||
|
|
||||||
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.no_call_history)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void goToHistory() {
|
|
||||||
solo.waitForActivity("LinphoneActivity", 2000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.history));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
package org.linphone.ui.tester;
|
||||||
|
|
||||||
|
import org.linphone.LinphoneLauncherActivity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by ecroze on 27/04/17.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class LinphoneDialerTester {
|
||||||
|
/*@Rule
|
||||||
|
public ActivityTestRule<LinphoneLauncherActivity> activityTestRule =
|
||||||
|
new ActivityTestRule<>(MainActivity.class);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void validateEditText() {
|
||||||
|
onView(withId(R.id.etInput)).perform(typeText("Hello")).check(matches(withText("Hello")));
|
||||||
|
}*/
|
||||||
|
}
|
|
@ -1,98 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import org.linphone.LinphoneLauncherActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.core.LinphoneCall;
|
|
||||||
import org.linphone.core.LinphoneCall.State;
|
|
||||||
import org.linphone.core.LinphoneCore;
|
|
||||||
import org.linphone.core.LinphoneProxyConfig;
|
|
||||||
import org.linphone.core.LinphoneCore.RegistrationState;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.test.ActivityInstrumentationTestCase2;
|
|
||||||
import android.widget.ListView;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.robotium.solo.Condition;
|
|
||||||
import com.robotium.solo.Solo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public abstract class SampleTest extends ActivityInstrumentationTestCase2<LinphoneLauncherActivity>{
|
|
||||||
|
|
||||||
protected final int STRING_LENGTH_MAX = 20;
|
|
||||||
|
|
||||||
protected Solo solo;
|
|
||||||
protected Context aContext, iContext;
|
|
||||||
|
|
||||||
public SampleTest() {
|
|
||||||
super(LinphoneLauncherActivity.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setUp() throws Exception {
|
|
||||||
solo = new Solo(getInstrumentation());
|
|
||||||
aContext = getActivity();
|
|
||||||
iContext = getInstrumentation().getContext();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void tearDown() throws Exception {
|
|
||||||
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
|
|
||||||
if (lc != null) {
|
|
||||||
lc.terminateAllCalls();
|
|
||||||
}
|
|
||||||
solo.finishOpenedActivities();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void selectItemInListOnUIThread(final int item) {
|
|
||||||
solo.sleep(500);
|
|
||||||
getActivity().runOnUiThread(new Runnable() {
|
|
||||||
public void run() {
|
|
||||||
ListView list = (ListView) solo.getView(android.R.id.list);
|
|
||||||
list.setSelection(item);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void waitForRegistration(final LinphoneProxyConfig lpc) {
|
|
||||||
if(lpc == null) return;
|
|
||||||
solo.waitForCondition(new Condition() {
|
|
||||||
@Override
|
|
||||||
public boolean isSatisfied() {
|
|
||||||
return RegistrationState.RegistrationOk == lpc.getState();
|
|
||||||
}
|
|
||||||
}, 30000);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void waitForCallPaused(final LinphoneCall call) {
|
|
||||||
if(call == null) return;
|
|
||||||
solo.waitForCondition(new Condition() {
|
|
||||||
@Override
|
|
||||||
public boolean isSatisfied() {
|
|
||||||
return call.getState().equals(State.Paused) || call.getState().equals(State.Pausing);
|
|
||||||
}
|
|
||||||
}, 30000);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void waitForCallResumed(final LinphoneCall call) {
|
|
||||||
if(call == null) return;
|
|
||||||
solo.waitForCondition(new Condition() {
|
|
||||||
@Override
|
|
||||||
public boolean isSatisfied() {
|
|
||||||
return call.getState().equals(State.Resuming) || call.getState().equals(State.StreamsRunning);
|
|
||||||
}
|
|
||||||
}, 30000);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void waitForCallState(final LinphoneCall call, final State state) {
|
|
||||||
if(call == null) return;
|
|
||||||
solo.waitForCondition(new Condition() {
|
|
||||||
@Override
|
|
||||||
public boolean isSatisfied() {
|
|
||||||
return state.equals(call.getState());
|
|
||||||
}
|
|
||||||
}, 30000);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,60 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import junit.framework.Assert;
|
|
||||||
|
|
||||||
import org.linphone.CallActivity;
|
|
||||||
import org.linphone.LinphoneActivity;
|
|
||||||
import org.linphone.LinphoneManager;
|
|
||||||
import org.linphone.core.LinphoneCall;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
|
|
||||||
public class Transfer extends SampleTest {
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testACallTransfer() {
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.R.string.account_test_calls_domain));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call));
|
|
||||||
|
|
||||||
assertCallIsCorrectlyRunning();
|
|
||||||
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.options));
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.transfer));
|
|
||||||
solo.waitForActivity("LinphoneActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected Linphone Activity", LinphoneActivity.class);
|
|
||||||
|
|
||||||
solo.enterText(0, iContext.getString(org.linphone.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.R.string.conference_account_domain));
|
|
||||||
solo.sleep(1000);
|
|
||||||
solo.clickOnView(solo.getView(org.linphone.R.id.call)); // Transfer button as the same id, only the image changes
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
Assert.assertTrue(LinphoneTestManager.getLc(1).getCallsNb() > 0);
|
|
||||||
Assert.assertTrue(LinphoneTestManager.getLc(2).getCallsNb() > 0);
|
|
||||||
LinphoneTestManager.getLc(1).terminateAllCalls();
|
|
||||||
solo.sleep(500);
|
|
||||||
Assert.assertTrue(LinphoneTestManager.getLc(1).getCallsNb() == 0);
|
|
||||||
Assert.assertTrue(LinphoneTestManager.getLc(2).getCallsNb() == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void assertCallIsCorrectlyRunning() {
|
|
||||||
solo.waitForActivity("InCallActivity", 5000);
|
|
||||||
solo.assertCurrentActivity("Expected InCall Activity", CallActivity.class);
|
|
||||||
|
|
||||||
solo.sleep(2000);
|
|
||||||
LinphoneCall call = LinphoneManager.getLc().getCalls()[0];
|
|
||||||
|
|
||||||
int retry = 0;
|
|
||||||
while ((call.getState() == LinphoneCall.State.OutgoingProgress || call.getState() == LinphoneCall.State.IncomingReceived) && retry < 5) {
|
|
||||||
solo.sleep(1000);
|
|
||||||
retry++;
|
|
||||||
Log.w("Call in progress but not running, retry = " + retry);
|
|
||||||
}
|
|
||||||
|
|
||||||
waitForCallState(call,LinphoneCall.State.StreamsRunning);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
package org.linphone.ui.tester;
|
|
||||||
|
|
||||||
import static android.content.Intent.ACTION_MAIN;
|
|
||||||
|
|
||||||
import org.linphone.LinphoneService;
|
|
||||||
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.test.suitebuilder.annotation.LargeTest;
|
|
||||||
import android.test.suitebuilder.annotation.MediumTest;
|
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Sylvain Berfini
|
|
||||||
*/
|
|
||||||
public class ZShutdownTestEnv extends SampleTest {
|
|
||||||
|
|
||||||
@SmallTest
|
|
||||||
@MediumTest
|
|
||||||
@LargeTest
|
|
||||||
public void testZShutDownLinphoneCore() {
|
|
||||||
LinphoneTestManager.destroy();
|
|
||||||
aContext.stopService(new Intent(ACTION_MAIN).setClass(aContext, LinphoneService.class));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in a new issue