aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-05-14 12:37:30 +0000
committerKenny Root <kenny@the-b.org>2009-05-14 12:37:30 +0000
commitdb208c992937b9a522f0ba50a5356b53de719523 (patch)
tree3723c462f06403b143d48724cfe8f4ba0a2072d0 /tests
parent06a3bb922b26809c979dd815f3427410c08ecccd (diff)
downloadconnectbot-db208c992937b9a522f0ba50a5356b53de719523.tar.gz
connectbot-db208c992937b9a522f0ba50a5356b53de719523.tar.bz2
connectbot-db208c992937b9a522f0ba50a5356b53de719523.zip
Added test case for TerminalBridge.onKey and fixed a bug in meta states
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@234 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'tests')
-rw-r--r--tests/src/org/connectbot/HostBeanTest.java1
-rw-r--r--tests/src/org/connectbot/TerminalBridgeTest.java117
-rw-r--r--tests/src/org/connectbot/mock/BeanTestCase.java (renamed from tests/src/org/connectbot/BeanTestCase.java)2
-rw-r--r--tests/src/org/connectbot/mock/NullOutputStream.java33
4 files changed, 152 insertions, 1 deletions
diff --git a/tests/src/org/connectbot/HostBeanTest.java b/tests/src/org/connectbot/HostBeanTest.java
index d24427e..671d1ce 100644
--- a/tests/src/org/connectbot/HostBeanTest.java
+++ b/tests/src/org/connectbot/HostBeanTest.java
@@ -18,6 +18,7 @@
package org.connectbot;
import org.connectbot.bean.HostBean;
+import org.connectbot.mock.BeanTestCase;
import android.test.AndroidTestCase;
diff --git a/tests/src/org/connectbot/TerminalBridgeTest.java b/tests/src/org/connectbot/TerminalBridgeTest.java
new file mode 100644
index 0000000..50a2fdf
--- /dev/null
+++ b/tests/src/org/connectbot/TerminalBridgeTest.java
@@ -0,0 +1,117 @@
+/*
+ ConnectBot: simple, powerful, open-source SSH client for Android
+ Copyright (C) 2007-2008 Kenny Root, Jeffrey Sharkey
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.connectbot;
+
+import java.io.OutputStream;
+import java.lang.reflect.Field;
+
+import org.connectbot.mock.NullOutputStream;
+import org.connectbot.service.TerminalBridge;
+
+import android.test.AndroidTestCase;
+import android.view.KeyEvent;
+
+/**
+ * @author Kenny Root
+ *
+ */
+public class TerminalBridgeTest extends AndroidTestCase {
+ public void testShiftLock() throws SecurityException, NoSuchFieldException,
+ IllegalArgumentException, IllegalAccessException {
+ TerminalBridge bridge = new TerminalBridge();
+
+ OutputStream nullStream = new NullOutputStream();
+
+ // Make sure onKey will work when we call it
+ Field disconnected = TerminalBridge.class
+ .getDeclaredField("disconnected");
+ Field sessionOpen = TerminalBridge.class
+ .getDeclaredField("sessionOpen");
+ Field keymode = TerminalBridge.class.getDeclaredField("keymode");
+ Field stdin = TerminalBridge.class.getDeclaredField("stdin");
+
+ disconnected.setAccessible(true);
+ sessionOpen.setAccessible(true);
+ keymode.setAccessible(true);
+ stdin.setAccessible(true);
+
+ disconnected.setBoolean(bridge, false);
+ sessionOpen.setBoolean(bridge, true);
+ keymode.set(bridge, "Use right-side keys");
+ stdin.set(bridge, nullStream);
+
+ // 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);
+ }
+}
diff --git a/tests/src/org/connectbot/BeanTestCase.java b/tests/src/org/connectbot/mock/BeanTestCase.java
index 442bb6d..5d13d9f 100644
--- a/tests/src/org/connectbot/BeanTestCase.java
+++ b/tests/src/org/connectbot/mock/BeanTestCase.java
@@ -1,7 +1,7 @@
/**
* Originally from http://www.cornetdesign.com/files/BeanTestCase.java.txt
*/
-package org.connectbot;
+package org.connectbot.mock;
import junit.framework.TestCase;
diff --git a/tests/src/org/connectbot/mock/NullOutputStream.java b/tests/src/org/connectbot/mock/NullOutputStream.java
new file mode 100644
index 0000000..38de1e1
--- /dev/null
+++ b/tests/src/org/connectbot/mock/NullOutputStream.java
@@ -0,0 +1,33 @@
+/*
+ ConnectBot: simple, powerful, open-source SSH client for Android
+ Copyright (C) 2007-2008 Kenny Root, Jeffrey Sharkey
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.connectbot.mock;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+/**
+ * @author Kenny Root
+ *
+ */
+public class NullOutputStream extends OutputStream {
+ @Override
+ public void write(int arg0) throws IOException {
+ // do nothing
+ }
+
+}