spec/auto_gui/window_spec.rb in win32-autogui-0.4.0 vs spec/auto_gui/window_spec.rb in win32-autogui-0.4.1

- old
+ new

@@ -1,9 +1,39 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') include Autogui::Input +describe Autogui::Window do + before(:all) do + @calculator = Calculator.new + end + before(:each) do + @calculator.should be_running + @calculator.set_focus + end + after(:all) do + @calculator.close(:wait_for_close => true) if @calculator.running? + @calculator.should_not be_running + end + + # callback test, sets instance variable + def close_calculator + @test_callback = true + @calculator.close + end + + describe "wait_for_close" do + it "should run a given block while waiting" do + @test_callback.should_not == true + @calculator.should be_running + @calculator.main_window.wait_for_close(:timeout => 3) { close_calculator } + @test_callback.should == true + @calculator.should_not be_running + end + end +end + describe Autogui::EnumerateDesktopWindows do describe "finding dialogs" do before(:all) do @calculator = Calculator.new @@ -17,42 +47,42 @@ @calculator.should_not be_running end describe "with the default timeout of 0" do it "should find a valid dialog" do - keystroke(VK_MENU, VK_H, VK_A) - dialog_about = Autogui::EnumerateDesktopWindows.new.find do |w| + keystroke(VK_MENU, VK_H, VK_A) + dialog_about = Autogui::EnumerateDesktopWindows.new.find do |w| w.title.match(/About Calculator/) && (w.pid == @calculator.pid) end dialog_about.should_not be_nil dialog_about.close end it "should not find an invalid dialog" do - dialog_bogus = Autogui::EnumerateDesktopWindows.new.find do |w| + dialog_bogus = Autogui::EnumerateDesktopWindows.new.find do |w| w.title.match(/Bogus Window that does not exist/) && (w.pid == @calculator.pid) end dialog_bogus.should be_nil end end describe "with the timeout of 3 seconds" do it "should find a valid dialog in less than 3 seconds" do - keystroke(VK_MENU, VK_H, VK_A) + keystroke(VK_MENU, VK_H, VK_A) seconds = 3 dialog_about = nil lambda {timeout(seconds) do - dialog_about = Autogui::EnumerateDesktopWindows.new(:timeout => seconds).find do |w| + dialog_about = Autogui::EnumerateDesktopWindows.new(:timeout => seconds).find do |w| w.title.match(/About Calculator/) && (w.pid == @calculator.pid) end end}.should_not raise_error dialog_about.should_not be_nil dialog_about.close end it "should look for an invalid dialog for 3 seconds" do seconds = 3 dialog_bogus = nil lambda {timeout(seconds) do - dialog_bogus = Autogui::EnumerateDesktopWindows.new(:timeout => seconds).find do |w| + dialog_bogus = Autogui::EnumerateDesktopWindows.new(:timeout => seconds).find do |w| w.title.match(/Bogus Window that does not exist/) && (w.pid == @calculator.pid) end end}.should raise_error dialog_bogus.should be_nil end