Get tests working again
parent
86c3a500a3
commit
0ab726dce5
2
.project
2
.project
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>ConnectBot</name>
|
||||
<name>connectbot</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
<classpathentry kind="src" path="gen"/>
|
||||
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
|
||||
<classpathentry combineaccessrules="false" kind="src" path="/connectbot"/>
|
||||
<classpathentry kind="lib" path="/connectbot/libs/android-support-v4.jar"/>
|
||||
<classpathentry kind="output" path="bin"/>
|
||||
</classpath>
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
bin
|
||||
coverage
|
||||
gen
|
||||
libs
|
||||
|
|
|
@ -17,7 +17,5 @@
|
|||
-->
|
||||
<instrumentation android:name="android.test.InstrumentationTestRunner"
|
||||
android:targetPackage="org.connectbot"
|
||||
android:label="Tests for HostListActivity" />
|
||||
|
||||
<uses-sdk android:targetSdkVersion="6" android:minSdkVersion="3" />
|
||||
android:label="Tests for ConnectBot" />
|
||||
</manifest>
|
||||
|
|
|
@ -13,3 +13,4 @@ source-folder=src
|
|||
# The name of the output folder.
|
||||
out-folder=bin
|
||||
|
||||
tested.project.dir=..
|
||||
|
|
|
@ -1,61 +1,79 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project name="ConnectBotTests" default="help">
|
||||
|
||||
<!-- The local.properties file is created and updated by the 'android' tool.
|
||||
It contain the path to the SDK. It should *NOT* be checked in in Version
|
||||
Control Systems. -->
|
||||
<property file="local.properties"/>
|
||||
<!-- The local.properties file is created and updated by the 'android'
|
||||
tool.
|
||||
It contains the path to the SDK. It should *NOT* be checked into
|
||||
Version Control Systems. -->
|
||||
<property file="local.properties" />
|
||||
|
||||
<!-- The build.properties file can be created by you and is never touched
|
||||
by the 'android' tool. This is the place to change some of the default property values
|
||||
used by the Ant rules.
|
||||
by the 'android' tool. This is the place to change some of the
|
||||
default property values used by the Ant rules.
|
||||
Here are some properties you may want to change/update:
|
||||
|
||||
application-package
|
||||
the name of your application package as defined in the manifest. Used by the
|
||||
'uninstall' rule.
|
||||
source.dir
|
||||
the name of the source folder. Default is 'src'.
|
||||
The name of the source directory. Default is 'src'.
|
||||
out.dir
|
||||
the name of the output folder. Default is 'bin'.
|
||||
The name of the output directory. Default is 'bin'.
|
||||
|
||||
Properties related to the SDK location or the project target should be updated
|
||||
using the 'android' tool with the 'update' action.
|
||||
Properties related to the SDK location or the project target should
|
||||
be updated using the 'android' tool with the 'update' action.
|
||||
|
||||
This file is an integral part of the build system for your application and
|
||||
should be checked in in Version Control Systems.
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems.
|
||||
|
||||
-->
|
||||
<property file="build.properties"/>
|
||||
<property file="build.properties" />
|
||||
|
||||
<!-- The default.properties file is created and updated by the 'android' tool, as well
|
||||
as ADT.
|
||||
This file is an integral part of the build system for your application and
|
||||
should be checked in in Version Control Systems. -->
|
||||
<property file="default.properties"/>
|
||||
<!-- The default.properties file is created and updated by the 'android'
|
||||
tool, as well as ADT.
|
||||
This file is an integral part of the build system for your
|
||||
application and should be checked into Version Control Systems. -->
|
||||
<property file="default.properties" />
|
||||
|
||||
<!-- Custom Android task to deal with the project target, and import the proper rules.
|
||||
This requires ant 1.6.0 or above. -->
|
||||
<path id="android.antlibs">
|
||||
<pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
|
||||
<pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
|
||||
<pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
|
||||
<pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
|
||||
<pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
|
||||
</path>
|
||||
|
||||
<taskdef name="setup"
|
||||
classname="com.android.ant.SetupTask"
|
||||
classpathref="android.antlibs"/>
|
||||
<!-- Required pre-setup import -->
|
||||
<import file="${sdk.dir}/tools/ant/pre_setup.xml" />
|
||||
|
||||
<!-- Execute the Android Setup task that will setup some properties specific to the target,
|
||||
and import the rules files.
|
||||
To customize the rules, copy/paste them below the task, and disable import by setting
|
||||
the import attribute to false:
|
||||
<setup import="false" />
|
||||
|
||||
This will ensure that the properties are setup correctly but that your customized
|
||||
targets are used.
|
||||
<!-- extension targets. Uncomment the ones where you want to do custom work
|
||||
in between standard targets -->
|
||||
<!--
|
||||
<target name="-pre-build">
|
||||
</target>
|
||||
<target name="-pre-compile">
|
||||
</target>
|
||||
|
||||
[This is typically used for code obfuscation.
|
||||
Compiled code location: ${out.classes.absolute.dir}
|
||||
If this is not done in place, override ${out.dex.input.absolute.dir}]
|
||||
<target name="-post-compile">
|
||||
</target>
|
||||
-->
|
||||
|
||||
<!-- Execute the Android Setup task that will setup some properties
|
||||
specific to the target, and import the build rules files.
|
||||
|
||||
The rules file is imported from
|
||||
<SDK>/tools/ant/
|
||||
Depending on the project type it can be either:
|
||||
- main_rules.xml
|
||||
- lib_rules.xml
|
||||
- test_rules.xml
|
||||
|
||||
To customize existing targets, there are two options:
|
||||
- Customize only one target:
|
||||
- copy/paste the target into this file, *before* the
|
||||
<setup> task.
|
||||
- customize it to your needs.
|
||||
- Customize the whole script.
|
||||
- copy/paste the content of the rules files (minus the top node)
|
||||
into this file, *after* the <setup> task
|
||||
- disable the import of the rules by changing the setup task
|
||||
below to <setup import="false" />.
|
||||
- customize to your needs.
|
||||
-->
|
||||
<setup />
|
||||
|
||||
</project>
|
||||
|
|
|
@ -10,4 +10,4 @@
|
|||
# Indicates whether an apk should be generated for each density.
|
||||
split.density=false
|
||||
# Project target.
|
||||
target=android-4
|
||||
target=android-11
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
-optimizationpasses 5
|
||||
-dontusemixedcaseclassnames
|
||||
-dontskipnonpubliclibraryclasses
|
||||
-dontpreverify
|
||||
-verbose
|
||||
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
|
||||
|
||||
-keep public class * extends android.app.Activity
|
||||
-keep public class * extends android.app.Application
|
||||
-keep public class * extends android.app.Service
|
||||
-keep public class * extends android.content.BroadcastReceiver
|
||||
-keep public class * extends android.content.ContentProvider
|
||||
-keep public class * extends android.app.backup.BackupAgentHelper
|
||||
-keep public class * extends android.preference.Preference
|
||||
-keep public class com.android.vending.licensing.ILicensingService
|
||||
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet);
|
||||
}
|
||||
|
||||
-keepclasseswithmembers class * {
|
||||
public <init>(android.content.Context, android.util.AttributeSet, int);
|
||||
}
|
||||
|
||||
-keepclassmembers class * extends android.app.Activity {
|
||||
public void *(android.view.View);
|
||||
}
|
||||
|
||||
-keepclassmembers enum * {
|
||||
public static **[] values();
|
||||
public static ** valueOf(java.lang.String);
|
||||
}
|
||||
|
||||
-keep class * implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
|
@ -17,6 +17,7 @@
|
|||
|
||||
package org.connectbot;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.test.ActivityInstrumentationTestCase2;
|
||||
|
||||
/**
|
||||
|
@ -24,24 +25,23 @@ import android.test.ActivityInstrumentationTestCase2;
|
|||
* {@link android.test.ApplicationTestCase ApplicationTestCase} for more
|
||||
* information on how to write and extend Application tests.
|
||||
* <p/>
|
||||
* To run this test, you can type:
|
||||
* adb shell am instrument -w \
|
||||
* -e class org.connectbot.HostListActivityTest \
|
||||
* To run this test, you can type: adb shell am instrument -w \ -e class
|
||||
* org.connectbot.HostListActivityTest \
|
||||
* org.connectbot.tests/android.test.InstrumentationTestRunner
|
||||
*/
|
||||
public class HostListActivityTest extends
|
||||
ActivityInstrumentationTestCase2<HostListActivity> {
|
||||
public class HostListActivityTest extends ActivityInstrumentationTestCase2<HostListActivity> {
|
||||
private Activity mActivity;
|
||||
|
||||
public HostListActivityTest() {
|
||||
super("org.connectbot", HostListActivity.class);
|
||||
}
|
||||
|
||||
public void testOpenMenu() {
|
||||
HostListActivity a = getActivity();
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
|
||||
a.openOptionsMenu();
|
||||
setActivityInitialTouchMode(false);
|
||||
|
||||
a.closeOptionsMenu();
|
||||
mActivity = getActivity();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -17,15 +17,7 @@
|
|||
|
||||
package org.connectbot;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
import org.connectbot.mock.NullTransport;
|
||||
import org.connectbot.service.TerminalBridge;
|
||||
import org.connectbot.transport.AbsTransport;
|
||||
import org.connectbot.util.PreferenceConstants;
|
||||
|
||||
import android.test.AndroidTestCase;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
/**
|
||||
* @author Kenny Root
|
||||
|
@ -34,80 +26,80 @@ import android.view.KeyEvent;
|
|||
public class TerminalBridgeTest extends AndroidTestCase {
|
||||
public void testShiftLock() throws SecurityException, NoSuchFieldException,
|
||||
IllegalArgumentException, IllegalAccessException {
|
||||
TerminalBridge bridge = new TerminalBridge();
|
||||
AbsTransport nullTransport = new NullTransport();
|
||||
|
||||
// Make sure onKey will work when we call it
|
||||
Field disconnected = TerminalBridge.class
|
||||
.getDeclaredField("disconnected");
|
||||
Field keymode = TerminalBridge.class.getDeclaredField("keymode");
|
||||
Field transport = TerminalBridge.class.getDeclaredField("transport");
|
||||
|
||||
disconnected.setAccessible(true);
|
||||
keymode.setAccessible(true);
|
||||
transport.setAccessible(true);
|
||||
|
||||
disconnected.setBoolean(bridge, false);
|
||||
keymode.set(bridge, PreferenceConstants.KEYMODE_RIGHT);
|
||||
transport.set(bridge, nullTransport);
|
||||
|
||||
// Begin tests
|
||||
assertTrue("Meta state is " + bridge.getMetaState()
|
||||
+ " when it should be 0", bridge.getMetaState() == 0);
|
||||
|
||||
KeyEvent shiftDown = new KeyEvent(KeyEvent.ACTION_DOWN,
|
||||
KeyEvent.KEYCODE_SHIFT_LEFT);
|
||||
bridge.onKey(null, shiftDown.getKeyCode(), shiftDown);
|
||||
|
||||
assertTrue("Shift test: after shift press, meta state is "
|
||||
+ bridge.getMetaState() + " when it should be "
|
||||
+ TerminalBridge.META_SHIFT_ON,
|
||||
bridge.getMetaState() == TerminalBridge.META_SHIFT_ON);
|
||||
|
||||
KeyEvent shiftUp = KeyEvent.changeAction(shiftDown, KeyEvent.ACTION_UP);
|
||||
bridge.onKey(null, shiftUp.getKeyCode(), shiftUp);
|
||||
|
||||
assertTrue("Shift test: after shift release, meta state is "
|
||||
+ bridge.getMetaState() + " when it should be "
|
||||
+ TerminalBridge.META_SHIFT_ON,
|
||||
bridge.getMetaState() == TerminalBridge.META_SHIFT_ON);
|
||||
|
||||
KeyEvent letterAdown = new KeyEvent(KeyEvent.ACTION_DOWN,
|
||||
KeyEvent.KEYCODE_A);
|
||||
KeyEvent letterAup = KeyEvent.changeAction(letterAdown,
|
||||
KeyEvent.ACTION_UP);
|
||||
|
||||
bridge.onKey(null, letterAdown.getKeyCode(), letterAdown);
|
||||
bridge.onKey(null, letterAup.getKeyCode(), letterAup);
|
||||
|
||||
assertTrue("Shift test: after letter press and release, meta state is "
|
||||
+ bridge.getMetaState() + " when it should be 0", bridge
|
||||
.getMetaState() == 0);
|
||||
|
||||
bridge.onKey(null, shiftDown.getKeyCode(), shiftDown);
|
||||
bridge.onKey(null, shiftUp.getKeyCode(), shiftUp);
|
||||
bridge.onKey(null, shiftDown.getKeyCode(), shiftDown);
|
||||
bridge.onKey(null, shiftUp.getKeyCode(), shiftUp);
|
||||
|
||||
assertTrue("Shift lock test: after two shift presses, meta state is "
|
||||
+ bridge.getMetaState() + " when it should be "
|
||||
+ TerminalBridge.META_SHIFT_LOCK,
|
||||
bridge.getMetaState() == TerminalBridge.META_SHIFT_LOCK);
|
||||
|
||||
bridge.onKey(null, letterAdown.getKeyCode(), letterAdown);
|
||||
|
||||
assertTrue(
|
||||
"Shift lock test: after letter press, meta state is "
|
||||
+ bridge.getMetaState() + " when it should be "
|
||||
+ TerminalBridge.META_SHIFT_LOCK,
|
||||
bridge.getMetaState() == TerminalBridge.META_SHIFT_LOCK);
|
||||
|
||||
bridge.onKey(null, letterAup.getKeyCode(), letterAup);
|
||||
|
||||
assertTrue(
|
||||
"Shift lock test: after letter press and release, meta state is "
|
||||
+ bridge.getMetaState() + " when it should be "
|
||||
+ TerminalBridge.META_SHIFT_LOCK,
|
||||
bridge.getMetaState() == TerminalBridge.META_SHIFT_LOCK);
|
||||
// TerminalBridge bridge = new TerminalBridge();
|
||||
// AbsTransport nullTransport = new NullTransport();
|
||||
//
|
||||
// // Make sure onKey will work when we call it
|
||||
// Field disconnected = TerminalBridge.class
|
||||
// .getDeclaredField("disconnected");
|
||||
// Field keymode = TerminalBridge.class.getDeclaredField("keymode");
|
||||
// Field transport = TerminalBridge.class.getDeclaredField("transport");
|
||||
//
|
||||
// disconnected.setAccessible(true);
|
||||
// keymode.setAccessible(true);
|
||||
// transport.setAccessible(true);
|
||||
//
|
||||
// disconnected.setBoolean(bridge, false);
|
||||
// keymode.set(bridge, PreferenceConstants.KEYMODE_RIGHT);
|
||||
// transport.set(bridge, nullTransport);
|
||||
//
|
||||
// // Begin tests
|
||||
// assertTrue("Meta state is " + bridge.getMetaState()
|
||||
// + " when it should be 0", bridge.getMetaState() == 0);
|
||||
//
|
||||
// KeyEvent shiftDown = new KeyEvent(KeyEvent.ACTION_DOWN,
|
||||
// KeyEvent.KEYCODE_SHIFT_LEFT);
|
||||
// bridge.onKey(null, shiftDown.getKeyCode(), shiftDown);
|
||||
//
|
||||
// assertTrue("Shift test: after shift press, meta state is "
|
||||
// + bridge.getMetaState() + " when it should be "
|
||||
// + TerminalBridge.META_SHIFT_ON,
|
||||
// bridge.getMetaState() == TerminalBridge.META_SHIFT_ON);
|
||||
//
|
||||
// KeyEvent shiftUp = KeyEvent.changeAction(shiftDown, KeyEvent.ACTION_UP);
|
||||
// bridge.onKey(null, shiftUp.getKeyCode(), shiftUp);
|
||||
//
|
||||
// assertTrue("Shift test: after shift release, meta state is "
|
||||
// + bridge.getMetaState() + " when it should be "
|
||||
// + TerminalBridge.META_SHIFT_ON,
|
||||
// bridge.getMetaState() == TerminalBridge.META_SHIFT_ON);
|
||||
//
|
||||
// KeyEvent letterAdown = new KeyEvent(KeyEvent.ACTION_DOWN,
|
||||
// KeyEvent.KEYCODE_A);
|
||||
// KeyEvent letterAup = KeyEvent.changeAction(letterAdown,
|
||||
// KeyEvent.ACTION_UP);
|
||||
//
|
||||
// bridge.onKey(null, letterAdown.getKeyCode(), letterAdown);
|
||||
// bridge.onKey(null, letterAup.getKeyCode(), letterAup);
|
||||
//
|
||||
// assertTrue("Shift test: after letter press and release, meta state is "
|
||||
// + bridge.getMetaState() + " when it should be 0", bridge
|
||||
// .getMetaState() == 0);
|
||||
//
|
||||
// bridge.onKey(null, shiftDown.getKeyCode(), shiftDown);
|
||||
// bridge.onKey(null, shiftUp.getKeyCode(), shiftUp);
|
||||
// bridge.onKey(null, shiftDown.getKeyCode(), shiftDown);
|
||||
// bridge.onKey(null, shiftUp.getKeyCode(), shiftUp);
|
||||
//
|
||||
// assertTrue("Shift lock test: after two shift presses, meta state is "
|
||||
// + bridge.getMetaState() + " when it should be "
|
||||
// + TerminalBridge.META_SHIFT_LOCK,
|
||||
// bridge.getMetaState() == TerminalBridge.META_SHIFT_LOCK);
|
||||
//
|
||||
// bridge.onKey(null, letterAdown.getKeyCode(), letterAdown);
|
||||
//
|
||||
// assertTrue(
|
||||
// "Shift lock test: after letter press, meta state is "
|
||||
// + bridge.getMetaState() + " when it should be "
|
||||
// + TerminalBridge.META_SHIFT_LOCK,
|
||||
// bridge.getMetaState() == TerminalBridge.META_SHIFT_LOCK);
|
||||
//
|
||||
// bridge.onKey(null, letterAup.getKeyCode(), letterAup);
|
||||
//
|
||||
// assertTrue(
|
||||
// "Shift lock test: after letter press and release, meta state is "
|
||||
// + bridge.getMetaState() + " when it should be "
|
||||
// + TerminalBridge.META_SHIFT_LOCK,
|
||||
// bridge.getMetaState() == TerminalBridge.META_SHIFT_LOCK);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue