Change Android test

This commit is contained in:
Erwan Croze 2017-04-03 12:23:45 +02:00
parent 074a676d80
commit baa4cfda50
41 changed files with 478 additions and 959 deletions

View file

@ -28,7 +28,8 @@ buildscript {
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile fileTree(include: '*.jar', dir: 'libs')
androidTestCompile fileTree(include: '*.jar', dir: 'libs-test')
if (firebaseEnable()) {
compile 'com.google.firebase:firebase-messaging:9.0.0'
} else {
@ -82,138 +83,98 @@ android {
println '[Push Notification] Firebase enabled'
}
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['submodules/linphone/mediastreamer2/java/src','submodules/linphone/java/j2se','submodules/linphone/java/common','submodules/linphone/java/impl','submodules/externals/axmlrpc/src/main/java','submodules/linphone/coreapi/help/java','src']
resources.srcDirs = ['submodules/linphone/mediastreamer2/java/src','submodules/linphone/java/j2se','submodules/linphone/java/common','submodules/linphone/java/impl','submodules/externals/axmlrpc/src/main/java','submodules/linphone/coreapi/help/java','src']
aidl.srcDirs = ['submodules/linphone/mediastreamer2/java/src','submodules/linphone/java/j2se','submodules/linphone/java/common','submodules/linphone/java/impl','submodules/externals/axmlrpc/src/main/java','submodules/linphone/coreapi/help/java','src']
renderscript.srcDirs = ['submodules/linphone/mediastreamer2/java/src','submodules/linphone/java/j2se','submodules/linphone/java/common','submodules/linphone/java/impl','submodules/externals/axmlrpc/src/main/java','submodules/linphone/coreapi/help/java','src']
java.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src/com',
'src/org']
resources.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src/com',
'src/org']
aidl.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src/com',
'src/org']
renderscript.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src/com',
'src/org']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDir 'libs'
jniLibs.srcDirs = ['libs']
java.exclude '**/mediastream/MediastreamerActivity.java'
java.exclude firebase
java.excludes = ['**/mediastream/MediastreamerActivity.java', firebase]
// Exclude some useless files
packagingOptions {
exclude '**/gdb.*'
}
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
buildToolsVersion '25.0.2'
}
///////////// Task /////////////
// TODO
def getSdkDir() {
Properties local = new Properties()
if (new File("${rootDir}/local.properties").exists()) {
local.load(new FileInputStream("${rootDir}/local.properties"))
sourceSets {
androidTest {
String firebase = ''
// Exclude firebase file if not enable
if (!firebaseEnable()) {
firebase = '**/Firebase*'
println '[Push Notification] Firebase disabled'
} else {
println '[Push Notification] Firebase enabled'
}
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src']
resources.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src']
aidl.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src']
renderscript.srcDirs = ['submodules/linphone/mediastreamer2/java/src',
'submodules/linphone/java/j2se',
'submodules/linphone/java/common',
'submodules/linphone/java/impl',
'submodules/linphone/coreapi/help/java',
'src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
java.excludes = ['**/mediastream/MediastreamerActivity.java', firebase]
// Exclude some useless files
packagingOptions {
exclude '**/gdb.*'
}
}
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
return local.getProperty('sdk.dir')
}
def getTarget() {
Properties local = new Properties()
if (new File("${rootDir}/project.properties").exists()) {
local.load(new FileInputStream("${rootDir}/project.properties"))
}
return local.getProperty('target')
}
def getVersionName() {
Properties local = new Properties()
if (new File("${rootDir}/default.properties").exists()) {
local.load(new FileInputStream("${rootDir}/default.properties"))
}
return local.getProperty('version.name')
}
ext.toolsDir = getSdkDir()
ext.versionName = getVersionName()
//task myJavadocs(type: Javadoc) {
//source = sourceSets.main.allJava
//classpath = ${toolsDir}/platforms/${target}/android.jar:libs/android-support-v4.jar:libs/gcm.jar
//}
task createLibJar(type: Jar) {
doLast {
baseName = "liblinphone"
String classDir = compileReleaseJavaWithJavac.destinationDir
from ('submodules/linphone/java')
include "common/org/linphone/core/*.java j2se/org/linphone/core/*.java"
from (classDir)
include "org/linphone/mediastream/**/*.class org/linphone/core/**/*.class org/linphone/tools/**/*.class"
}
}
task createAndroidJar(type: Jar) {
doLast {
baseName = "linphone"
String classDir = compileReleaseJavaWithJavac.destinationDir
from (['submodules/linphone/java',classDir])
include ("common/org/linphone/core/*.java", "j2se/org/linphone/core/*.java", "org/linphone/mediastream/**/*.class", "org/linphone/core/**/*.class", "org/linphone/**/*.class, org/linphone/tools/**/*.class")
}
}
task liblinphoneAndroidSdk(type: Zip) {
doLast {
createLibJar()
archiveName = 'liblinphone-android-sdk-${versionName}.zip'
from ('libs') {
into 'libs'
}
include "**/*.so"
from ('.') {
into 'libs'
}
include "liblinphone.jar"
from ('libs-debug') {
into 'libs-debug'
}
include "**/*.so"
from ('.') {
into 'libs-debug'
}
include "liblinphone.jar"
}
}
task linphoneAndroidSdk(type: Zip) {
doLast {
createAndroidJar()
archiveName = 'linphone-android-sdk-${versionName}.zip'
from ('libs') {
into 'libs'
}
include "**/*.so"
from ('.') {
into 'libs'
}
include "linphone.jar"
from ('libs-debug') {
into 'libs-debug'
}
include "**/*.so"
from ('.') {
into 'libs-debug'
}
include "linphone.jar"
}
}
}

Binary file not shown.

View file

@ -1,6 +1,6 @@
#Wed Mar 22 15:25:45 CET 2017
#Wed Mar 29 17:34:30 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-3.4-bin.zip

BIN
libs-test/junit-4.12.jar Normal file

Binary file not shown.

Binary file not shown.

View file

@ -332,7 +332,7 @@ release: java-clean build copy-libs
generate-sdk: liblinphone-android-sdk
liblinphone-android-sdk: generate-apk
\tant liblinphone-android-sdk
\ttant liblinphone-android-sdk
linphone-android-sdk: generate-apk
\tant linphone-android-sdk
@ -351,11 +351,8 @@ run-liblinphone-tests:
\t@cd liblinphone_tester && \\
\tmake run-all-tests
run-basic-tests: clean
\t$(MAKE) -C tests run-basic-tests ANT_SILENT=$(ANT_SILENT)
run-all-tests: clean
\t$(MAKE) -C tests run-all-tests ANT_SILENT=$(ANT_SILENT)
\t./gradlew connectedAndroidTest
pull-transifex:
\ttx pull -af

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.LinphoneActivity;
@ -40,8 +38,8 @@ public class AccountAssistant extends SampleTest {
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(R.string.account_linphone_login));
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_password), iContext.getString(R.string.account_linphone_pwd));
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));
@ -53,7 +51,7 @@ public class AccountAssistant extends SampleTest {
solo.clickOnView(solo.getView(org.linphone.R.id.answerNo));
solo.waitForActivity("LinphoneActivity", 8000);
Assert.assertTrue(solo.searchText(iContext.getString(R.string.account_linphone_login) + "@sip.linphone.org"));
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();
@ -65,16 +63,16 @@ public class AccountAssistant extends SampleTest {
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(R.string.account_linphone_login), username);
Assert.assertEquals(iContext.getString(org.linphone.R.string.account_linphone_login), username);
boolean ice = prefs.isIceEnabled();
Assert.assertEquals(ice, true);
}
@ -90,17 +88,17 @@ public class AccountAssistant extends SampleTest {
startAssistant();
solo.clickOnView(solo.getView(org.linphone.R.id.login_generic));
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_username), iContext.getString(R.string.account_generic_login));
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_password), iContext.getString(R.string.account_generic_pwd));
solo.enterText((EditText) solo.getView(org.linphone.R.id.assistant_domain), iContext.getString(R.string.account_generic_domain));
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(R.string.account_generic_login) + "@" + iContext.getString(R.string.account_generic_domain)));
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);
@ -114,7 +112,7 @@ public class AccountAssistant extends SampleTest {
solo.clickOnView(solo.getView(org.linphone.R.id.create_account));
solo.enterText((EditText) solo.getView(org.linphone.R.id.username), iContext.getString(R.string.account_create_login).substring(0, 2));
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;
@ -124,39 +122,39 @@ public class AccountAssistant extends SampleTest {
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(R.string.account_linphone_login));
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(R.string.account_create_pwd).substring(0, 2));
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(R.string.account_create_pwd).substring(0, 2));
solo.enterText((EditText) solo.getView(org.linphone.R.id.confirm_password), iContext.getString(R.string.account_create_pwd).substring(0,2));
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(R.string.account_create_email).substring(0, 12));
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(R.string.account_create_login));
solo.enterText((EditText) solo.getView(org.linphone.R.id.password), iContext.getString(R.string.account_create_pwd));
solo.enterText((EditText) solo.getView(org.linphone.R.id.confirm_password), iContext.getString(R.string.account_create_pwd));
solo.enterText((EditText) solo.getView(org.linphone.R.id.email), iContext.getString(R.string.account_create_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());
@ -166,11 +164,11 @@ public class AccountAssistant extends SampleTest {
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);

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.FragmentsAvailable;
@ -17,16 +15,16 @@ public class AccountManagement extends SampleTest {
@LargeTest
public void testAEditAccount() {
goToSettings();
solo.clickOnText(iContext.getString(R.string.account_generic_login) + "@" + iContext.getString(R.string.account_generic_domain));
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);
@ -39,13 +37,13 @@ public class AccountManagement extends SampleTest {
@LargeTest
public void testBDeleteAccount() {
goToSettings();
solo.clickOnText(iContext.getString(R.string.account_generic_login) + "new");
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);
}
@ -53,29 +51,29 @@ public class AccountManagement extends SampleTest {
@LargeTest
public void testCDisableAccount() {
goToSettings();
solo.clickOnText(iContext.getString(R.string.account_linphone_login));
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(R.string.account_linphone_login));
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);

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import android.test.suitebuilder.annotation.LargeTest;
@ -14,9 +12,9 @@ public class AinitTestEnv extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
public void testAInitLinphoneCore() {
public void testAInitLinphoneCore() {
LinphoneTestManager.createAndStart(aContext, iContext, 1);
solo.sleep(5000);
Assert.assertEquals(1, LinphoneTestManager.getLc().getProxyConfigList().length);
waitForRegistration(LinphoneTestManager.getLc().getProxyConfigList()[0]);

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.CallActivity;
@ -22,7 +20,7 @@ import android.view.View;
* @author Sylvain Berfini
*/
public class CallsAudio extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
@ -34,24 +32,24 @@ public class CallsAudio extends SampleTest {
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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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);
@ -64,26 +62,26 @@ public class CallsAudio extends SampleTest {
solo.clickOnText("PCMU");
goBackToDialerAfterCodecChanges();
solo.sleep(1000);
LinphoneManager.getLc().setUseRfc2833ForDtmfs(true);
LinphoneManager.getLc().setUseSipInfoForDtmfs(false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
}
@ -93,23 +91,23 @@ public class CallsAudio extends SampleTest {
public void testDDTMFSIPINFO() {
LinphoneManager.getLc().setUseRfc2833ForDtmfs(false);
LinphoneManager.getLc().setUseSipInfoForDtmfs(true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
}
@ -118,12 +116,12 @@ public class CallsAudio extends SampleTest {
@LargeTest
public void testEOutgoingCallToAudioClient() {
LinphoneTestManager.getLc().enableVideo(false, false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -133,12 +131,12 @@ public class CallsAudio extends SampleTest {
@LargeTest
public void testFOutgoingCallToVideoClient() {
LinphoneTestManager.getLc().enableVideo(true, true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -148,8 +146,8 @@ public class CallsAudio extends SampleTest {
@LargeTest
public void testGOutgoingCallCancelled() {
LinphoneTestManager.getInstance().autoAnswer = false;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -157,9 +155,9 @@ public class CallsAudio extends SampleTest {
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);
@ -170,16 +168,16 @@ public class CallsAudio extends SampleTest {
public void testHOutgoingCallDeclined() {
LinphoneTestManager.getInstance().autoAnswer = true; // Just in case
LinphoneTestManager.getInstance().declineCall = true;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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;
}
@ -189,14 +187,14 @@ public class CallsAudio extends SampleTest {
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.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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);
@ -210,7 +208,7 @@ public class CallsAudio extends SampleTest {
solo.drag(10, topLayout.getMeasuredWidth() - 10, slidersTop, slidersTop, 10);*/
solo.clickOnView(solo.getView(org.linphone.R.id.accept));
assertCallIsCorrectlyRunning();
}
@ -220,11 +218,11 @@ public class CallsAudio extends SampleTest {
solo.sleep(2000);
try {
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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);
@ -238,18 +236,18 @@ public class CallsAudio extends SampleTest {
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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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);
@ -259,7 +257,7 @@ public class CallsAudio extends SampleTest {
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);
@ -268,11 +266,11 @@ public class CallsAudio extends SampleTest {
@MediumTest
@LargeTest
public void testLRemotePauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -282,7 +280,7 @@ public class CallsAudio extends SampleTest {
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);
@ -291,13 +289,13 @@ public class CallsAudio extends SampleTest {
@LargeTest
public void testMSwitchOnVideoInCallIsNotAllowed() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -310,14 +308,14 @@ public class CallsAudio extends SampleTest {
solo.sleep(2000);
try {
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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();
@ -336,16 +334,16 @@ public class CallsAudio extends SampleTest {
solo.sleep(2000);
try {
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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);
}
@ -355,10 +353,10 @@ public class CallsAudio extends SampleTest {
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() {
@ -368,7 +366,7 @@ public class CallsAudio extends SampleTest {
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);
@ -376,23 +374,23 @@ public class CallsAudio extends SampleTest {
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()) {
@ -401,85 +399,85 @@ public class CallsAudio extends SampleTest {
}
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);
}

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.CallActivity;
@ -23,7 +21,7 @@ import android.view.View;
* @author Sylvain Berfini
*/
public class CallsVideo extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
@ -39,22 +37,22 @@ public class CallsVideo extends SampleTest {
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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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();
@ -75,26 +73,26 @@ public class CallsVideo extends SampleTest {
solo.clickOnText("PCMU");
goBackToDialerAfterCodecChanges();
solo.sleep(1000);
LinphoneManager.getLc().setUseRfc2833ForDtmfs(true);
LinphoneManager.getLc().setUseSipInfoForDtmfs(false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
}
@ -104,23 +102,23 @@ public class CallsVideo extends SampleTest {
public void testDDTMFSIPINFO() {
LinphoneManager.getLc().setUseRfc2833ForDtmfs(false);
LinphoneManager.getLc().setUseSipInfoForDtmfs(true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
}
@ -129,13 +127,13 @@ public class CallsVideo extends SampleTest {
@LargeTest
public void testEOutgoingCallToAudioClient() {
LinphoneTestManager.getLc().enableVideo(false, false);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -146,7 +144,7 @@ public class CallsVideo extends SampleTest {
public void testFOutgoingCallToVideoClient() {
LinphoneTestManager.getLc().enableVideo(true, true);
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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();
@ -163,18 +161,18 @@ public class CallsVideo extends SampleTest {
@LargeTest
public void testGOutgoingCallCancelled() {
LinphoneTestManager.getInstance().autoAnswer = false;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -184,16 +182,16 @@ public class CallsVideo extends SampleTest {
public void testHOutgoingCallDeclined() {
LinphoneTestManager.getInstance().autoAnswer = true; // Just in case
LinphoneTestManager.getInstance().declineCall = true;
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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;
}
@ -201,20 +199,20 @@ public class CallsVideo extends SampleTest {
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.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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();
}
@ -226,20 +224,20 @@ public class CallsVideo extends SampleTest {
solo.sleep(2000);
try {
LinphoneTestManager.getLc().invite("sip:" + iContext.getString(org.linphone.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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
@ -248,15 +246,15 @@ public class CallsVideo extends SampleTest {
// Thread.sleep(2000);
// callPlayerTest();
// }
//TODO: Test each video codec
@MediumTest
@LargeTest
public void testKSelfPauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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));
@ -267,7 +265,7 @@ public class CallsVideo extends SampleTest {
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));
@ -279,11 +277,11 @@ public class CallsVideo extends SampleTest {
@MediumTest
@LargeTest
public void testLRemotePauseResumeCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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);
@ -303,23 +301,23 @@ public class CallsVideo extends SampleTest {
@MediumTest
@LargeTest
public void testMSwitchOffVideoInCall() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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());
@ -341,22 +339,22 @@ public class CallsVideo extends SampleTest {
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();
@ -367,7 +365,7 @@ public class CallsVideo extends SampleTest {
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()) {
@ -376,81 +374,81 @@ public class CallsVideo extends SampleTest {
}
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()) {
@ -459,73 +457,73 @@ public class CallsVideo extends SampleTest {
}
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);
@ -547,15 +545,15 @@ public class CallsVideo extends SampleTest {
// }
// }
// }
//
//
// 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;

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.LinphoneActivity;
@ -27,22 +25,22 @@ public class Chat extends SampleTest {
@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
@ -50,32 +48,32 @@ public class Chat extends SampleTest {
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(R.string.account_test_calls_login) + "@" + iContext.getString(R.string.account_test_calls_domain));
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(R.string.chat_test_text_sent));
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(R.string.chat_test_text_sent)));
Assert.assertEquals(iContext.getString(R.string.chat_test_text_sent), LinphoneTestManager.getInstance().lastMessageReceived);
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.test.R.string.account_test_calls_login)));
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.test.R.string.account_test_calls_login));
LinphoneChatRoom chatRoom = LinphoneTestManager.getLc().getOrCreateChatRoom("sip:" + iContext.getString(R.string.account_linphone_login) + "@" + iContext.getString(R.string.account_linphone_domain));
LinphoneChatMessage msg = chatRoom.createLinphoneChatMessage(iContext.getString(R.string.chat_test_text_received));
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,
@ -85,20 +83,20 @@ public class Chat extends SampleTest {
});
solo.sleep(1000);
Assert.assertTrue(solo.searchText(iContext.getString(R.string.chat_test_text_received)));
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.test.R.string.account_test_calls_login));
solo.clickLongOnText(iContext.getString(R.string.chat_test_text_received));
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(R.string.chat_test_text_received)));
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.chat_test_text_received)));
}
@MediumTest
@ -106,30 +104,30 @@ public class Chat extends SampleTest {
public void testGChatLandscape() {
goToChat();
solo.clickOnText(iContext.getString(org.linphone.test.R.string.account_test_calls_login));
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(R.string.chat_test_text_sent));
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(R.string.chat_test_text_sent)));
Assert.assertEquals(iContext.getString(R.string.chat_test_text_sent), LinphoneTestManager.getInstance().lastMessageReceived);
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(R.string.account_test_calls_login)));
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));
@ -138,12 +136,12 @@ public class Chat extends SampleTest {
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));
}
}

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import java.util.ArrayList;
import junit.framework.Assert;
@ -97,7 +95,7 @@ public class ConferenceAndMultiCall extends SampleTest {
@LargeTest
public void testEPauseAllCalls() {
startTwoCalls();
solo.sleep(2000);
LinphoneCall call1 = LinphoneTestManager.getLc(1).getCalls()[0];
LinphoneCall call2 = LinphoneTestManager.getLc(2).getCalls()[0];
@ -108,7 +106,7 @@ public class ConferenceAndMultiCall extends SampleTest {
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);
@ -117,18 +115,18 @@ public class ConferenceAndMultiCall extends SampleTest {
@LargeTest
public void testFAddNewCallAndCancelIt() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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.test.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.test.R.string.conference_account_domain));
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));
@ -136,58 +134,58 @@ public class ConferenceAndMultiCall extends SampleTest {
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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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.test.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.test.R.string.conference_account_domain));
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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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);
@ -199,9 +197,9 @@ public class ConferenceAndMultiCall extends SampleTest {
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);
@ -209,19 +207,19 @@ public class ConferenceAndMultiCall extends SampleTest {
}
@LargeTest
public void testIIncomingCallWhileInCallAndAccept() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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.test.R.string.account_linphone_login) + "@" + iContext.getString(org.linphone.test.R.string.account_linphone_domain));
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);
@ -238,46 +236,46 @@ public class ConferenceAndMultiCall extends SampleTest {
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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
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.test.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.test.R.string.conference_account_domain));
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);
@ -285,7 +283,7 @@ public class ConferenceAndMultiCall extends SampleTest {
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);

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.ContactsListFragment;
@ -21,24 +19,24 @@ public class Contacts extends SampleTest {
@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.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain)));
solo.enterText(0, iContext.getString(org.linphone.test.R.string.contact_name));
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.test.R.string.contact_name)));
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
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.test.R.string.contact_name)));
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
}
@SmallTest
@ -48,11 +46,11 @@ public class Contacts extends SampleTest {
goToContacts();
solo.clickOnView(solo.getView(org.linphone.R.id.newContact));
solo.enterText(0, iContext.getString(org.linphone.test.R.string.contact_name));
solo.enterText(3, iContext.getString(org.linphone.test.R.string.contact_number));
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.test.R.string.contact_name)));
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
}
@MediumTest
@ -60,9 +58,9 @@ public class Contacts extends SampleTest {
public void testCTestContactFilter1() {
goToContacts();
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.test.R.string.contact_name)));
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.test.R.string.contact_name)));
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
}
@MediumTest
@ -70,26 +68,26 @@ public class Contacts extends SampleTest {
public void testDEditContactAddSipAddressAndRemoveNumber() {
goToContacts();
solo.clickOnView(solo.getView(org.linphone.R.id.all_contacts));
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
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.test.R.string.contact_sip));
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.test.R.string.contact_sip)));
Assert.assertFalse(solo.searchText(iContext.getString(org.linphone.test.R.string.contact_number)));
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.test.R.string.contact_name)));
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.test.R.string.contact_name)));
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.contact_name)));
}
@MediumTest
@ -97,7 +95,7 @@ public class Contacts extends SampleTest {
public void testFStartChatFromContact() {
goToContacts();
solo.clickOnText(iContext.getString(org.linphone.test.R.string.contact_name));
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)));
}
@ -107,25 +105,25 @@ public class Contacts extends SampleTest {
@LargeTest
public void testGDeleteContact() {
goToContacts();
solo.clickOnText(iContext.getString(org.linphone.test.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.test.R.string.contact_name)));
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));
}
}
}

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.CallActivity;
@ -14,46 +12,46 @@ import android.test.suitebuilder.annotation.SmallTest;
* @author Sylvain Berfini
*/
public class History extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
public void testACheckForTestCallInHistory() {
public void testACheckForTestCallInHistory() {
goToHistory();
Assert.assertTrue(solo.searchText(aContext.getString(org.linphone.R.string.today)));
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.test.R.string.account_test_calls_login)));
Assert.assertTrue(solo.searchText(iContext.getString(org.linphone.R.string.account_test_calls_login)));
}
@MediumTest
@LargeTest
public void testBFilterMissedCalls() {
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.test.R.string.account_test_calls_login));
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() {
public void testDDeleteOne() {
goToHistory();
solo.clickOnView(solo.getView(org.linphone.R.id.edit));
@ -67,7 +65,7 @@ public class History extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
public void testEDeleteAll() {
public void testEDeleteAll() {
goToHistory();
solo.clickOnView(solo.getView(org.linphone.R.id.edit));
@ -78,11 +76,11 @@ public class History extends SampleTest {
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));
}
}

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import java.nio.ByteBuffer;
import java.util.Timer;
import java.util.TimerTask;
@ -190,13 +188,13 @@ public class LinphoneTestManager implements LinphoneCoreListener{
String username, password, domain;
if (mLc.equals(mLc1)) {
username = mIContext.getString(org.linphone.test.R.string.account_test_calls_login);
password = mIContext.getString(org.linphone.test.R.string.account_test_calls_pwd);
domain = mIContext.getString(org.linphone.test.R.string.account_test_calls_domain);
username = mIContext.getString(org.linphone.R.string.account_test_calls_login);
password = mIContext.getString(org.linphone.R.string.account_test_calls_pwd);
domain = mIContext.getString(org.linphone.R.string.account_test_calls_domain);
} else {
username = mIContext.getString(org.linphone.test.R.string.conference_account_login);
password = mIContext.getString(org.linphone.test.R.string.conference_account_password);
domain = mIContext.getString(org.linphone.test.R.string.conference_account_domain);
username = mIContext.getString(org.linphone.R.string.conference_account_login);
password = mIContext.getString(org.linphone.R.string.conference_account_password);
domain = mIContext.getString(org.linphone.R.string.conference_account_domain);
}
LinphoneAuthInfo lAuthInfo = LinphoneCoreFactory.instance().createAuthInfo(username, password, null, domain);
@ -436,14 +434,14 @@ public class LinphoneTestManager implements LinphoneCoreListener{
public void authInfoRequested(LinphoneCore lc, String realm,
String username, String domain) {
// TODO Auto-generated method stub
}
@Override
public void authenticationRequested(LinphoneCore lc,
LinphoneAuthInfo authInfo, AuthMethod method) {
// TODO Auto-generated method stub
}
@Override
@ -492,9 +490,20 @@ public class LinphoneTestManager implements LinphoneCoreListener{
public void friendListCreated(LinphoneCore lc, LinphoneFriendList list) {
// TODO Auto-generated method stub
}
@Override
public void friendListRemoved(LinphoneCore lc, LinphoneFriendList list) {
// TODO Auto-generated method stub
}
@Override
public void networkReachableChanged(LinphoneCore lc, boolean enable) {
// TODO Auto-generated method stub
}
@Override
public void messageReceivedUnableToDecrypted(LinphoneCore lc, LinphoneChatRoom cr,
LinphoneChatMessage message) {
// TODO Auto-generated method stub
}
}

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import org.linphone.LinphoneLauncherActivity;
import org.linphone.LinphoneManager;
import org.linphone.core.LinphoneCall;
@ -22,7 +20,7 @@ import com.robotium.solo.Solo;
public abstract class SampleTest extends ActivityInstrumentationTestCase2<LinphoneLauncherActivity>{
protected final int STRING_LENGTH_MAX = 20;
protected Solo solo;
protected Context aContext, iContext;
@ -45,7 +43,7 @@ public abstract class SampleTest extends ActivityInstrumentationTestCase2<Linpho
}
solo.finishOpenedActivities();
}
protected void selectItemInListOnUIThread(final int item) {
solo.sleep(500);
getActivity().runOnUiThread(new Runnable() {
@ -55,7 +53,7 @@ public abstract class SampleTest extends ActivityInstrumentationTestCase2<Linpho
}
});
}
protected void waitForRegistration(final LinphoneProxyConfig lpc) {
if(lpc == null) return;
solo.waitForCondition(new Condition() {

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import junit.framework.Assert;
import org.linphone.CallActivity;
@ -17,21 +15,21 @@ public class Transfer extends SampleTest {
@MediumTest
@LargeTest
public void testACallTransfer() {
solo.enterText(0, iContext.getString(org.linphone.test.R.string.account_test_calls_login) + "@" + iContext.getString(org.linphone.test.R.string.account_test_calls_domain));
solo.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.test.R.string.conference_account_login) + "@" + iContext.getString(org.linphone.test.R.string.conference_account_domain));
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);
@ -40,21 +38,21 @@ public class Transfer extends SampleTest {
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);
}
}

View file

@ -1,5 +1,3 @@
package org.linphone.test;
import static android.content.Intent.ACTION_MAIN;
import org.linphone.LinphoneService;
@ -13,7 +11,7 @@ import android.test.suitebuilder.annotation.SmallTest;
* @author Sylvain Berfini
*/
public class ZShutdownTestEnv extends SampleTest {
@SmallTest
@MediumTest
@LargeTest
@ -21,5 +19,5 @@ public class ZShutdownTestEnv extends SampleTest {
LinphoneTestManager.destroy();
aContext.stopService(new Intent(ACTION_MAIN).setClass(aContext, LinphoneService.class));
}
}

@ -1 +1 @@
Subproject commit 99e12005f3c75b933e8bd01092147def555496f2
Subproject commit 354ab280916f37ddd5d285c49bbf110122bec5a4

@ -1 +1 @@
Subproject commit f1856679996c63c99fa416cd1f853cd3639e2bdf
Subproject commit d7ff1de9e3ffb241b2aeac1950e0768da69c0a43

@ -1 +1 @@
Subproject commit b6e67b14cdfb0108a74941e1c05ef902b6fc9c2a
Subproject commit 5e02b53ee66b73e64bfc41e6ac2ed74296f42f60

View file

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
<classpathentry kind="lib" path="libs/robotium-solo-5.1.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/linphone-android-test/libs/robotium-solo-5.1-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry combineaccessrules="false" kind="src" path="/linphone-android"/>
<classpathentry kind="output" path="bin/classes"/>
</classpath>

View file

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>linphone-android-test</name>
<comment></comment>
<projects>
<project>linphone-android-newUI</project>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View file

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.linphone.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<!-- Needed to allow Linphone to install on tablets, since android.permission.CALL_PHONE implies android.hardware.telephony is required -->
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<!-- Needed to allow Linphone to install on tablets, since android.permission.CAMERA implies android.hardware.camera and android.hardware.camera.autofocus are required -->
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- Needed to store received images if the user wants to -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- Needed to use our own Contact editor -->
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<!-- Needed to route the audio to the bluetooth headset if available -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<instrumentation
android:name="com.zutubi.android.junitreport.JUnitReportTestRunner"
android:targetPackage="org.linphone" />
<application
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>

View file

@ -1,27 +0,0 @@
SDK_PATH=$(shell dirname `which android`)
SDK_PLATFORM_TOOLS_PATH=$(shell dirname `which adb`)
ANT_SILENT=$(shell ant -h | grep -q -- -S && echo 1 || echo 0)
ifeq ($(ANT_SILENT), 1)
ANT=ant -e -S
else
ANT=ant -e
endif
clean:
$(SDK_PLATFORM_TOOLS_PATH)/adb uninstall org.linphone.test
$(SDK_PLATFORM_TOOLS_PATH)/adb uninstall org.linphone
$(SDK_PATH)/android update test-project --path . -m ../
all: clean
ant clean debug
$(SDK_PLATFORM_TOOLS_PATH)/adb install -g bin/LinphoneTest-debug.apk
$(SDK_PLATFORM_TOOLS_PATH)/adb install -g ../bin/Linphone-debug.apk
run-basic-tests: all
ant -e test -Dtest.size=small
if [ ! -s linphone-junit-report-small.xml ]; then exit 1; fi
run-all-tests: all
ant -e test -Dtest.size=large
if [ ! -s linphone-junit-report-large.xml ]; then exit 1; fi

View file

@ -1 +0,0 @@
This is a JUnit test project for Linphone's Android application.

View file

@ -1,4 +0,0 @@
#! /bin/bash
adb logcat -v time > $1 &
echo $! >adb.pid

View file

@ -1,19 +0,0 @@
# This file is used to override default values used by the Ant build system.
#
# This file must be checked into Version Control Systems, as it is
# integral to the build system of your project.
# This file is only used by the Ant script.
# You can use this to override default values such as
# 'source.dir' for the location of your java source folder and
# 'out.dir' for the location of your output folder.
# You can also use it define how the release builds are signed by declaring
# the following properties:
# 'key.store' for the location of your keystore and
# 'key.alias' for the name of the key to use.
# The password will be asked during the build when you use the 'release' target.
tested.project.dir=../
test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner

View file

@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="linphone-tester" xmlns:unless="ant:unless">
<target name="test">
<property name="output.file" value="./tests.output" />
<!-- Possible values for test.size are small or large -->
<property name="test.size" value="small" />
<tstamp>
<format property="archive.name" pattern="'linphonetester_'yyyyMMdd_HHmmss" />
</tstamp>
<echo>Adb log files are put in ${archive.name}.zip</echo>
<exec executable="adb" >
<arg value="logcat" />
<arg value="-c" />
</exec>
<exec executable="./adb-log-start.sh" >
<arg value=" ${archive.name}" />
</exec>
<exec executable="bash">
<arg value="-c"/>
<!-- use 'tee' command to write in file AND to stdout.
First is used below to check if tests failed or not
while second is used to get output in real time -->
<arg value="adb shell am instrument -r -w -e size ${test.size} org.linphone.test/com.zutubi.android.junitreport.JUnitReportTestRunner | tee ${output.file}"/>
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="kill `cat adb.pid`" />
</exec>
<condition property="has.crashed" >
<or>
<resourcecontains resource="${output.file}" substring="Process crashed" />
<resourcecontains resource="${output.file}" substring="Native crash" />
<resourcecontains resource="${output.file}" substring="longMsg=junit.framework.AssertionFailedError: View with id: '" />
<resourcecontains resource="${output.file}" substring="longMsg=java.lang.RuntimeException:" />
<resourcecontains resource="${output.file}" substring="longMsg=java.lang.NullPointerException:" />
<resourcecontains resource="${output.file}" substring="android.util.AndroidException: INSTRUMENTATION_FAILED:" />
</or>
</condition>
<exec executable="bash" unless:set="has.crashed">
<arg value="-c"/>
<arg value="adb shell cat /data/data/org.linphone/files/junit-report.xml > linphone-junit-report-${test.size}.xml"/>
</exec>
<zip destfile="${archive.name}.zip">
<fileset dir="." includes="${archive.name}"/>
</zip>
<antcall target="check-for-crash"/>
<fail message="Tests failed" status="42">
<condition>
<resourcecontains resource="${output.file}" substring="FAILURES" />
</condition>
</fail>
<delete file="${archive.name}"/>
<delete file="${output.file}"/>
</target>
<target name="check-for-crash" if="has.crashed">
<exec executable="adb" outputproperty="arch">
<arg value="shell"/>
<arg value="getprop" />
<arg value="ro.product.cpu.abi"/>
</exec>
<exec executable="bash" outputproperty="abi">
<arg value="-c"/>
<arg value="echo ${arch} | tr -d '\r'"/>
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="tail -n 500 ${archive.name}" />
</exec>
<exec executable="bash" >
<arg value="-c" />
<arg value="cat ${archive.name} |ndk-stack -sym obj/local/${abi}" />
</exec>
<fail message="Tests crashed" status="125"/>
</target>
</project>

Binary file not shown.

View file

@ -1,37 +0,0 @@
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from lib.LinphoneTest import LinphoneTest
class CallTest(LinphoneTest):
def precond(self):
# Run Linphone
runComponent = 'org.linphone' + '/' + 'org.linphone.setup.LinphoneActivity'
self.device.startActivity(component=runComponent)
# Be sure to be on dialer screen
dialer = self.find('dialer')
self.easyDevice.touch(dialer, MonkeyDevice.DOWN_AND_UP)
def test(self):
# Type a SIP address
address = self.find('Adress')
self.easyDevice.type(address, 'cotcot@sip.linphone.org')
self.device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
# Try to call previously typed address
call = self.find('Call')
self.easyDevice.touch(call, MonkeyDevice.DOWN_AND_UP)
MonkeyRunner.sleep(2)
# Check if the call is outgoing correctly
contact = self.find('contactNameOrNumber')
return contact
def postcond(self):
# Stop the call
hangUp = self.find('hangUp')
self.easyDevice.touch(hangUp, MonkeyDevice.DOWN_AND_UP)
callTest = CallTest('Call')
callTest.run()

View file

@ -1,51 +0,0 @@
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from lib.LinphoneTest import LinphoneTest
class ConfigurationTest(LinphoneTest):
def setAccount(self, username, password, domain):
self.username = username
self.password = password
self.domain = domain
def precond(self):
# Run the setup assistant
runComponent = 'org.linphone' + '/' + 'org.linphone.setup.SetupActivity'
self.device.startActivity(component=runComponent)
MonkeyRunner.sleep(2)
def next(self):
# Press next button
next = self.find('setup_next')
self.easyDevice.touch(next, MonkeyDevice.DOWN_AND_UP)
def test(self):
self.next()
# Choose SIP account
login = self.find('setup_login_generic')
self.easyDevice.touch(login, MonkeyDevice.DOWN_AND_UP)
# Fill the fields
username = self.find('setup_username')
self.easyDevice.type(username, self.username)
password = self.find('setup_password')
self.easyDevice.type(password, self.password)
domain = self.find('setup_domain')
self.easyDevice.type(domain, self.domain)
# Hide the keyboard
self.press_back()
# Apply config
apply = self.find('setup_apply')
self.easyDevice.touch(apply, MonkeyDevice.DOWN_AND_UP)
return True
configTest = ConfigurationTest('Account configuration')
configTest.setAccount('monkey', 'cotcot', 'test.linphone.org')
configTest.run()

View file

@ -1,28 +0,0 @@
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from lib.LinphoneTest import LinphoneTest
class InstallTest(LinphoneTest):
def test(self):
# Parameters, must be the same as in the build.xml file
package = 'org.linphone'
appname = 'Linphone'
activity = 'org.linphone.LinphoneLauncherActivity'
# Installs the Android package. Notice that this method returns a boolean, so you can test
# to see if the installation worked.
self.device.installPackage('../bin/' + appname + '-debug.apk')
# sets the name of the component to start
runComponent = package + '/' + activity
# Runs the component and wait for it to be launched
self.device.startActivity(component=runComponent)
MonkeyRunner.sleep(7)
menu = self.find('menu')
return menu
installTest = InstallTest('Install')
installTest.run()

View file

@ -1,58 +0,0 @@
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
from com.android.monkeyrunner.easy import EasyMonkeyDevice
from com.android.monkeyrunner.easy import By
class colors:
OK = '\033[92m'
KO = '\033[91m'
END = '\033[0m'
class LinphoneTest():
def __init__(self, test_name):
self.test_name = test_name
# Connects to the current device
self.device = MonkeyRunner.waitForConnection()
self.easyDevice = EasyMonkeyDevice(self.device)
def run(self):
self.precond()
try:
result = self.test()
if result :
self.print_result_ok()
else :
self.print_result_ko()
except Exception:
self.print_result_ko()
finally:
self.postcond()
def find(self, id):
view = By.id('id/' + id)
if not view:
raise Exception("View with id/" + id + " not found")
return view
def print_result_ok(self):
print self.test_name + colors.OK + ' OK' + colors.END
def print_result_ko(self):
print self.test_name + colors.KO + ' KO' + colors.END
def press_back(self):
self.device.press('KEYCODE_BACK', MonkeyDevice.DOWN_AND_UP)
# Override following methods
def precond(self):
pass
def test(self):
pass
def postcond(self):
pass

View file

@ -1,20 +0,0 @@
# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Linphone-android-testTest</string>
</resources>