win 0.1.27 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -5
- data/.gitignore +21 -21
- data/LICENSE +20 -20
- data/README.rdoc +175 -175
- data/Rakefile +58 -58
- data/VERSION +1 -1
- data/features/support/env.rb +4 -4
- data/features/win.feature +9 -9
- data/lib/win/dde.rb +1234 -1234
- data/lib/win/error.rb +1223 -1223
- data/lib/win/extensions.rb +41 -41
- data/lib/win/gui.rb +16 -16
- data/lib/win/gui/dialog.rb +50 -50
- data/lib/win/gui/input.rb +319 -319
- data/lib/win/gui/message.rb +807 -807
- data/lib/win/gui/window.rb +679 -679
- data/lib/win/library.rb +463 -463
- data/spec/spec.opts +2 -2
- data/spec/spec_helper.rb +140 -135
- data/spec/test_apps/locknote/LockNote.exe +0 -0
- data/spec/win/dde_spec.rb +528 -528
- data/spec/win/error_spec.rb +112 -112
- data/spec/win/extensions_spec.rb +73 -73
- data/spec/win/gui/dialog_spec.rb +43 -43
- data/spec/win/gui/input_spec.rb +101 -101
- data/spec/win/gui/message_spec.rb +236 -236
- data/spec/win/gui/window_spec.rb +549 -548
- data/spec/win/library_spec.rb +341 -341
- data/win.gemspec +87 -87
- metadata +34 -17
data/spec/win/error_spec.rb
CHANGED
@@ -1,112 +1,112 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
-
require 'win/error'
|
3
|
-
require 'win/gui/window'
|
4
|
-
|
5
|
-
module WinErrorTest
|
6
|
-
include WinTest
|
7
|
-
include Win::Error
|
8
|
-
include Win::
|
9
|
-
|
10
|
-
def buffer
|
11
|
-
FFI::MemoryPointer.new(:char, 260)
|
12
|
-
end
|
13
|
-
|
14
|
-
def sys_flags
|
15
|
-
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
|
16
|
-
end
|
17
|
-
|
18
|
-
describe Win::Error, ' contains a set of pre-defined Windows API functions' do
|
19
|
-
describe "#get_last_error" do
|
20
|
-
spec{ use{ err_code = GetLastError() }}
|
21
|
-
spec{ use{ err_message = get_last_error() }}
|
22
|
-
|
23
|
-
it "original api retrieves the calling thread's last-error code value" do
|
24
|
-
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
25
|
-
GetLastError().should == ERROR_FILE_NOT_FOUND
|
26
|
-
window_text(0)
|
27
|
-
GetLastError().should == ERROR_INVALID_WINDOW_HANDLE
|
28
|
-
end
|
29
|
-
|
30
|
-
it "enhanced api retrieves the message corresponding to last error code" do
|
31
|
-
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
32
|
-
get_last_error.should == "The system cannot find the file specified."
|
33
|
-
window_text(0)
|
34
|
-
get_last_error.should == "Invalid window handle."
|
35
|
-
end
|
36
|
-
end # describe "#get_last_error"
|
37
|
-
|
38
|
-
describe "#format_message" do
|
39
|
-
spec{ use{ num_chars = FormatMessage(sys_flags, source=nil, message_id=0, language_id=0, buffer, buffer.size, :int, 0) }}
|
40
|
-
spec{ use{ message = format_message(sys_flags, source=nil, message_id=0, language_id=0, :int, 0) }}
|
41
|
-
|
42
|
-
it "original api formats a message string - system message" do
|
43
|
-
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
44
|
-
message_id = GetLastError()
|
45
|
-
buf = buffer()
|
46
|
-
num_chars = FormatMessage(sys_flags, nil, message_id, dw_language_id=0, buf, buf.size, :int, 0)
|
47
|
-
buf.get_bytes(0, num_chars).strip.should == "The system cannot find the file specified."
|
48
|
-
end
|
49
|
-
|
50
|
-
it "snake_case api Formats a message string - system message" do
|
51
|
-
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
52
|
-
message = format_message(sys_flags, nil, dw_message_id=GetLastError())
|
53
|
-
message.should == "The system cannot find the file specified."
|
54
|
-
end
|
55
|
-
end # describe format_message
|
56
|
-
|
57
|
-
describe "#set_last_error" do
|
58
|
-
spec{ use{ SetLastError(err_code=0) }}
|
59
|
-
spec{ use{ set_last_error(err_code=0) }}
|
60
|
-
|
61
|
-
it "original api sets the last-error code for the calling thread." do
|
62
|
-
SetLastError(dw_err_code=0xF000)
|
63
|
-
GetLastError().should == ERROR_USER_DEFINED_BASE
|
64
|
-
end
|
65
|
-
|
66
|
-
it "snake_case api also sets the last-error code for the calling thread." do
|
67
|
-
set_last_error(3000)
|
68
|
-
get_last_error.should == "The specified print monitor is unknown."
|
69
|
-
end
|
70
|
-
end # describe set_last_error
|
71
|
-
|
72
|
-
if xp? || vista? # This function works only on XP++
|
73
|
-
describe "#set_last_error_ex" do
|
74
|
-
spec{ use{ SetLastErrorEx(dw_err_code=0, dw_type=0) }}
|
75
|
-
spec{ use{ set_last_error_ex(dw_err_code=0, dw_type=0) }}
|
76
|
-
|
77
|
-
it "original api sets the last-error code for the calling thread." do
|
78
|
-
SetLastErrorEx(dw_err_code=0xF000, dw_type=0)
|
79
|
-
GetLastError().should == ERROR_USER_DEFINED_BASE
|
80
|
-
end
|
81
|
-
|
82
|
-
it "snake_case api also sets the last-error code for the calling thread." do
|
83
|
-
set_last_error_ex(3000,0)
|
84
|
-
get_last_error.should == "The specified print monitor is unknown."
|
85
|
-
end
|
86
|
-
end # describe set_last_error_ex
|
87
|
-
end
|
88
|
-
|
89
|
-
if vista? # This function works only on Vista++
|
90
|
-
describe "#get_error_mode" do
|
91
|
-
spec{ use{ mode = GetErrorMode() }}
|
92
|
-
spec{ use{ mode = get_error_mode() }}
|
93
|
-
|
94
|
-
it "original api retrieves the error mode for the current process." do
|
95
|
-
p mode = GetErrorMode()
|
96
|
-
end
|
97
|
-
|
98
|
-
it "snake_case api also retrieves the error mode for the current process." do
|
99
|
-
p mode = get_error_mode()
|
100
|
-
end
|
101
|
-
end # describe get_error_mode
|
102
|
-
end
|
103
|
-
|
104
|
-
describe "#set_error_mode" do
|
105
|
-
spec{ use{ success = SetErrorMode(u_mode=0) }}
|
106
|
-
spec{ use{ success = set_error_mode(u_mode=0) }}
|
107
|
-
|
108
|
-
it "controls whether the system OR process will handle the specified types of serious errors"
|
109
|
-
end # describe set_error_mode
|
110
|
-
|
111
|
-
end # describe Win::Error
|
112
|
-
end
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
require 'win/error'
|
3
|
+
require 'win/gui/window'
|
4
|
+
|
5
|
+
module WinErrorTest
|
6
|
+
include WinTest
|
7
|
+
include Win::Error
|
8
|
+
include Win::Gui::Window
|
9
|
+
|
10
|
+
def buffer
|
11
|
+
FFI::MemoryPointer.new(:char, 260)
|
12
|
+
end
|
13
|
+
|
14
|
+
def sys_flags
|
15
|
+
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY
|
16
|
+
end
|
17
|
+
|
18
|
+
describe Win::Error, ' contains a set of pre-defined Windows API functions' do
|
19
|
+
describe "#get_last_error" do
|
20
|
+
spec{ use{ err_code = GetLastError() }}
|
21
|
+
spec{ use{ err_message = get_last_error() }}
|
22
|
+
|
23
|
+
it "original api retrieves the calling thread's last-error code value" do
|
24
|
+
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
25
|
+
GetLastError().should == ERROR_FILE_NOT_FOUND
|
26
|
+
window_text(0)
|
27
|
+
GetLastError().should == ERROR_INVALID_WINDOW_HANDLE
|
28
|
+
end
|
29
|
+
|
30
|
+
it "enhanced api retrieves the message corresponding to last error code" do
|
31
|
+
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
32
|
+
get_last_error.should == "The system cannot find the file specified."
|
33
|
+
window_text(0)
|
34
|
+
get_last_error.should == "Invalid window handle."
|
35
|
+
end
|
36
|
+
end # describe "#get_last_error"
|
37
|
+
|
38
|
+
describe "#format_message" do
|
39
|
+
spec{ use{ num_chars = FormatMessage(sys_flags, source=nil, message_id=0, language_id=0, buffer, buffer.size, :int, 0) }}
|
40
|
+
spec{ use{ message = format_message(sys_flags, source=nil, message_id=0, language_id=0, :int, 0) }}
|
41
|
+
|
42
|
+
it "original api formats a message string - system message" do
|
43
|
+
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
44
|
+
message_id = GetLastError()
|
45
|
+
buf = buffer()
|
46
|
+
num_chars = FormatMessage(sys_flags, nil, message_id, dw_language_id=0, buf, buf.size, :int, 0)
|
47
|
+
buf.get_bytes(0, num_chars).strip.should == "The system cannot find the file specified."
|
48
|
+
end
|
49
|
+
|
50
|
+
it "snake_case api Formats a message string - system message" do
|
51
|
+
find_window(TEST_IMPOSSIBLE, TEST_IMPOSSIBLE)
|
52
|
+
message = format_message(sys_flags, nil, dw_message_id=GetLastError())
|
53
|
+
message.should == "The system cannot find the file specified."
|
54
|
+
end
|
55
|
+
end # describe format_message
|
56
|
+
|
57
|
+
describe "#set_last_error" do
|
58
|
+
spec{ use{ SetLastError(err_code=0) }}
|
59
|
+
spec{ use{ set_last_error(err_code=0) }}
|
60
|
+
|
61
|
+
it "original api sets the last-error code for the calling thread." do
|
62
|
+
SetLastError(dw_err_code=0xF000)
|
63
|
+
GetLastError().should == ERROR_USER_DEFINED_BASE
|
64
|
+
end
|
65
|
+
|
66
|
+
it "snake_case api also sets the last-error code for the calling thread." do
|
67
|
+
set_last_error(3000)
|
68
|
+
get_last_error.should == "The specified print monitor is unknown."
|
69
|
+
end
|
70
|
+
end # describe set_last_error
|
71
|
+
|
72
|
+
if xp? || vista? # This function works only on XP++
|
73
|
+
describe "#set_last_error_ex" do
|
74
|
+
spec{ use{ SetLastErrorEx(dw_err_code=0, dw_type=0) }}
|
75
|
+
spec{ use{ set_last_error_ex(dw_err_code=0, dw_type=0) }}
|
76
|
+
|
77
|
+
it "original api sets the last-error code for the calling thread." do
|
78
|
+
SetLastErrorEx(dw_err_code=0xF000, dw_type=0)
|
79
|
+
GetLastError().should == ERROR_USER_DEFINED_BASE
|
80
|
+
end
|
81
|
+
|
82
|
+
it "snake_case api also sets the last-error code for the calling thread." do
|
83
|
+
set_last_error_ex(3000,0)
|
84
|
+
get_last_error.should == "The specified print monitor is unknown."
|
85
|
+
end
|
86
|
+
end # describe set_last_error_ex
|
87
|
+
end
|
88
|
+
|
89
|
+
if vista? # This function works only on Vista++
|
90
|
+
describe "#get_error_mode" do
|
91
|
+
spec{ use{ mode = GetErrorMode() }}
|
92
|
+
spec{ use{ mode = get_error_mode() }}
|
93
|
+
|
94
|
+
it "original api retrieves the error mode for the current process." do
|
95
|
+
p mode = GetErrorMode()
|
96
|
+
end
|
97
|
+
|
98
|
+
it "snake_case api also retrieves the error mode for the current process." do
|
99
|
+
p mode = get_error_mode()
|
100
|
+
end
|
101
|
+
end # describe get_error_mode
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "#set_error_mode" do
|
105
|
+
spec{ use{ success = SetErrorMode(u_mode=0) }}
|
106
|
+
spec{ use{ success = set_error_mode(u_mode=0) }}
|
107
|
+
|
108
|
+
it "controls whether the system OR process will handle the specified types of serious errors"
|
109
|
+
end # describe set_error_mode
|
110
|
+
|
111
|
+
end # describe Win::Error
|
112
|
+
end
|
data/spec/win/extensions_spec.rb
CHANGED
@@ -1,73 +1,73 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), ".." , "spec_helper" )
|
2
|
-
require 'win/extensions'
|
3
|
-
|
4
|
-
module WinTest
|
5
|
-
|
6
|
-
describe String do
|
7
|
-
context '#snake_case' do
|
8
|
-
it 'transforms CamelCase strings' do
|
9
|
-
'GetCharWidth32'.snake_case.should == 'get_char_width_32'
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'leaves snake_case strings intact' do
|
13
|
-
'keybd_event'.snake_case.should == 'keybd_event'
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context '#camel_case' do
|
18
|
-
it 'transforms snake_case strings' do
|
19
|
-
'get_char_width_32'.camel_case.should == 'GetCharWidth32'
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'leaves CamelCase strings intact' do
|
23
|
-
'GetCharWidth32'.camel_case.should == 'GetCharWidth32'
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
context '#to_w' do
|
28
|
-
it 'transcodes string to utf-16LE' do
|
29
|
-
'GetCharWidth32'.to_w.encoding.name.should == 'UTF-16LE'
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'ensures that encoded string is null-terminated' do
|
33
|
-
'GetCharWidth32'.to_w.bytes.to_a[-2..-1].should == [0, 0]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context '#to_vkeys' do
|
38
|
-
it 'transforms number char into [equivalent key code]' do
|
39
|
-
('0'..'9').each {|char| char.to_vkeys.should == char.unpack('C')}
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'transforms uppercase letters into [shift, equivalent key code]' do
|
43
|
-
('A'..'Z').each {|char| char.to_vkeys.should == [0x10, *char.unpack('C')]}
|
44
|
-
# Win.const_get(:VK_SHIFT) = 0x10 Bad coupling
|
45
|
-
end
|
46
|
-
|
47
|
-
it 'transforms lowercase letters into [(upcase) key code]' do
|
48
|
-
('a'..'z').each {|char| char.to_vkeys.should == char.upcase.unpack('C')}
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'transforms space into [equivalent key code]' do
|
52
|
-
" ".to_vkeys.should == " ".unpack('C')
|
53
|
-
end
|
54
|
-
|
55
|
-
it 'raises error if char is not implemented punctuation' do
|
56
|
-
('!'..'/').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
57
|
-
(':'..'@').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
58
|
-
('['..'`').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
59
|
-
('{'..'~').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
60
|
-
end
|
61
|
-
|
62
|
-
it 'raises error if char is non-printable or non-ascii' do
|
63
|
-
lambda {1.chr.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
64
|
-
lambda {230.chr.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'raises error if string is multi-char' do
|
68
|
-
lambda {'hello'.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
69
|
-
lambda {'23'.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
1
|
+
require File.join(File.dirname(__FILE__), ".." , "spec_helper" )
|
2
|
+
require 'win/extensions'
|
3
|
+
|
4
|
+
module WinTest
|
5
|
+
|
6
|
+
describe String do
|
7
|
+
context '#snake_case' do
|
8
|
+
it 'transforms CamelCase strings' do
|
9
|
+
'GetCharWidth32'.snake_case.should == 'get_char_width_32'
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'leaves snake_case strings intact' do
|
13
|
+
'keybd_event'.snake_case.should == 'keybd_event'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context '#camel_case' do
|
18
|
+
it 'transforms snake_case strings' do
|
19
|
+
'get_char_width_32'.camel_case.should == 'GetCharWidth32'
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'leaves CamelCase strings intact' do
|
23
|
+
'GetCharWidth32'.camel_case.should == 'GetCharWidth32'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context '#to_w' do
|
28
|
+
it 'transcodes string to utf-16LE' do
|
29
|
+
'GetCharWidth32'.to_w.encoding.name.should == 'UTF-16LE'
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'ensures that encoded string is null-terminated' do
|
33
|
+
'GetCharWidth32'.to_w.bytes.to_a[-2..-1].should == [0, 0]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context '#to_vkeys' do
|
38
|
+
it 'transforms number char into [equivalent key code]' do
|
39
|
+
('0'..'9').each {|char| char.to_vkeys.should == char.unpack('C')}
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'transforms uppercase letters into [shift, equivalent key code]' do
|
43
|
+
('A'..'Z').each {|char| char.to_vkeys.should == [0x10, *char.unpack('C')]}
|
44
|
+
# Win.const_get(:VK_SHIFT) = 0x10 Bad coupling
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'transforms lowercase letters into [(upcase) key code]' do
|
48
|
+
('a'..'z').each {|char| char.to_vkeys.should == char.upcase.unpack('C')}
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'transforms space into [equivalent key code]' do
|
52
|
+
" ".to_vkeys.should == " ".unpack('C')
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'raises error if char is not implemented punctuation' do
|
56
|
+
('!'..'/').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
57
|
+
(':'..'@').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
58
|
+
('['..'`').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
59
|
+
('{'..'~').each {|char| lambda {char.to_vkeys}.should raise_error TEST_CONVERSION_ERROR }
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'raises error if char is non-printable or non-ascii' do
|
63
|
+
lambda {1.chr.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
64
|
+
lambda {230.chr.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'raises error if string is multi-char' do
|
68
|
+
lambda {'hello'.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
69
|
+
lambda {'23'.to_vkeys}.should raise_error TEST_CONVERSION_ERROR
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/spec/win/gui/dialog_spec.rb
CHANGED
@@ -1,43 +1,43 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
-
require 'win/gui/input'
|
3
|
-
#require 'win/gui/window'
|
4
|
-
|
5
|
-
module WinWindowTest
|
6
|
-
|
7
|
-
include WinTestApp
|
8
|
-
include Win::
|
9
|
-
|
10
|
-
describe Win::
|
11
|
-
|
12
|
-
describe '#get_dlg_item' do
|
13
|
-
spec{ use{ control_handle = get_dlg_item(handle = 0, item_id = 1) }}
|
14
|
-
|
15
|
-
it 'returns handle to correctly specified control'
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
describe Win::
|
20
|
-
# describe 'dialog' do
|
21
|
-
# spec{ use{ dialog( title ='Dialog Title', timeout_sec = 0.001, &any_block) }}
|
22
|
-
#
|
23
|
-
# it 'finds top-level dialog window by title' do
|
24
|
-
# pending 'Some problems (?with timeouts?) leave window open ~half of the runs'
|
25
|
-
# test_app do |app|
|
26
|
-
# keystroke(VK_ALT, 'F'.ord, 'A'.ord)
|
27
|
-
# @found = false
|
28
|
-
# dialog('Save As', 0.5) do |dialog_window|
|
29
|
-
# @found = true
|
30
|
-
# keystroke(VK_ESCAPE)
|
31
|
-
# dialog_window
|
32
|
-
# end
|
33
|
-
# @found.should == true
|
34
|
-
# end
|
35
|
-
# end
|
36
|
-
#
|
37
|
-
# it 'yields found dialog window to a given block'
|
38
|
-
#
|
39
|
-
# end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'win/gui/input'
|
3
|
+
#require 'win/gui/window'
|
4
|
+
|
5
|
+
module WinWindowTest
|
6
|
+
|
7
|
+
include WinTestApp
|
8
|
+
include Win::Gui::Dialog
|
9
|
+
|
10
|
+
describe Win::Gui::Dialog do
|
11
|
+
|
12
|
+
describe '#get_dlg_item' do
|
13
|
+
spec{ use{ control_handle = get_dlg_item(handle = 0, item_id = 1) }}
|
14
|
+
|
15
|
+
it 'returns handle to correctly specified control'
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Win::Gui::Dialog, ' defines convenience/service methods on top of Windows API' do
|
20
|
+
# describe 'dialog' do
|
21
|
+
# spec{ use{ dialog( title ='Dialog Title', timeout_sec = 0.001, &any_block) }}
|
22
|
+
#
|
23
|
+
# it 'finds top-level dialog window by title' do
|
24
|
+
# pending 'Some problems (?with timeouts?) leave window open ~half of the runs'
|
25
|
+
# test_app do |app|
|
26
|
+
# keystroke(VK_ALT, 'F'.ord, 'A'.ord)
|
27
|
+
# @found = false
|
28
|
+
# dialog('Save As', 0.5) do |dialog_window|
|
29
|
+
# @found = true
|
30
|
+
# keystroke(VK_ESCAPE)
|
31
|
+
# dialog_window
|
32
|
+
# end
|
33
|
+
# @found.should == true
|
34
|
+
# end
|
35
|
+
# end
|
36
|
+
#
|
37
|
+
# it 'yields found dialog window to a given block'
|
38
|
+
#
|
39
|
+
# end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|