au3 0.0.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/README.rdoc +84 -0
- data/ext/au3.c +2225 -0
- data/ext/au3.o +0 -0
- data/ext/au3.so +0 -0
- data/ext/extconf.rb +14 -0
- data/ext/parts/control.c +628 -0
- data/ext/parts/filedir.c +121 -0
- data/ext/parts/graphic.c +51 -0
- data/ext/parts/keyboard.c +29 -0
- data/ext/parts/misc.c +107 -0
- data/ext/parts/mouse.c +130 -0
- data/ext/parts/process.c +143 -0
- data/ext/parts/utils.c +53 -0
- data/ext/parts/wconv.c +40 -0
- data/ext/parts/window.c +497 -0
- data/test/test_clipboard.rb +19 -0
- data/test/test_ini.rb +48 -0
- data/test/test_keyboard.rb +61 -0
- data/test/test_mouse.rb +43 -0
- data/test/test_process.rb +50 -0
- data/test/test_tray.rb +29 -0
- data/test/test_window.rb +104 -0
- metadata +88 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class ClipboardTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
def test_clipboard
|
15
|
+
AutoItX3.cliptext = "HDGDL"
|
16
|
+
assert_equal("HDGDL", AutoItX3.cliptext)
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/test/test_ini.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class IniTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
TEST_INI =<<EOF
|
15
|
+
[Section1]
|
16
|
+
key1=val1
|
17
|
+
[Section2]
|
18
|
+
key1=val2
|
19
|
+
EOF
|
20
|
+
|
21
|
+
INI_NAME = "test.ini"
|
22
|
+
|
23
|
+
def self.startup
|
24
|
+
File.open(INI_NAME, "w"){|f| f.write(TEST_INI)}
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_read
|
28
|
+
assert_equal("val1", AutoItX3.read_ini_entry(INI_NAME, "Section1", "key1", ""))
|
29
|
+
assert_equal("val2", AutoItX3.read_ini_entry(INI_NAME, "Section2", "key1", ""))
|
30
|
+
assert_equal("XXX", AutoItX3.read_ini_entry(INI_NAME, "Section3", "key1", "XXX"))
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_write
|
34
|
+
AutoItX3.write_ini_entry(INI_NAME, "NewSection", "key", "aValue")
|
35
|
+
assert_equal("aValue", AutoItX3.read_ini_entry(INI_NAME, "NewSection", "key", ""))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_delete
|
39
|
+
AutoItX3.write_ini_entry(INI_NAME, "ASection", "key", "aValue")
|
40
|
+
AutoItX3.delete_ini_entry(INI_NAME, "ASection", "key")
|
41
|
+
assert_equal("XXX", AutoItX3.read_ini_entry(INI_NAME, "ASection", "key", "XXX"))
|
42
|
+
end
|
43
|
+
|
44
|
+
def self.shutdown
|
45
|
+
File.delete(INI_NAME)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class KeyboardTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
TEXT1 = "abc"
|
15
|
+
TEXT2 = "One with\nNewline"
|
16
|
+
TEXT3 = "With{TAB}tab"
|
17
|
+
|
18
|
+
def setup
|
19
|
+
@pid = AutoItX3.run("notepad", "", AutoItX3::Window::SW_MAXIMIZE)
|
20
|
+
sleep 2
|
21
|
+
AutoItX3.mouse_click(150, 150)
|
22
|
+
end
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
AutoItX3.kill_process(@pid)
|
26
|
+
sleep 1
|
27
|
+
end
|
28
|
+
|
29
|
+
def copy_all
|
30
|
+
AutoItX3.send_keys("^a")
|
31
|
+
AutoItX3.msleep(200)
|
32
|
+
AutoItX3.send_keys("^c")
|
33
|
+
AutoItX3.msleep(200)
|
34
|
+
end
|
35
|
+
|
36
|
+
def delete_all
|
37
|
+
AutoItX3.send_keys("^a")
|
38
|
+
AutoItX3.msleep(200)
|
39
|
+
AutoItX3.send_keys("{BS}")
|
40
|
+
AutoItX3.msleep(200)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_send
|
44
|
+
AutoItX3.send_keys(TEXT1)
|
45
|
+
copy_all
|
46
|
+
assert_equal(TEXT1, AutoItX3.cliptext)
|
47
|
+
delete_all
|
48
|
+
AutoItX3.send_keys(TEXT2)
|
49
|
+
copy_all
|
50
|
+
assert_equal(TEXT2.sub("\n", "\r\n"), AutoItX3.cliptext)
|
51
|
+
delete_all
|
52
|
+
AutoItX3.send_keys(TEXT3)
|
53
|
+
copy_all
|
54
|
+
assert_equal(TEXT3.sub("{TAB}", "\t"), AutoItX3.cliptext)
|
55
|
+
delete_all
|
56
|
+
AutoItX3.send_keys(TEXT3, true)
|
57
|
+
copy_all
|
58
|
+
assert_equal(TEXT3, AutoItX3.cliptext)
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/test/test_mouse.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class MouseTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
THREADS = []
|
15
|
+
|
16
|
+
def self.shutdown
|
17
|
+
THREADS.each{|t| t.join}
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_cursor_id
|
21
|
+
pid = AutoItX3.run("notepad", "", AutoItX3::Window::SW_MAXIMIZE)
|
22
|
+
AutoItX3.move_mouse(150, 150)
|
23
|
+
THREADS << Thread.new{sleep 1;AutoItX3.kill_process(pid)}
|
24
|
+
assert_equal(AutoItX3::IBEAM_CURSOR, AutoItX3.cursor_id)
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_move_curpos
|
28
|
+
AutoItX3.move_mouse(23, 74)
|
29
|
+
assert_equal([23, 74], AutoItX3.cursor_pos)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_click
|
33
|
+
pid = AutoItX3.run("notepad", "", AutoItX3::Window::SW_MAXIMIZE)
|
34
|
+
AutoItX3.mouse_click(1000000, 5) #End of screen
|
35
|
+
THREADS << Thread.new{sleep 1;AutoItX3.kill_process(pid)}
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_tooltip
|
39
|
+
assert_nil(AutoItX3.tooltip("Google is watching you!"))
|
40
|
+
sleep 1
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class ProcessTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
DUMMY_PROG =<<EOF
|
15
|
+
#Encoding: Windows-1252
|
16
|
+
loop{sleep 1}
|
17
|
+
EOF
|
18
|
+
|
19
|
+
def self.startup
|
20
|
+
AutoItX3.opt("WinTitleMatchMode", 2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_exists
|
24
|
+
assert_equal($$, AutoItX3.process_exists?($$))
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_kill
|
28
|
+
File.open("dummy.rb", "w"){|f| f.write(DUMMY_PROG)}
|
29
|
+
pid = AutoItX3.run("ruby dummy.rb")
|
30
|
+
sleep 1
|
31
|
+
assert_equal(pid, AutoItX3.process_exists?(pid))
|
32
|
+
AutoItX3.kill_process(pid)
|
33
|
+
sleep 1
|
34
|
+
assert_equal(false, AutoItX3.process_exists?(pid))
|
35
|
+
File.delete("dummy.rb")
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_wait
|
39
|
+
pid = AutoItX3.run("mspaint")
|
40
|
+
assert(AutoItX3.wait_for_process("mspaint.exe", 5))
|
41
|
+
sleep 1
|
42
|
+
AutoItX3.kill_process(pid)
|
43
|
+
assert(AutoItX3.wait_for_process_close("mspaint.exe", 2))
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_run_and_wait
|
47
|
+
assert_equal(1, AutoItX3.run_and_wait("dir gibtsnich"))
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
data/test/test_tray.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class CDTrayTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
TEST_TRAY = "E:"
|
15
|
+
|
16
|
+
def test_open
|
17
|
+
assert(AutoItX3.open_cd_tray(TEST_TRAY))
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_close
|
21
|
+
AutoItX3.open_cd_tray(TEST_TRAY)
|
22
|
+
if !AutoItX3.close_cd_tray(TEST_TRAY)
|
23
|
+
notify "Could not close your CD tray. Are you running on a laptop?"
|
24
|
+
else
|
25
|
+
assert(true)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/test/test_window.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
#Encoding: Windows-1252
|
2
|
+
#This file is part of au3.
|
3
|
+
#Copyright (c) 2009 Marvin G�lker
|
4
|
+
begin
|
5
|
+
require "../ext/au3"
|
6
|
+
rescue LoadError
|
7
|
+
#Aha, this is the gem, not the build environment
|
8
|
+
require "au3"
|
9
|
+
end
|
10
|
+
require "test/unit"
|
11
|
+
|
12
|
+
class WindowTest < Test::Unit::TestCase
|
13
|
+
|
14
|
+
THREADS = []
|
15
|
+
|
16
|
+
def self.startup
|
17
|
+
AutoItX3.opt("WinTitleMatchMode", 2)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.shutdown
|
21
|
+
THREADS.each{|t| t.join}
|
22
|
+
end
|
23
|
+
|
24
|
+
def setup
|
25
|
+
@pid = AutoItX3.run("mspaint")
|
26
|
+
AutoItX3::Window.wait("Paint")
|
27
|
+
@win = AutoItX3::Window.new("Paint")
|
28
|
+
end
|
29
|
+
|
30
|
+
def teardown
|
31
|
+
@win.kill
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_exists
|
35
|
+
assert_true(AutoItX3::Window.exists?(@win.title))
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_activate
|
39
|
+
pid = AutoItX3.run("calc")
|
40
|
+
THREADS << Thread.new{sleep 3; AutoItX3.kill_process(pid)}
|
41
|
+
sleep 1
|
42
|
+
assert_equal(false, @win.active?)
|
43
|
+
@win.activate
|
44
|
+
sleep 1
|
45
|
+
assert_true(@win.active?)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_states
|
49
|
+
@win.state = AutoItX3::Window::SW_MINIMIZE
|
50
|
+
sleep 1
|
51
|
+
assert_true(@win.minimized?)
|
52
|
+
@win.state = AutoItX3::Window::SW_RESTORE
|
53
|
+
sleep 1
|
54
|
+
assert_equal(false, @win.minimized?)
|
55
|
+
@win.state = AutoItX3::Window::SW_MAXIMIZE
|
56
|
+
sleep 1
|
57
|
+
assert_true(@win.maximized?)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_move_and_resize
|
61
|
+
@win.move(37, 45, 200, 200)
|
62
|
+
sleep 1
|
63
|
+
assert_equal([37, 45], @win.rect[0..1])
|
64
|
+
@win.move(0, 0, 420, 450)
|
65
|
+
sleep 1
|
66
|
+
assert_equal([0, 0, 420, 450], @win.rect)
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_pid
|
70
|
+
assert_equal(@pid, @win.pid)
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_statusbar_text
|
74
|
+
assert_compare(0, "<", @win.statusbar_text.size)
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_text
|
78
|
+
assert_compare(0, "<", @win.text.size)
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_title
|
82
|
+
assert_match(/Paint/, @win.title)
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_to_i
|
86
|
+
assert_equal(@win.handle.to_i(16), @win.to_i)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_transparency
|
90
|
+
assert_equal(100, @win.transparency = 100)
|
91
|
+
sleep 1
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_visible
|
95
|
+
assert_true(@win.visible?)
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_close
|
99
|
+
@win.close
|
100
|
+
assert_true(@win.wait_not_active)
|
101
|
+
assert_true(@win.wait_close)
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
metadata
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: au3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: x86-mingw32
|
6
|
+
authors:
|
7
|
+
- Marvin Guelker
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-09-09 00:00:00 +02:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: |
|
17
|
+
au3 is a gem that provides Ruby bindings to the AutoIt Windows automation tool by
|
18
|
+
using it's DLL interface AutoItX.
|
19
|
+
|
20
|
+
email: sutniuq@gmx.net
|
21
|
+
executables: []
|
22
|
+
|
23
|
+
extensions: []
|
24
|
+
|
25
|
+
extra_rdoc_files: []
|
26
|
+
|
27
|
+
files:
|
28
|
+
- ext/README.rdoc
|
29
|
+
- ext/au3.o
|
30
|
+
- ext/au3.so
|
31
|
+
- ext/au3.c
|
32
|
+
- ext/extconf.rb
|
33
|
+
- ext/parts/control.c
|
34
|
+
- ext/parts/filedir.c
|
35
|
+
- ext/parts/graphic.c
|
36
|
+
- ext/parts/keyboard.c
|
37
|
+
- ext/parts/misc.c
|
38
|
+
- ext/parts/mouse.c
|
39
|
+
- ext/parts/process.c
|
40
|
+
- ext/parts/utils.c
|
41
|
+
- ext/parts/wconv.c
|
42
|
+
- ext/parts/window.c
|
43
|
+
- test/test_clipboard.rb
|
44
|
+
- test/test_ini.rb
|
45
|
+
- test/test_keyboard.rb
|
46
|
+
- test/test_mouse.rb
|
47
|
+
- test/test_process.rb
|
48
|
+
- test/test_tray.rb
|
49
|
+
- test/test_window.rb
|
50
|
+
has_rdoc: true
|
51
|
+
homepage:
|
52
|
+
licenses: []
|
53
|
+
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options:
|
56
|
+
- " -m ext/README.rdoc"
|
57
|
+
- -t 'au3 RDocs'
|
58
|
+
- -c Windows-1252
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
- ext
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: "1.8"
|
67
|
+
version:
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: "0"
|
73
|
+
version:
|
74
|
+
requirements:
|
75
|
+
- Microsoft Windows
|
76
|
+
rubyforge_project: Automations
|
77
|
+
rubygems_version: 1.3.5
|
78
|
+
signing_key:
|
79
|
+
specification_version: 3
|
80
|
+
summary: A binding to the AutoItX3 Windows automation tool.
|
81
|
+
test_files:
|
82
|
+
- test/test_clipboard.rb
|
83
|
+
- test/test_ini.rb
|
84
|
+
- test/test_keyboard.rb
|
85
|
+
- test/test_mouse.rb
|
86
|
+
- test/test_process.rb
|
87
|
+
- test/test_tray.rb
|
88
|
+
- test/test_window.rb
|