rautomation 0.12.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/History.rdoc +11 -1
  4. data/VERSION +1 -1
  5. data/ext/UiaDll/RAutomation.UIA/Controls/Clicker.cs +5 -1
  6. data/ext/UiaDll/RAutomation.UIA/Controls/SelectList.cs +41 -1
  7. data/ext/UiaDll/RAutomation.UIA/Controls/TableControl.cs +37 -2
  8. data/ext/UiaDll/RAutomation.UIA/Extensions/Element.cs +48 -1
  9. data/ext/UiaDll/UiaDll/SelectListMethods.cpp +23 -0
  10. data/ext/UiaDll/UiaDll/StringHelper.cpp +5 -0
  11. data/ext/UiaDll/UiaDll/StringHelper.h +1 -0
  12. data/ext/UiaDll/UiaDll/TableMethods.cpp +23 -5
  13. data/ext/WindowsForms/WindowsForms/AboutBox.Designer.cs +31 -0
  14. data/ext/WindowsForms/WindowsForms/DataEntryForm.Designer.cs +13 -0
  15. data/ext/WindowsForms/WindowsForms/DataEntryForm.cs +5 -0
  16. data/ext/WindowsForms/WindowsForms/MainFormWindow.Designer.cs +32 -22
  17. data/ext/WindowsForms/WindowsForms/MainFormWindow.cs +30 -1
  18. data/lib/rautomation/adapter/ms_uia/select_list.rb +8 -8
  19. data/lib/rautomation/adapter/ms_uia/table.rb +12 -8
  20. data/lib/rautomation/adapter/ms_uia/uia_dll.rb +36 -4
  21. data/spec/adapter/ms_uia/button_spec.rb +2 -2
  22. data/spec/adapter/ms_uia/checkbox_spec.rb +2 -2
  23. data/spec/adapter/ms_uia/listbox_spec.rb +15 -17
  24. data/spec/adapter/ms_uia/radio_spec.rb +1 -1
  25. data/spec/adapter/ms_uia/select_list_spec.rb +67 -65
  26. data/spec/adapter/ms_uia/spinner_spec.rb +1 -1
  27. data/spec/adapter/ms_uia/tab_control_spec.rb +3 -3
  28. data/spec/adapter/ms_uia/table_spec.rb +35 -17
  29. data/spec/adapter/ms_uia/text_field_spec.rb +2 -2
  30. data/spec/adapter/ms_uia/window_spec.rb +1 -63
  31. metadata +2 -2
@@ -29,7 +29,7 @@ describe MsUia::Spinner, :if => SpecHelper.adapter == :ms_uia do
29
29
  end
30
30
 
31
31
  it 'likes for values to be within range' do
32
- lambda { subject.set(1000.0) }.should raise_error
32
+ expect { subject.set(1000.0) }.to raise_error
33
33
  end
34
34
 
35
35
  it '#increment' do
@@ -24,7 +24,7 @@ describe MsUia::TabControl, :if => SpecHelper.adapter == :ms_uia do
24
24
  end
25
25
 
26
26
  it 'has tab items' do
27
- subject.items.count.should eq(2)
27
+ subject.items.count.should eq(3)
28
28
  end
29
29
 
30
30
  it 'knows the current tab' do
@@ -33,11 +33,11 @@ describe MsUia::TabControl, :if => SpecHelper.adapter == :ms_uia do
33
33
 
34
34
  context('#items') do
35
35
  it 'has text' do
36
- subject.items.map(&:text).should eq(['Info', 'More Info'])
36
+ subject.items.map(&:text).should eq(['Info', 'More Info', 'Multi-Select ListBox'])
37
37
  end
38
38
 
39
39
  it 'has indices' do
40
- subject.items.map(&:index).should eq([0, 1])
40
+ subject.items.map(&:index).should eq([0, 1, 2])
41
41
  end
42
42
 
43
43
  it 'can be selected' do
@@ -1,7 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "MsUia::Table", :if => SpecHelper.adapter == :ms_uia do
4
- let(:table) { RAutomation::Window.new(:title => "DataEntryForm").table(:id => "personListView") }
4
+ let(:data_entry) { RAutomation::Window.new(:title => "DataEntryForm") }
5
+ let(:table) { data_entry.table(:id => "personListView") }
6
+ let(:toggle_multi_select) { data_entry.button(:value => 'Toggle Multi').click { true } }
5
7
 
6
8
  before :each do
7
9
  window = RAutomation::Window.new(:title => "MainFormWindow")
@@ -36,22 +38,6 @@ describe "MsUia::Table", :if => SpecHelper.adapter == :ms_uia do
36
38
  ]
37
39
  end
38
40
 
39
- it "#select by index" do
40
- table.select(0)
41
- table.should_not be_selected(1)
42
-
43
- table.select(1)
44
- table.should be_selected(1)
45
- end
46
-
47
- it "#select by value" do
48
- table.select "John Doe"
49
- table.should_not be_selected(1)
50
-
51
- table.select "Anna Doe"
52
- table.should be_selected(1)
53
- end
54
-
55
41
  it "#row_count" do
