6
require File.join(File.dirname(__FILE__), '../keyboard')
7
require File.join(File.dirname(__FILE__), '../clipboard')
8
require File.join(File.dirname(__FILE__), '../xwindow')
9
require File.join(File.dirname(__FILE__), '../simulatable')
11
class TestKeyboard < Test::Unit::TestCase
13
#Command to start a simple text editor
14
EDITOR_CMD = "gedit -s"
17
TESTTEXT = "This is test\ntext."
19
TESTTEXT_RAW = "ä{TAB}?b"
20
TESTTEXT_SPECIAL = "ab{TAB}c{TAB}{TAB}d"
23
@editor_pipe = IO.popen(EDITOR_CMD, 'r')
28
Process.kill 'TERM', @editor_pipe.pid
33
Process.kill 'TERM', @editor_pipe.pid
34
@editor_pipe.close #Special file need to be opened
35
tempfile = Tempfile.open("XDOTEST")
36
tempfile.write(TESTTEXT)
38
sleep 3 #Wait for the buffer to be written out
39
@editor_pipe = IO.popen(EDITOR_CMD + ' ' + tempfile.path, 'r') #So it's automatically killed by #teardown
42
20.times{XDo::Keyboard.char("Shift+Right")}
45
assert_equal(TESTTEXT, XDo::Clipboard.read_clipboard)
49
XDo::Keyboard.simulate("A{BS}#{TESTTEXT2}")
53
assert_equal(TESTTEXT2, XDo::Clipboard.read_clipboard)
57
XDo::Keyboard.simulate(TESTTEXT_SPECIAL)
61
assert_equal(TESTTEXT_SPECIAL.gsub("{TAB}", "\t"), XDo::Clipboard.read_clipboard)
65
XDo::Keyboard.simulate(TESTTEXT_RAW, true)
69
assert_equal(TESTTEXT_RAW, XDo::Clipboard.read_clipboard)
73
XDo::Keyboard.type(TESTTEXT2)
77
assert_equal(TESTTEXT2, XDo::Clipboard.read_clipboard)
81
XDo::XWindow.unfocus #Ensure that the editor hasn't the input focus anymore
83
edit_id = XDo::XWindow.search(EDITOR_NAME).last
84
xwin = XDo::XWindow.new(edit_id)
85
XDo::Keyboard.simulate(TESTTEXT_SPECIAL, false, edit_id)
91
assert_equal(TESTTEXT_SPECIAL.gsub("{TAB}", "\t"), XDo::Clipboard.read_clipboard)
96
include XDo::Simulatable
105
"Ein String".simulate
110
clip = XDo::Clipboard.read_clipboard
111
assert_equal("Ein String", clip, "Simulated typed string fails to match")