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