diff options
author | Kenny Root <kenny@the-b.org> | 2009-05-14 12:37:30 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-05-14 12:37:30 +0000 |
commit | db208c992937b9a522f0ba50a5356b53de719523 (patch) | |
tree | 3723c462f06403b143d48724cfe8f4ba0a2072d0 /tests/src | |
parent | 06a3bb922b26809c979dd815f3427410c08ecccd (diff) | |
download | connectbot-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/src')
-rw-r--r-- | tests/src/org/connectbot/HostBeanTest.java | 1 | ||||
-rw-r--r-- | tests/src/org/connectbot/TerminalBridgeTest.java | 117 | ||||
-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.java | 33 |
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 + } + +} |