spec/win/gui/input_spec.rb in win-0.3.24 vs spec/win/gui/input_spec.rb in win-0.3.25

- old
+ new

@@ -1,92 +1,88 @@ -require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper') +require 'spec_helper' require 'win/gui/input' -module WinGuiInputTest +include WinTestApp +include Win::Gui::Input - include WinTestApp - include Win::Gui::Input +# rolling back changes with Ctrl-Z to allow window closing without dialog! +def rollback_changes(num_changes) + num_changes.times { keystroke(VK_CONTROL, 'Z'.ord) } +end - # rolling back changes with Ctrl-Z to allow window closing without dialog! - def rollback_changes(num_changes) - num_changes.times {keystroke(VK_CONTROL, 'Z'.ord)} - end +describe Win::Gui::Input, ' defines a set of API functions related to user input' do - describe Win::Gui::Input, ' defines a set of API functions related to user input' do + describe '#keydb_event' do + spec { use { keybd_event(vkey = 0, bscan = 0, flags = 0, extra_info = 0) } } + before(:each) { (@app=launch_test_app) } + after(:each) do + rollback_changes(3) + close_test_app + end - describe '#keydb_event' do - spec{ use{ keybd_event(vkey = 0, bscan = 0, flags = 0, extra_info = 0) }} - before(:each){ (@app=launch_test_app)} - after(:each) do - rollback_changes(3) - close_test_app + it 'synthesizes a numeric keystrokes, emulating keyboard driver' do + text = '123' + text.upcase.each_byte do |b| # upcase needed since user32 keybd_event expects upper case chars + keybd_event(b.ord, 0, KEYEVENTF_KEYDOWN, 0) + sleep KEY_DELAY + keybd_event(b.ord, 0, KEYEVENTF_KEYUP, 0) + sleep KEY_DELAY end + text(@app.textarea).should =~ Regexp.new(text) + end + end # describe '#keydb_event' - it 'synthesizes a numeric keystrokes, emulating keyboard driver' do - text = '123' - text.upcase.each_byte do |b| # upcase needed since user32 keybd_event expects upper case chars - keybd_event(b.ord, 0, KEYEVENTF_KEYDOWN, 0) - sleep KEY_DELAY - keybd_event(b.ord, 0, KEYEVENTF_KEYUP, 0) - sleep KEY_DELAY - end - text(@app.textarea).should =~ Regexp.new(text) - end - end # describe '#keydb_event' + describe '#mouse_event' do + spec { use { mouse_event(flags = MOUSEEVENTF_ABSOLUTE, dx = 0, dy = 0, data=0, extra_info=0) } } - describe '#mouse_event' do - spec { use {mouse_event( flags = MOUSEEVENTF_ABSOLUTE, dx = 0, dy = 0, data=0, extra_info=0 )}} + it 'emulates mouse clicks' do + test_app do |app| + # Position cursor at app's "Close Window" control + left, top, right, bottom = get_window_rect(app.handle) + set_cursor_pos(x=right-5, y=top+5).should be_true - it 'emulates mouse clicks' do - test_app do |app| - # Position cursor at app's "Close Window" control - left, top, right, bottom = get_window_rect(app.handle) - set_cursor_pos(x=right-5, y=top+5).should be_true - - mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 - mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 - sleep SLEEP_DELAY - window?(app.handle).should == false - end + mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 + mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 + sleep SLEEP_DELAY + window?(app.handle).should == false end + end - end # describe '#mouse_event' + end # describe '#mouse_event' - describe "#get_cursor_pos" do - spec{ use{ success = GetCursorPos(lp_point=FFI::MemoryPointer.new(:long, 2)) }} - spec{ use{ x, y = get_cursor_pos() }} + describe "#get_cursor_pos" do + spec { use { success = GetCursorPos(lp_point=FFI::MemoryPointer.new(:long, 2)) } } + spec { use { x, y = get_cursor_pos() } } - it "original api returns success code and puts cursor's screen coordinates into supplied buffer" do - success = GetCursorPos(lp_point=FFI::MemoryPointer.new(:long, 2)) - success.should_not == 0 - x, y = lp_point.read_array_of_long(2) - x.should be_an Integer - x.should be >= 0 - y.should be_an Integer - y.should be >= 0 - end + it "original api returns success code and puts cursor's screen coordinates into supplied buffer" do + success = GetCursorPos(lp_point=FFI::MemoryPointer.new(:long, 2)) + success.should_not == 0 + x, y = lp_point.read_array_of_long(2) + x.should be_an Integer + x.should be >= 0 + y.should be_an Integer + y.should be >= 0 + end - it "snake_case api returns the cursor's position, in screen coordinates" do - x, y = get_cursor_pos() - x.should be_an Integer - x.should be >= 0 - y.should be_an Integer - y.should be >= 0 - end - end # describe get_cursor_pos + it "snake_case api returns the cursor's position, in screen coordinates" do + x, y = get_cursor_pos() + x.should be_an Integer + x.should be >= 0 + y.should be_an Integer + y.should be >= 0 + end + end # describe get_cursor_pos - describe '#set_cursor_pos' do - spec { use {success = SetCursorPos(x=0, y=0)}} - spec { use {success = set_cursor_pos(x=0, y=0)}} + describe '#set_cursor_pos' do + spec { use { success = SetCursorPos(x=0, y=0) } } + spec { use { success = set_cursor_pos(x=0, y=0) } } - it 'sets cursor`s position, in screen coordinates' do - SetCursorPos(x=600, y=600).should be_true - get_cursor_pos().should == [600, 600] - set_cursor_pos(x=0, y=0).should be_true - get_cursor_pos().should == [0, 0] - end - end # describe '#set_cursor_pos' + it 'sets cursor`s position, in screen coordinates' do + SetCursorPos(x=600, y=600).should be_true + get_cursor_pos().should == [600, 600] + set_cursor_pos(x=0, y=0).should be_true + get_cursor_pos().should == [0, 0] + end + end # describe '#set_cursor_pos' - end # Win::Gui::Input, ' defines a set of API functions related to user input' - -end +end # Win::Gui::Input, ' defines a set of API functions related to user input'