56
42
  table.row_count.should eq(2)
57
43
  end
@@ -69,6 +55,38 @@ describe "MsUia::Table", :if => SpecHelper.adapter == :ms_uia do
69
55
  table.rows.map(&:text).should eq ["John Doe", "Anna Doe"]
70
56
  end
71
57
 
58
+ it "can be selected" do
59
+ row = table.row(:index => 1)
60
+ row.select
61
+ row.should be_selected
62
+ end
63
+
64
+ it "can be cleared" do
65
+ row = table.row(:index => 1)
66
+ row.select
67
+
68
+ row.clear
69
+ row.should_not be_selected
70
+ end
71
+
72
+ it "can select multiple rows" do
73
+ table.rows.each(&:select)
74
+ table.rows.all?(&:selected?).should be_true
75
+ end
76
+
77
+ it "plays nice if the table does not support multiple selections" do
78
+ toggle_multi_select
79
+
80
+ first_row = table.rows.first
81
+ last_row = table.rows.last
82
+
83
+ first_row.select
84
+ last_row.select
85
+
86
+ first_row.should_not be_selected
87
+ last_row.should be_selected
88
+ end
89
+
72
90
  context "locators" do
73
91
  it "can locate by text" do
74
92
  table.rows(:text => "Anna Doe").size.should eq 1
@@ -17,9 +17,9 @@ describe "MsUia::TextField", :if => SpecHelper.adapter == :ms_uia do
17
17
  end
18
18
 
19
19
  it "cannot set a value to a disabled text field" do
20
- lambda { main_form.text_field(:id => "textBoxDisabled").set "abc" }.should raise_error
20
+ expect { main_form.text_field(:id => "textBoxDisabled").set "abc" }.to raise_error
21
21
 
22
- lambda { main_form.text_field(:id => "textBoxDisabled").clear }.should raise_error
22
+ expect { main_form.text_field(:id => "textBoxDisabled").clear }.to raise_error
23
23
  end
24
24
 
25
25
  it "considers a document control type a text field as well" do
@@ -62,7 +62,7 @@ describe "MsUia::Window", :if => SpecHelper.adapter == :ms_uia do
62
62
  end
63
63
 
64
64
  it "raises when errors occur" do
65
- lambda { window.menu(:text => "File").menu(:text => "Does Not Exist").open}.should raise_error
65
+ expect { window.menu(:text => "File").menu(:text => "Does Not Exist").open}.to raise_error
66
66
  end
67
67
 
68
68
  it "indicates if the menu item does not exist" do
@@ -82,66 +82,4 @@ describe "MsUia::Window", :if => SpecHelper.adapter == :ms_uia do
82
82
  window.menu(:text => "File").menu(:text => "Missing").should_not exist
83
83
  end
84
84
  end
85
-
86
- =begin
87
- it "control by focus" do
88
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
89
-
90
- button = window.button(:value => "Reset")
91
- button.set_focus
92
- control = window.control(:id => "button1", :focus => "")
93
-
94
- box2 = button.bounding_rectangle
95
- box1 = control.bounding_rectangle
96
-
97
- box1.should == box2
98
- end
99
-
100
- it "send tab keystrokes to move focus between elements" do
101
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
102
- window.button(:value => "&About").set_focus
103
- window.button(:value => "&About").should have_focus
104
-
105
- window.send_keys("{tab}{tab}{tab}")
106
- button = window.button(:value => "Close")
107
- button.should exist
108
- button.should have_focus
109
- end
110
-
111
- it "send keystrokes to a text field" do
112
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
113
- text_field = RAutomation::Window.new(:title => "MainFormWindow").text_field(:id => "textField")
114
- text_field.set_focus
115
- window.send_keys("abc123ABChiHI!\#@$%^&*()\"/-,'&_<>")
116
- text_field.value.should == "abc123ABChiHI!\#@$%^&*()\"/-,'&_<>"
117
- end
118
-
119
- it "sending keystrokes does not change argument string" do
120
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
121
-
122
- text_field = RAutomation::Window.new(:title => "MainFormWindow").text_field(:id => "textField")
123
- text_field.set_focus()
124
-
125
- an_important_string = "Don't lose me"
126
- window.send_keys(an_important_string)
127
- an_important_string.should == "Don't lose me"
128
- end
129
-
130
- it "#control" do
131
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
132
- window.control(:id => "aboutButton").should exist
133
- end
134
-
135
- it "has controls" do
136
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
137
- window.controls(:class => /BUTTON/i).size.should == 12
138
- end
139
-
140
- it "window coordinates" do
141
- window = RAutomation::Window.new(:title => /MainFormWindow/i)
142
-
143
- window.maximize
144
- window.bounding_rectangle.should == [-4, -4, 1444, 874]
145
- end
146
- =end
147
85
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rautomation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jarmo Pertman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-05 00:00:00.000000000 Z
11
+ date: 2013-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi