robust_excel_ole 1.1.5 → 1.1.6
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.
- checksums.yaml +4 -4
- data/Changelog +6 -0
- data/README.rdoc +2 -2
- data/docs/README_excel.rdoc +2 -3
- data/docs/README_open.rdoc +8 -12
- data/docs/README_ranges.rdoc +21 -9
- data/docs/README_sheet.rdoc +1 -1
- data/lib/robust_excel_ole/book.rb +3 -23
- data/lib/robust_excel_ole/excel.rb +2 -15
- data/lib/robust_excel_ole/reo_common.rb +11 -7
- data/lib/robust_excel_ole/sheet.rb +36 -15
- data/lib/robust_excel_ole/version.rb +1 -1
- data/robust_excel_ole.gemspec +1 -1
- data/spec/book_spec.rb +1 -1
- data/spec/book_specs/book_close_spec.rb +3 -3
- data/spec/book_specs/book_misc_spec.rb +25 -1
- data/spec/book_specs/book_open_spec.rb +299 -5
- data/spec/book_specs/book_sheet_spec.rb +1 -1
- data/spec/book_specs/book_unobtr_spec.rb +275 -35
- data/spec/data/another_workbook.xls +0 -0
- data/spec/data/different_workbook.xls +0 -0
- data/spec/data/workbook.xls +0 -0
- data/spec/excel_spec.rb +118 -5
- data/spec/helpers/key_sender.rb +2 -2
- data/spec/reo_common_spec.rb +0 -4
- data/spec/sheet_spec.rb +32 -0
- data/spec/spec_helper.rb +3 -0
- metadata +3 -21
- data/spec/ruby1.8.6_rspec2.14/book_spec.rb +0 -1421
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_all_spec.rb +0 -22
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_close_spec.rb +0 -252
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_misc_spec.rb +0 -1070
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_open_spec.rb +0 -1855
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_save_spec.rb +0 -514
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_sheet_spec.rb +0 -395
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_subclass_spec.rb +0 -51
- data/spec/ruby1.8.6_rspec2.14/book_specs/book_unobtr_spec.rb +0 -1737
- data/spec/ruby1.8.6_rspec2.14/bookstore_spec.rb +0 -495
- data/spec/ruby1.8.6_rspec2.14/cell_spec.rb +0 -76
- data/spec/ruby1.8.6_rspec2.14/cygwin_spec.rb +0 -42
- data/spec/ruby1.8.6_rspec2.14/excel_spec.rb +0 -1820
- data/spec/ruby1.8.6_rspec2.14/general_spec.rb +0 -212
- data/spec/ruby1.8.6_rspec2.14/range_spec.rb +0 -131
- data/spec/ruby1.8.6_rspec2.14/reo_common_spec.rb +0 -130
- data/spec/ruby1.8.6_rspec2.14/sheet_spec.rb +0 -663
- data/spec/ruby1.8.6_rspec2.14/spec_helper.rb +0 -35
@@ -1,22 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
|
-
|
5
|
-
|
6
|
-
$VERBOSE = nil
|
7
|
-
|
8
|
-
include General
|
9
|
-
|
10
|
-
unless Object.method_defined?(:require_relative)
|
11
|
-
def require_relative path
|
12
|
-
require File.expand_path(path, File.dirname(__FILE__))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
require_relative "book_open_spec"
|
17
|
-
require_relative "book_close_spec"
|
18
|
-
require_relative "book_save_spec"
|
19
|
-
require_relative "book_misc_spec"
|
20
|
-
require_relative "book_sheet_spec"
|
21
|
-
require_relative "book_unobtr_spec"
|
22
|
-
require_relative "book_subclass_spec"
|
@@ -1,252 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
|
-
|
5
|
-
|
6
|
-
$VERBOSE = nil
|
7
|
-
|
8
|
-
include RobustExcelOle
|
9
|
-
include General
|
10
|
-
|
11
|
-
describe Book do
|
12
|
-
|
13
|
-
before(:all) do
|
14
|
-
excel = Excel.new(:reuse => true)
|
15
|
-
open_books = excel == nil ? 0 : excel.Workbooks.Count
|
16
|
-
puts "*** open books *** : #{open_books}" if open_books > 0
|
17
|
-
Excel.kill_all
|
18
|
-
end
|
19
|
-
|
20
|
-
before do
|
21
|
-
@dir = create_tmpdir
|
22
|
-
@simple_file = @dir + '/workbook.xls'
|
23
|
-
@simple_save_file = @dir + '/workbook_save.xls'
|
24
|
-
@different_file = @dir + '/different_workbook.xls'
|
25
|
-
@simple_file_other_path = @dir + '/more_data/workbook.xls'
|
26
|
-
@another_simple_file = @dir + '/another_workbook.xls'
|
27
|
-
@linked_file = @dir + '/workbook_linked.xlsm'
|
28
|
-
@simple_file_xlsm = @dir + '/workbook.xls'
|
29
|
-
@simple_file_xlsx = @dir + '/workbook.xlsx'
|
30
|
-
@simple_file1 = @simple_file
|
31
|
-
end
|
32
|
-
|
33
|
-
after do
|
34
|
-
Excel.kill_all
|
35
|
-
rm_tmp(@dir)
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "close" do
|
39
|
-
|
40
|
-
context "with saved book" do
|
41
|
-
before do
|
42
|
-
@book = Book.open(@simple_file)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should close book" do
|
46
|
-
expect{
|
47
|
-
@book.close
|
48
|
-
}.to_not raise_error
|
49
|
-
@book.should_not be_alive
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
context "with unsaved read_only book" do
|
54
|
-
before do
|
55
|
-
@book = Book.open(@simple_file1, :read_only => true)
|
56
|
-
@sheet_count = @book.ole_workbook.Worksheets.Count
|
57
|
-
@book.add_sheet(@sheet, :as => 'a_name')
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should close the unsaved book without error and without saving" do
|
61
|
-
expect{
|
62
|
-
@book.close
|
63
|
-
}.to_not raise_error
|
64
|
-
new_book = Book.open(@simple_file1)
|
65
|
-
new_book.ole_workbook.Worksheets.Count.should == @sheet_count
|
66
|
-
new_book.close
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
context "with unsaved book" do
|
71
|
-
before do
|
72
|
-
@book = Book.open(@simple_file1)
|
73
|
-
@sheet_count = @book.ole_workbook.Worksheets.Count
|
74
|
-
@book.add_sheet(@sheet, :as => 'a_name')
|
75
|
-
@sheet = @book.sheet(1)
|
76
|
-
end
|
77
|
-
|
78
|
-
after do
|
79
|
-
@book.close(:if_unsaved => :forget) rescue nil
|
80
|
-
end
|
81
|
-
|
82
|
-
it "should raise error with option :raise" do
|
83
|
-
expect{
|
84
|
-
@book.close(:if_unsaved => :raise)
|
85
|
-
}.to raise_error(WorkbookNotSaved, /workbook is unsaved: "workbook.xls"/)
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should raise error by default" do
|
89
|
-
expect{
|
90
|
-
@book.close(:if_unsaved => :raise)
|
91
|
-
}.to raise_error(WorkbookNotSaved, /workbook is unsaved: "workbook.xls"/)
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should keep the book open" do
|
95
|
-
ole_workbook = @book.ole_workbook
|
96
|
-
excel = @book.excel
|
97
|
-
excel.Workbooks.Count.should == 1
|
98
|
-
@book.close(:if_unsaved => :keep_open)
|
99
|
-
excel.Workbooks.Count.should == 1
|
100
|
-
@book.should be_alive
|
101
|
-
end
|
102
|
-
|
103
|
-
it "should close the book and leave its file untouched with option :forget" do
|
104
|
-
ole_workbook = @book.ole_workbook
|
105
|
-
excel = @book.excel
|
106
|
-
excel.Workbooks.Count.should == 1
|
107
|
-
@book.close(:if_unsaved => :forget)
|
108
|
-
excel.Workbooks.Count.should == 0
|
109
|
-
@book.ole_workbook.should == nil
|
110
|
-
@book.should_not be_alive
|
111
|
-
expect{
|
112
|
-
ole_workbook.Name}.to raise_error(WIN32OLERuntimeError)
|
113
|
-
new_book = Book.open(@simple_file1)
|
114
|
-
begin
|
115
|
-
new_book.ole_workbook.Worksheets.Count.should == @sheet_count
|
116
|
-
ensure
|
117
|
-
new_book.close
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should close the book and leave its file untouched with option :forget even with displayalerts true" do
|
122
|
-
ole_workbook = @book.ole_workbook
|
123
|
-
excel = @book.excel
|
124
|
-
excel.displayalerts = true
|
125
|
-
excel.Workbooks.Count.should == 1
|
126
|
-
@book.close(:if_unsaved => :forget)
|
127
|
-
excel.Workbooks.Count.should == 0
|
128
|
-
@book.ole_workbook.should == nil
|
129
|
-
@book.should_not be_alive
|
130
|
-
expect{
|
131
|
-
ole_workbook.Name}.to raise_error(WIN32OLERuntimeError)
|
132
|
-
new_book = Book.open(@simple_file1)
|
133
|
-
begin
|
134
|
-
new_book.ole_workbook.Worksheets.Count.should == @sheet_count
|
135
|
-
ensure
|
136
|
-
new_book.close
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should raise an error for invalid option" do
|
141
|
-
expect {
|
142
|
-
@book.close(:if_unsaved => :invalid_option)
|
143
|
-
}.to raise_error(OptionInvalid, ":if_unsaved: invalid option: :invalid_option")
|
144
|
-
end
|
145
|
-
|
146
|
-
|
147
|
-
it "should save the book before close with option :save" do
|
148
|
-
ole_workbook = @book.ole_workbook
|
149
|
-
excel = @book.excel
|
150
|
-
excel.Workbooks.Count.should == 1
|
151
|
-
@book.close(:if_unsaved => :save)
|
152
|
-
excel.Workbooks.Count.should == 0
|
153
|
-
@book.ole_workbook.should == nil
|
154
|
-
@book.should_not be_alive
|
155
|
-
expect{
|
156
|
-
ole_workbook.Name}.to raise_error(WIN32OLERuntimeError)
|
157
|
-
new_book = Book.open(@simple_file1)
|
158
|
-
begin
|
159
|
-
new_book.ole_workbook.Worksheets.Count.should == @sheet_count + 1
|
160
|
-
ensure
|
161
|
-
new_book.close
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
context "with :if_unsaved => :alert" do
|
166
|
-
before do
|
167
|
-
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Excel" ' , "w"
|
168
|
-
end
|
169
|
-
|
170
|
-
after do
|
171
|
-
@key_sender.close
|
172
|
-
end
|
173
|
-
|
174
|
-
possible_answers = [:yes, :no, :cancel]
|
175
|
-
possible_answers.each_with_index do |answer, position|
|
176
|
-
it "should" + (answer == :yes ? "" : " not") + " the unsaved book and" + (answer == :cancel ? " not" : "") + " close it" + "if user answers '#{answer}'" do
|
177
|
-
# "Yes" is the default. "No" is right of "Yes", "Cancel" is right of "No" --> language independent
|
178
|
-
@key_sender.puts "{right}" * position + "{enter}"
|
179
|
-
ole_workbook = @book.ole_workbook
|
180
|
-
excel = @book.excel
|
181
|
-
displayalert_value = @book.excel.DisplayAlerts
|
182
|
-
if answer == :cancel then
|
183
|
-
expect {
|
184
|
-
@book.close(:if_unsaved => :alert)
|
185
|
-
}.to_not raise_error
|
186
|
-
@book.ole_workbook.Saved.should be_false
|
187
|
-
@book.ole_workbook.should_not == nil
|
188
|
-
@book.should be_alive
|
189
|
-
else
|
190
|
-
@book.excel.Workbooks.Count.should == 1
|
191
|
-
@book.close(:if_unsaved => :alert)
|
192
|
-
@book.excel.Workbooks.Count.should == 0
|
193
|
-
@book.ole_workbook.should == nil
|
194
|
-
@book.should_not be_alive
|
195
|
-
expect{ole_workbook.Name}.to raise_error(WIN32OLERuntimeError)
|
196
|
-
end
|
197
|
-
new_book = Book.open(@simple_file1, :if_unsaved => :forget)
|
198
|
-
begin
|
199
|
-
new_book.ole_workbook.Worksheets.Count.should == @sheet_count + (answer==:yes ? 1 : 0)
|
200
|
-
new_book.excel.DisplayAlerts.should == displayalert_value
|
201
|
-
ensure
|
202
|
-
new_book.close
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
207
|
-
|
208
|
-
context "with :if_unsaved => :excel" do
|
209
|
-
before do
|
210
|
-
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Excel" ' , "w"
|
211
|
-
end
|
212
|
-
|
213
|
-
after do
|
214
|
-
@key_sender.close
|
215
|
-
end
|
216
|
-
|
217
|
-
possible_answers = [:yes, :no, :cancel]
|
218
|
-
possible_answers.each_with_index do |answer, position|
|
219
|
-
it "should" + (answer == :yes ? "" : " not") + " the unsaved book and" + (answer == :cancel ? " not" : "") + " close it" + "if user answers '#{answer}'" do
|
220
|
-
# "Yes" is the default. "No" is right of "Yes", "Cancel" is right of "No" --> language independent
|
221
|
-
@key_sender.puts "{right}" * position + "{enter}"
|
222
|
-
ole_workbook = @book.ole_workbook
|
223
|
-
excel = @book.excel
|
224
|
-
displayalert_value = @book.excel.DisplayAlerts
|
225
|
-
if answer == :cancel then
|
226
|
-
expect {
|
227
|
-
@book.close(:if_unsaved => :excel)
|
228
|
-
}.to_not raise_error
|
229
|
-
@book.ole_workbook.Saved.should be_false
|
230
|
-
@book.ole_workbook.should_not == nil
|
231
|
-
@book.should be_alive
|
232
|
-
else
|
233
|
-
@book.excel.Workbooks.Count.should == 1
|
234
|
-
@book.close(:if_unsaved => :excel)
|
235
|
-
@book.excel.Workbooks.Count.should == 0
|
236
|
-
@book.ole_workbook.should == nil
|
237
|
-
@book.should_not be_alive
|
238
|
-
expect{ole_workbook.Name}.to raise_error(WIN32OLERuntimeError)
|
239
|
-
end
|
240
|
-
new_book = Book.open(@simple_file1, :if_unsaved => :forget)
|
241
|
-
begin
|
242
|
-
new_book.ole_workbook.Worksheets.Count.should == @sheet_count + (answer==:yes ? 1 : 0)
|
243
|
-
new_book.excel.DisplayAlerts.should == displayalert_value
|
244
|
-
ensure
|
245
|
-
new_book.close
|
246
|
-
end
|
247
|
-
end
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
end
|
@@ -1,1070 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), './../spec_helper')
|
4
|
-
|
5
|
-
|
6
|
-
$VERBOSE = nil
|
7
|
-
|
8
|
-
include RobustExcelOle
|
9
|
-
include General
|
10
|
-
|
11
|
-
describe Book do
|
12
|
-
|
13
|
-
before(:all) do
|
14
|
-
excel = Excel.new(:reuse => true)
|
15
|
-
open_books = excel == nil ? 0 : excel.Workbooks.Count
|
16
|
-
puts "*** open books *** : #{open_books}" if open_books > 0
|
17
|
-
Excel.kill_all
|
18
|
-
end
|
19
|
-
|
20
|
-
before do
|
21
|
-
@dir = create_tmpdir
|
22
|
-
@simple_file = @dir + '/workbook.xls'
|
23
|
-
@simple_save_file = @dir + '/workbook_save.xls'
|
24
|
-
@different_file = @dir + '/different_workbook.xls'
|
25
|
-
@simple_file_other_path = @dir + '/more_data/workbook.xls'
|
26
|
-
@another_simple_file = @dir + '/another_workbook.xls'
|
27
|
-
@linked_file = @dir + '/workbook_linked.xlsm'
|
28
|
-
@simple_file_xlsm = @dir + '/workbook.xls'
|
29
|
-
@simple_file_xlsx = @dir + '/workbook.xlsx'
|
30
|
-
@simple_file1 = @simple_file
|
31
|
-
end
|
32
|
-
|
33
|
-
after do
|
34
|
-
Excel.kill_all
|
35
|
-
#rm_tmp(@dir)
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "create file" do
|
39
|
-
context "with standard" do
|
40
|
-
it "open an existing file" do
|
41
|
-
expect {
|
42
|
-
@book = Book.new(@simple_file)
|
43
|
-
}.to_not raise_error
|
44
|
-
@book.should be_a Book
|
45
|
-
@book.close
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
describe "for_this_workbook" do
|
51
|
-
|
52
|
-
before do
|
53
|
-
@book = Book.open(@simple_file)
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should set options" do
|
57
|
-
@book.for_this_workbook(:visible => true)
|
58
|
-
@book.excel.Visible.should be_true
|
59
|
-
@book.Windows(@book.Name).Visible.should be_true
|
60
|
-
@book.visible.should be_true
|
61
|
-
@book.ReadOnly.should be_false
|
62
|
-
@book.CheckCompatibility.should be_false
|
63
|
-
@book.for_this_workbook(:visible => false)
|
64
|
-
@book.excel.Visible.should be_true
|
65
|
-
@book.Windows(@book.Name).Visible.should be_false
|
66
|
-
@book.visible.should be_false
|
67
|
-
@book.ReadOnly.should be_false
|
68
|
-
@book.CheckCompatibility.should be_false
|
69
|
-
@book.for_this_workbook(:read_only => true)
|
70
|
-
@book.excel.Visible.should be_true
|
71
|
-
@book.Windows(@book.Name).Visible.should be_false
|
72
|
-
@book.visible.should be_false
|
73
|
-
@book.ReadOnly.should be_true
|
74
|
-
@book.CheckCompatibility.should be_false
|
75
|
-
@book.for_this_workbook(:visible => true)
|
76
|
-
@book.excel.Visible.should be_true
|
77
|
-
@book.Windows(@book.Name).Visible.should be_true
|
78
|
-
@book.visible.should be_true
|
79
|
-
@book.ReadOnly.should be_true
|
80
|
-
@book.CheckCompatibility.should be_false
|
81
|
-
@book.for_this_workbook(:check_compatibility => true)
|
82
|
-
@book.excel.Visible.should be_true
|
83
|
-
@book.Windows(@book.Name).Visible.should be_true
|
84
|
-
@book.visible.should be_true
|
85
|
-
@book.ReadOnly.should be_true
|
86
|
-
@book.CheckCompatibility.should be_true
|
87
|
-
@book.for_this_workbook(:visible => false, :check_compatibility => false)
|
88
|
-
@book.excel.Visible.should be_true
|
89
|
-
@book.Windows(@book.Name).Visible.should be_false
|
90
|
-
@book.visible.should be_false
|
91
|
-
@book.ReadOnly.should be_true
|
92
|
-
@book.CheckCompatibility.should be_false
|
93
|
-
@book.for_this_workbook(:calculation => true)
|
94
|
-
@book.excel.Visible.should be_true
|
95
|
-
@book.Windows(@book.Name).Visible.should be_false
|
96
|
-
@book.visible.should be_false
|
97
|
-
@book.ReadOnly.should be_true
|
98
|
-
@book.CheckCompatibility.should be_false
|
99
|
-
@book.excel.calculation.should be_true
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should set options" do
|
103
|
-
@book.for_this_workbook(:read_only => true, :check_compatibility => true)
|
104
|
-
@book.CheckCompatibility.should be_true
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
describe "excel_of" do
|
110
|
-
|
111
|
-
before do
|
112
|
-
@book = Book.open(@simple_file)
|
113
|
-
end
|
114
|
-
|
115
|
-
after do
|
116
|
-
@book.close
|
117
|
-
end
|
118
|
-
|
119
|
-
it "should access the excel" do
|
120
|
-
workbook = @book.ole_workbook
|
121
|
-
excel = Book.excel_of(workbook)
|
122
|
-
excel.should be_a Excel
|
123
|
-
excel.should == @book.excel
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should access the Excel of the ole_excel" do
|
127
|
-
excel = Book.excel_of(@book.excel.ole_excel)
|
128
|
-
excel.should be_a Excel
|
129
|
-
excel.should == @book.excel
|
130
|
-
end
|
131
|
-
|
132
|
-
it "should access the Excel of a Book" do
|
133
|
-
excel = Book.excel_of(@book)
|
134
|
-
excel.should be_a Excel
|
135
|
-
excel.should == @book.excel
|
136
|
-
end
|
137
|
-
|
138
|
-
end
|
139
|
-
|
140
|
-
describe "with retain_saved" do
|
141
|
-
|
142
|
-
before do
|
143
|
-
@book = Book.open(@simple_file)
|
144
|
-
end
|
145
|
-
|
146
|
-
after do
|
147
|
-
@book.close(:if_unsaved => :forget)
|
148
|
-
end
|
149
|
-
|
150
|
-
it "should keep the save state 'saved' with empty assignments" do
|
151
|
-
@book.Saved.should be_true
|
152
|
-
@book.retain_saved do
|
153
|
-
end
|
154
|
-
@book.Saved.should be_true
|
155
|
-
end
|
156
|
-
|
157
|
-
it "should keep the save state 'saved' with non-affecting assignments" do
|
158
|
-
@book.Saved.should be_true
|
159
|
-
@book.retain_saved do
|
160
|
-
sheet = @book.sheet(1)
|
161
|
-
a = sheet[1,1]
|
162
|
-
b = @book.visible
|
163
|
-
end
|
164
|
-
@book.Saved.should be_true
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should keep the save state 'unsaved'" do
|
168
|
-
sheet = @book.sheet(1)
|
169
|
-
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
170
|
-
@book.Saved.should be_false
|
171
|
-
@book.retain_saved do
|
172
|
-
sheet = @book.sheet(1)
|
173
|
-
a = sheet[1,1]
|
174
|
-
b = @book.visible
|
175
|
-
end
|
176
|
-
@book.Saved.should be_false
|
177
|
-
end
|
178
|
-
|
179
|
-
it "should keep the save state 'saved'" do
|
180
|
-
@book.Saved.should be_true
|
181
|
-
@book.retain_saved do
|
182
|
-
sheet = @book.sheet(1)
|
183
|
-
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
184
|
-
@book.Saved.should be_false
|
185
|
-
end
|
186
|
-
@book.Saved.should be_true
|
187
|
-
end
|
188
|
-
|
189
|
-
it "should keep the save state 'unsaved' even when the workbook was saved before" do
|
190
|
-
sheet = @book.sheet(1)
|
191
|
-
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
192
|
-
@book.Saved.should be_false
|
193
|
-
@book.retain_saved do
|
194
|
-
@book.save
|
195
|
-
@book.Saved.should be_true
|
196
|
-
end
|
197
|
-
@book.Saved.should be_false
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
describe "default-visible" do
|
202
|
-
|
203
|
-
it "should keep the visibility of the open workbook" do
|
204
|
-
book1 = Book.open(@simple_file1)
|
205
|
-
book1.excel.Visible.should be_false
|
206
|
-
book1.Windows(book1.Name).Visible.should be_true
|
207
|
-
book1.visible.should be_false
|
208
|
-
book2 = Book.open(@simple_file1, :default => {:visible => true})
|
209
|
-
book2.visible.should be_false
|
210
|
-
book2.excel.Visible.should be_false
|
211
|
-
book2.Windows(book2.Name).Visible.should be_true
|
212
|
-
book1.visible.should be_false
|
213
|
-
book2 = Book.open(@simple_file1, :default => {:visible => false})
|
214
|
-
book2.visible.should be_false
|
215
|
-
book2.excel.Visible.should be_false
|
216
|
-
book2.Windows(book2.Name).Visible.should be_true
|
217
|
-
book1.visible.should be_false
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should keep the visibility of the open workbook per default" do
|
221
|
-
book1 = Book.open(@simple_file1)
|
222
|
-
book1.excel.Visible.should be_false
|
223
|
-
book1.Windows(book1.Name).Visible.should be_true
|
224
|
-
book1.visible.should be_false
|
225
|
-
book2 = Book.open(@simple_file1)
|
226
|
-
book2.visible.should be_false
|
227
|
-
book2.excel.Visible.should be_false
|
228
|
-
book2.Windows(book2.Name).Visible.should be_true
|
229
|
-
book1.visible.should be_false
|
230
|
-
end
|
231
|
-
|
232
|
-
it "should keep the found Excel instance invisible" do
|
233
|
-
book1 = Book.open(@simple_file1)
|
234
|
-
excel1 = book1.excel
|
235
|
-
excel1.Visible.should be_false
|
236
|
-
book1.close
|
237
|
-
book2 = Book.open(@simple_file1, :default => {:visible => true})
|
238
|
-
excel2 = book2.excel
|
239
|
-
excel2.should == excel1
|
240
|
-
excel2.Visible.should be_false
|
241
|
-
book2.Windows(book2.Name).Visible.should be_true
|
242
|
-
end
|
243
|
-
|
244
|
-
it "should keep the found Excel instance invisible with default invisible" do
|
245
|
-
book1 = Book.open(@simple_file1)
|
246
|
-
excel1 = book1.excel
|
247
|
-
excel1.Visible.should be_false
|
248
|
-
book1.close
|
249
|
-
book2 = Book.open(@simple_file1, :default => {:visible => false})
|
250
|
-
excel2 = book1.excel
|
251
|
-
excel2.should == excel1
|
252
|
-
excel2.Visible.should be_false
|
253
|
-
book2.Windows(book2.Name).Visible.should be_false
|
254
|
-
end
|
255
|
-
|
256
|
-
it "should keep the found Excel instance visible" do
|
257
|
-
book1 = Book.open(@simple_file1, :visible => true)
|
258
|
-
excel1 = book1.excel
|
259
|
-
book1.Windows(book1.Name).Visible.should be_true
|
260
|
-
excel1.Visible.should be_true
|
261
|
-
book1.close
|
262
|
-
book2 = Book.open(@simple_file1, :default => {:visible => false})
|
263
|
-
excel2 = book1.excel
|
264
|
-
excel2.should == excel1
|
265
|
-
excel2.Visible.should be_true
|
266
|
-
book2.Windows(book2.Name).Visible.should be_false
|
267
|
-
end
|
268
|
-
|
269
|
-
it "should keep the found Excel instance visible with default visible true" do
|
270
|
-
book1 = Book.open(@simple_file1, :visible => true)
|
271
|
-
excel1 = book1.excel
|
272
|
-
book1.Windows(book1.Name).Visible.should be_true
|
273
|
-
excel1.Visible.should be_true
|
274
|
-
book1.close
|
275
|
-
book2 = Book.open(@simple_file1, :default => {:visible => true})
|
276
|
-
excel2 = book1.excel
|
277
|
-
excel2.should == excel1
|
278
|
-
excel2.Visible.should be_true
|
279
|
-
book2.Windows(book2.Name).Visible.should be_true
|
280
|
-
end
|
281
|
-
|
282
|
-
it "should keep the found Excel instance invisible per default" do
|
283
|
-
book1 = Book.open(@simple_file1)
|
284
|
-
excel1 = book1.excel
|
285
|
-
excel1.Visible.should be_false
|
286
|
-
book1.close
|
287
|
-
book2 = Book.open(@simple_file1)
|
288
|
-
excel2 = book1.excel
|
289
|
-
excel2.should == excel1
|
290
|
-
excel2.Visible.should be_false
|
291
|
-
book2.Windows(book2.Name).Visible.should be_true
|
292
|
-
end
|
293
|
-
|
294
|
-
it "should open the workbook visible if the workbook is new" do
|
295
|
-
book1 = Book.open(@simple_file1, :default => {:visible => true})
|
296
|
-
book1.visible.should be_true
|
297
|
-
book1.excel.Visible.should be_true
|
298
|
-
book1.Windows(book1.Name).Visible.should be_true
|
299
|
-
end
|
300
|
-
|
301
|
-
it "should open the workbook invisible if the workbook is new" do
|
302
|
-
book1 = Book.open(@simple_file1, :default => {:visible => false})
|
303
|
-
book1.visible.should be_false
|
304
|
-
book1.excel.Visible.should be_false
|
305
|
-
book1.Windows(book1.Name).Visible.should be_false
|
306
|
-
end
|
307
|
-
|
308
|
-
it "should open the workbook invisible per default if the workbook is new" do
|
309
|
-
book1 = Book.open(@simple_file1)
|
310
|
-
book1.visible.should be_false
|
311
|
-
book1.excel.Visible.should be_false
|
312
|
-
book1.Windows(book1.Name).Visible.should be_true
|
313
|
-
end
|
314
|
-
|
315
|
-
it "should open the workbook visible if the old Excel is closed" do
|
316
|
-
book1 = Book.open(@simple_file1)
|
317
|
-
book1.visible.should be_false
|
318
|
-
excel1 = book1.excel
|
319
|
-
excel1.Visible.should be_false
|
320
|
-
book1.Windows(book1.Name).Visible.should be_true
|
321
|
-
book1.close
|
322
|
-
excel1.close
|
323
|
-
book2 = Book.open(@simple_file1, :default => {:visible => true})
|
324
|
-
excel2 = book2.excel
|
325
|
-
book2.visible.should be_true
|
326
|
-
excel2.Visible.should be_true
|
327
|
-
book1.Windows(book1.Name).Visible.should be_true
|
328
|
-
end
|
329
|
-
|
330
|
-
it "should open the workbook invisible if the old Excel is closed" do
|
331
|
-
book1 = Book.open(@simple_file1, :default => {:visible => true})
|
332
|
-
book1.visible.should be_true
|
333
|
-
excel1 = book1.excel
|
334
|
-
excel1.Visible.should be_true
|
335
|
-
book1.Windows(book1.Name).Visible.should be_true
|
336
|
-
book1.close
|
337
|
-
excel1.close
|
338
|
-
book2 = Book.open(@simple_file1, :default => {:visible => false})
|
339
|
-
excel2 = book2.excel
|
340
|
-
book2.visible.should be_false
|
341
|
-
excel2.Visible.should be_false
|
342
|
-
book1.Windows(book1.Name).Visible.should be_false
|
343
|
-
end
|
344
|
-
|
345
|
-
end
|
346
|
-
|
347
|
-
describe "force-visible" do
|
348
|
-
|
349
|
-
it "should change the visibility of the workbooks" do
|
350
|
-
book1 = Book.open(@simple_file)
|
351
|
-
book1.excel.Visible.should be_false
|
352
|
-
book1.Windows(book1.Name).Visible.should be_true
|
353
|
-
book1.visible.should be_false
|
354
|
-
book2 = Book.open(@simple_file, :visible => true)
|
355
|
-
book2.visible.should be_true
|
356
|
-
book2.excel.Visible.should be_true
|
357
|
-
book2.Windows(book2.Name).Visible.should be_true
|
358
|
-
book1.visible.should be_true
|
359
|
-
book2 = Book.open(@simple_file, :visible => false)
|
360
|
-
book2.visible.should be_false
|
361
|
-
book2.excel.Visible.should be_true
|
362
|
-
book2.Windows(book2.Name).Visible.should be_false
|
363
|
-
book1.visible.should be_false
|
364
|
-
book1.Windows(book2.Name).Visible.should be_false
|
365
|
-
end
|
366
|
-
end
|
367
|
-
|
368
|
-
describe "with visible" do
|
369
|
-
|
370
|
-
it "should adapt its default value at the visible value of the Excel" do
|
371
|
-
excel1 = Excel.create
|
372
|
-
excel1.visible = true
|
373
|
-
book1 = Book.open(@simple_file)
|
374
|
-
excel1.Visible.should be_true
|
375
|
-
excel1.visible.should be_true
|
376
|
-
book1.visible.should be_true
|
377
|
-
end
|
378
|
-
|
379
|
-
it "should preserve :visible if it is not set" do
|
380
|
-
book1 = Book.open(@simple_file)
|
381
|
-
book1.excel.Visible.should be_false
|
382
|
-
book1.Windows(book1.Name).Visible.should be_true
|
383
|
-
book1.visible.should be_false
|
384
|
-
end
|
385
|
-
|
386
|
-
it "should set :visible to false" do
|
387
|
-
book1 = Book.open(@simple_file, :visible => false)
|
388
|
-
book1.excel.Visible.should be_false
|
389
|
-
book1.Windows(book1.Name).Visible.should be_false
|
390
|
-
book1.visible.should be_false
|
391
|
-
end
|
392
|
-
|
393
|
-
it "should set :visible to true" do
|
394
|
-
book1 = Book.open(@simple_file, :visible => true)
|
395
|
-
book1.excel.Visible.should be_true
|
396
|
-
book1.Windows(book1.Name).Visible.should be_true
|
397
|
-
book1.visible.should be_true
|
398
|
-
end
|
399
|
-
|
400
|
-
it "should preserve :visible if they are set to visible" do
|
401
|
-
excel1 = Excel.create(:visible => true)
|
402
|
-
book1 = Book.open(@simple_file)
|
403
|
-
book1.excel.Visible.should be_true
|
404
|
-
book1.Windows(book1.Name).Visible.should be_true
|
405
|
-
book1.visible.should be_true
|
406
|
-
end
|
407
|
-
|
408
|
-
it "should preserve :visible" do
|
409
|
-
excel1 = Excel.create
|
410
|
-
book1 = Book.open(@simple_file)
|
411
|
-
book1.excel.Visible.should be_false
|
412
|
-
book1.Windows(book1.Name).Visible.should be_true
|
413
|
-
book1.visible.should be_false
|
414
|
-
end
|
415
|
-
|
416
|
-
|
417
|
-
it "should preserve :visible if it is set to false" do
|
418
|
-
excel1 = Excel.create
|
419
|
-
book1 = Book.open(@simple_file, :visible => false)
|
420
|
-
book1.excel.Visible.should be_false
|
421
|
-
book1.Windows(book1.Name).Visible.should be_false
|
422
|
-
book1.visible.should be_false
|
423
|
-
end
|
424
|
-
|
425
|
-
it "should preserve :visible if it is not set" do
|
426
|
-
excel1 = Excel.create
|
427
|
-
book1 = Book.open(@simple_file)
|
428
|
-
book1.excel.Visible.should be_false
|
429
|
-
book1.Windows(book1.Name).Visible.should be_true
|
430
|
-
book1.visible.should be_false
|
431
|
-
end
|
432
|
-
|
433
|
-
it "should overwrite :visible to false" do
|
434
|
-
excel1 = Excel.create(:visible => true)
|
435
|
-
book1 = Book.open(@simple_file, :visible => false)
|
436
|
-
book1.excel.Visible.should be_true
|
437
|
-
book1.Windows(book1.Name).Visible.should be_false
|
438
|
-
book1.visible.should be_false
|
439
|
-
end
|
440
|
-
|
441
|
-
it "should overwrite :visible to true" do
|
442
|
-
excel1 = Excel.create(:visible => false)
|
443
|
-
book1 = Book.open(@simple_file, :visible => true)
|
444
|
-
book1.excel.Visible.should be_true
|
445
|
-
book1.Windows(book1.Name).Visible.should be_true
|
446
|
-
book1.visible.should be_true
|
447
|
-
end
|
448
|
-
|
449
|
-
it "should preserve :visible if it is not set with default_excel" do
|
450
|
-
excel1 = Excel.create(:visible => true)
|
451
|
-
book1 = Book.open(@simple_file)
|
452
|
-
book2 = Book.open(@different_file, :default_excel => :new)
|
453
|
-
book2.excel.Visible.should be_false
|
454
|
-
book2.Windows(book2.Name).Visible.should be_true
|
455
|
-
book2.visible.should be_false
|
456
|
-
end
|
457
|
-
|
458
|
-
it "should set :visible to true with default_excel" do
|
459
|
-
excel1 = Excel.create(:visible => true)
|
460
|
-
book1 = Book.open(@simple_file)
|
461
|
-
book2 = Book.open(@different_file, :default_excel => :new, :visible => true)
|
462
|
-
book2.excel.Visible.should be_true
|
463
|
-
book2.Windows(book2.Name).Visible.should be_true
|
464
|
-
book2.visible.should be_true
|
465
|
-
end
|
466
|
-
|
467
|
-
it "should set :visible to false with default_excel" do
|
468
|
-
excel1 = Excel.create(:visible => true)
|
469
|
-
book1 = Book.open(@simple_file)
|
470
|
-
book2 = Book.open(@different_file, :default_excel => :new, :visible => false)
|
471
|
-
book2.excel.Visible.should be_false
|
472
|
-
book2.Windows(book2.Name).Visible.should be_false
|
473
|
-
book2.visible.should be_false
|
474
|
-
end
|
475
|
-
|
476
|
-
it "should preserve :visible if it is set to true with default_excel" do
|
477
|
-
excel1 = Excel.create(:visible => true)
|
478
|
-
excel2 = Excel.create(:visible => true)
|
479
|
-
book1 = Book.open(@different_file, :default_excel => excel2)
|
480
|
-
book1.excel.Visible.should be_true
|
481
|
-
book1.Windows(book1.Name).Visible.should be_true
|
482
|
-
book1.visible.should be_true
|
483
|
-
end
|
484
|
-
|
485
|
-
it "should overwrite :visible to false with default_excel" do
|
486
|
-
excel1 = Excel.create(:visible => true)
|
487
|
-
excel2 = Excel.create(:visible => true)
|
488
|
-
book1 = Book.open(@different_file, :default_excel => excel2, :visible => false)
|
489
|
-
book1.excel.Visible.should be_true
|
490
|
-
book1.Windows(book1.Name).Visible.should be_false
|
491
|
-
book1.visible.should be_false
|
492
|
-
end
|
493
|
-
|
494
|
-
it "should preserve :visible if it is not set with force_excel => new" do
|
495
|
-
excel1 = Excel.create(:visible => true)
|
496
|
-
book1 = Book.open(@different_file, :force_excel => :new)
|
497
|
-
book1.excel.Visible.should be_false
|
498
|
-
book1.Windows(book1.Name).Visible.should be_true
|
499
|
-
book1.visible.should be_false
|
500
|
-
end
|
501
|
-
|
502
|
-
it "should set :visible to true with force_excel" do
|
503
|
-
excel1 = Excel.create(:visible => true)
|
504
|
-
book1 = Book.open(@different_file, :force_excel => :new, :visible => true)
|
505
|
-
book1.excel.Visible.should be_true
|
506
|
-
book1.Windows(book1.Name).Visible.should be_true
|
507
|
-
book1.visible.should be_true
|
508
|
-
end
|
509
|
-
|
510
|
-
it "should preserve :visible if it is not set with force_excel => excel" do
|
511
|
-
excel1 = Excel.create(:visible => true)
|
512
|
-
excel2 = Excel.create(:visible => true)
|
513
|
-
book1 = Book.open(@different_file, :force_excel => excel2)
|
514
|
-
book1.excel.Visible.should be_true
|
515
|
-
book1.Windows(book1.Name).Visible.should be_true
|
516
|
-
book1.visible.should be_true
|
517
|
-
end
|
518
|
-
|
519
|
-
it "should set visible to false with force_excel => excel" do
|
520
|
-
excel1 = Excel.create(:visible => true)
|
521
|
-
excel2 = Excel.create(:visible => true)
|
522
|
-
book1 = Book.open(@different_file, :force_excel => excel2, :visible => false)
|
523
|
-
book1.excel.Visible.should be_true
|
524
|
-
book1.Windows(book1.Name).Visible.should be_false
|
525
|
-
book1.visible.should be_false
|
526
|
-
end
|
527
|
-
|
528
|
-
it "should set visible to true with force_excel => excel" do
|
529
|
-
excel1 = Excel.create(:visible => true)
|
530
|
-
excel2 = Excel.create(:visible => true)
|
531
|
-
book1 = Book.open(@different_file, :force_excel => excel2, :visible => true)
|
532
|
-
book1.excel.Visible.should be_true
|
533
|
-
book1.Windows(book1.Name).Visible.should be_true
|
534
|
-
book1.visible.should be_true
|
535
|
-
end
|
536
|
-
|
537
|
-
it "should preserve :visible if it is set to true with force_excel => current" do
|
538
|
-
excel1 = Excel.create(:visible => true)
|
539
|
-
book1 = Book.open(@different_file, :force_excel => :current)
|
540
|
-
book1.excel.Visible.should be_true
|
541
|
-
book1.Windows(book1.Name).Visible.should be_true
|
542
|
-
book1.visible.should be_true
|
543
|
-
end
|
544
|
-
|
545
|
-
it "should set :visible to false with force_excel => current" do
|
546
|
-
excel1 = Excel.create(:visible => true)
|
547
|
-
book1 = Book.open(@different_file, :force_excel => :current, :visible => false)
|
548
|
-
book1.excel.Visible.should be_true
|
549
|
-
book1.Windows(book1.Name).Visible.should be_false
|
550
|
-
book1.visible.should be_false
|
551
|
-
end
|
552
|
-
|
553
|
-
it "should preserve :visible if it is set to false with force_excel => current" do
|
554
|
-
excel1 = Excel.create(:visible => false)
|
555
|
-
book1 = Book.open(@simple_file, :force_excel => :current)
|
556
|
-
book1.excel.Visible.should be_false
|
557
|
-
book1.Windows(book1.Name).Visible.should be_true
|
558
|
-
book1.visible.should be_false
|
559
|
-
end
|
560
|
-
|
561
|
-
it "should set :visible to false with force_excel => current" do
|
562
|
-
excel1 = Excel.create(:visible => false)
|
563
|
-
book1 = Book.open(@simple_file, :force_excel => :current, :visible => true)
|
564
|
-
book1.excel.Visible.should be_true
|
565
|
-
book1.Windows(book1.Name).Visible.should be_true
|
566
|
-
book1.visible.should be_true
|
567
|
-
end
|
568
|
-
|
569
|
-
it "should let an open Book open" do
|
570
|
-
@book = Book.open(@simple_file1, :visible => true)
|
571
|
-
Book.unobtrusively(@simple_file1) do |book|
|
572
|
-
book.should be_a Book
|
573
|
-
book.should be_alive
|
574
|
-
book.excel.should == @book.excel
|
575
|
-
book.excel.Visible.should be_true
|
576
|
-
end
|
577
|
-
@book.should be_alive
|
578
|
-
@book.should be_a Book
|
579
|
-
@book.excel.Visible.should be_true
|
580
|
-
@book.close(:if_unsaved => :forget)
|
581
|
-
@book2.close(:if_unsaved => :forget) rescue nil
|
582
|
-
end
|
583
|
-
|
584
|
-
it "should set visible and displayalerts if displayalerts => :if_visible" do
|
585
|
-
book1 = Book.open(@simple_file)
|
586
|
-
book1.excel.Visible.should be_false
|
587
|
-
book1.excel.displayalerts.should == :if_visible
|
588
|
-
book1.Windows(book1.Name).Visible.should be_true
|
589
|
-
book1.visible.should be_false
|
590
|
-
book2 = Book.open(@different_file)
|
591
|
-
book2.excel.Visible.should be_false
|
592
|
-
book2.Windows(book2.Name).Visible.should be_true
|
593
|
-
book2.visible.should be_false
|
594
|
-
book2.excel.visible.should be_false
|
595
|
-
book2.excel.displayalerts.should == :if_visible
|
596
|
-
book2.excel.DisplayAlerts.should be_false
|
597
|
-
end
|
598
|
-
|
599
|
-
it "should set visible and displayalerts if displayalerts => :if_visible" do
|
600
|
-
book1 = Book.open(@simple_file)
|
601
|
-
book1.excel.Visible.should be_false
|
602
|
-
book1.excel.displayalerts.should == :if_visible
|
603
|
-
book1.Windows(book1.Name).Visible.should be_true
|
604
|
-
book1.visible.should be_false
|
605
|
-
book2 = Book.open(@different_file, :visible => true)
|
606
|
-
book2.excel.Visible.should be_true
|
607
|
-
book2.Windows(book2.Name).Visible.should be_true
|
608
|
-
book2.visible.should be_true
|
609
|
-
book2.excel.visible.should be_true
|
610
|
-
book2.excel.displayalerts.should == :if_visible
|
611
|
-
book2.excel.DisplayAlerts.should be_true
|
612
|
-
end
|
613
|
-
end
|
614
|
-
|
615
|
-
describe "send methods to workbook" do
|
616
|
-
|
617
|
-
context "with standard" do
|
618
|
-
before do
|
619
|
-
@book = Book.open(@simple_file)
|
620
|
-
end
|
621
|
-
|
622
|
-
after do
|
623
|
-
@book.close
|
624
|
-
end
|
625
|
-
|
626
|
-
it "should send Saved to workbook" do
|
627
|
-
@book.Saved.should be_true
|
628
|
-
end
|
629
|
-
|
630
|
-
it "should send Fullname to workbook" do
|
631
|
-
@book.Fullname.tr('\\','/').should == @simple_file
|
632
|
-
end
|
633
|
-
|
634
|
-
it "should raise an error for unknown methods or properties" do
|
635
|
-
expect{
|
636
|
-
@book.Foo
|
637
|
-
}.to raise_error(VBAMethodMissingError, /unknown VBA property or method :Foo/)
|
638
|
-
end
|
639
|
-
|
640
|
-
it "should report that workbook is not alive" do
|
641
|
-
@book.close
|
642
|
-
expect{ @book.Nonexisting_method }.to raise_error(ObjectNotAlive, "method missing: workbook not alive")
|
643
|
-
end
|
644
|
-
end
|
645
|
-
|
646
|
-
end
|
647
|
-
|
648
|
-
describe "hidden_excel" do
|
649
|
-
|
650
|
-
context "with some open book" do
|
651
|
-
|
652
|
-
before do
|
653
|
-
@book = Book.open(@simple_file1)
|
654
|
-
end
|
655
|
-
|
656
|
-
after do
|
657
|
-
@book.close
|
658
|
-
end
|
659
|
-
|
660
|
-
it "should create and use a hidden Excel instance" do
|
661
|
-
book2 = Book.open(@simple_file1, :force_excel => @book.bookstore.hidden_excel)
|
662
|
-
book2.excel.should_not == @book.excel
|
663
|
-
book2.excel.visible.should be_false
|
664
|
-
book2.excel.displayalerts.should == :if_visible
|
665
|
-
book2.close
|
666
|
-
end
|
667
|
-
end
|
668
|
-
end
|
669
|
-
|
670
|
-
describe "nameval, set_nameval, [], []=" do
|
671
|
-
|
672
|
-
before do
|
673
|
-
@book1 = Book.open(@another_simple_file)
|
674
|
-
end
|
675
|
-
|
676
|
-
after do
|
677
|
-
@book1.close(:if_unsaved => :forget)
|
678
|
-
end
|
679
|
-
|
680
|
-
it "should return value of a range" do
|
681
|
-
@book1.nameval("new").should == "foo"
|
682
|
-
@book1.nameval("one").should == 1
|
683
|
-
@book1.nameval("firstrow").should == [[1,2]]
|
684
|
-
@book1.nameval("four").should == [[1,2],[3,4]]
|
685
|
-
@book1.nameval("firstrow").should_not == "12"
|
686
|
-
@book1.nameval("firstcell").should == "foo"
|
687
|
-
end
|
688
|
-
|
689
|
-
it "should return value of a range via []" do
|
690
|
-
@book1["new"].should == "foo"
|
691
|
-
@book1["one"].should == 1
|
692
|
-
@book1["firstrow"] == [[1,2]]
|
693
|
-
@book1["four"].should == [[1,2],[3,4]]
|
694
|
-
@book1["firstrow"].should_not == "12"
|
695
|
-
@book1["firstcell"].should == "foo"
|
696
|
-
end
|
697
|
-
|
698
|
-
it "should set value of a range" do
|
699
|
-
@book1.set_nameval("new", "bar")
|
700
|
-
@book1.nameval("new").should == "bar"
|
701
|
-
end
|
702
|
-
|
703
|
-
it "should set value of a range via []=" do
|
704
|
-
@book1["new"] = "bar"
|
705
|
-
@book1.nameval("new").should == "bar"
|
706
|
-
end
|
707
|
-
|
708
|
-
#it "should evaluate a formula" do
|
709
|
-
# @book1.nameval("named_formula").should == 4
|
710
|
-
#end
|
711
|
-
|
712
|
-
#it "should evaluate a formula via []" do
|
713
|
-
# @book1["named_formula"].should == 4
|
714
|
-
#end
|
715
|
-
|
716
|
-
it "should raise an error if name not defined and default value is not provided" do
|
717
|
-
expect {
|
718
|
-
@book1.nameval("foo", :default => nil)
|
719
|
-
}.to_not raise_error
|
720
|
-
expect {
|
721
|
-
@book1.nameval("foo", :default => :__not_provided)
|
722
|
-
}.to raise_error(NameNotFound, /name "foo" not in #<Book: another_workbook/)
|
723
|
-
expect {
|
724
|
-
@book1.nameval("foo")
|
725
|
-
}.to raise_error(NameNotFound, /name "foo" not in #<Book: another_workbook/)
|
726
|
-
@book1.nameval("foo", :default => nil).should be_nil
|
727
|
-
@book1.nameval("foo", :default => 1).should == 1
|
728
|
-
expect {
|
729
|
-
@book1.set_nameval("foo","bar")
|
730
|
-
}.to raise_error(NameNotFound, /name "foo" not in #<Book: another_workbook/)
|
731
|
-
expect {
|
732
|
-
@book1["foo"] = "bar"
|
733
|
-
}.to raise_error(NameNotFound, /name "foo" not in #<Book: another_workbook/)
|
734
|
-
@book1.nameval("empty", :default => 1).should be_nil
|
735
|
-
end
|
736
|
-
|
737
|
-
it "should raise an error if name was defined but contents is calcuated" do
|
738
|
-
expect {
|
739
|
-
@book1.set_nameval("named_formula","bar")
|
740
|
-
}.to raise_error(RangeNotEvaluatable, /cannot assign value to range named "named_formula" in #<Book: another_workbook/)
|
741
|
-
expect {
|
742
|
-
@book1["named_formula"] = "bar"
|
743
|
-
}.to raise_error(RangeNotEvaluatable, /cannot assign value to range named "named_formula" in #<Book: another_workbook/)
|
744
|
-
end
|
745
|
-
|
746
|
-
# Excel Bug: for local names without uqifier: takes the first sheet as default even if another sheet is activated
|
747
|
-
it "should take the first sheet as default even if the second sheet is activated" do
|
748
|
-
@book1.nameval("Sheet1!localname").should == "bar"
|
749
|
-
@book1.nameval("Sheet2!localname").should == "simple"
|
750
|
-
@book1.nameval("localname").should == "bar"
|
751
|
-
@book1.Worksheets.Item(2).Activate
|
752
|
-
@book1.nameval("localname").should == "bar"
|
753
|
-
@book1.Worksheets.Item(1).Delete
|
754
|
-
@book1.nameval("localname").should == "simple"
|
755
|
-
end
|
756
|
-
end
|
757
|
-
|
758
|
-
describe "rename_range" do
|
759
|
-
|
760
|
-
before do
|
761
|
-
@book1 = Book.open(@another_simple_file)
|
762
|
-
end
|
763
|
-
|
764
|
-
after do
|
765
|
-
@book1.close(:if_unsaved => :forget)
|
766
|
-
end
|
767
|
-
|
768
|
-
it "should rename a range" do
|
769
|
-
@book1.rename_range("four","five")
|
770
|
-
@book1.nameval("five").should == [[1,2],[3,4]]
|
771
|
-
expect {
|
772
|
-
@book1.rename_range("four","five")
|
773
|
-
}.to raise_error(NameNotFound, /name "four" not in "another_workbook.xls"/)
|
774
|
-
end
|
775
|
-
end
|
776
|
-
|
777
|
-
describe "alive?, filename, ==, visible, focus, saved, check_compatibility" do
|
778
|
-
|
779
|
-
context "with alive?" do
|
780
|
-
|
781
|
-
before do
|
782
|
-
@book = Book.open(@simple_file)
|
783
|
-
end
|
784
|
-
|
785
|
-
after do
|
786
|
-
@book.close
|
787
|
-
end
|
788
|
-
|
789
|
-
it "should return true, if book is alive" do
|
790
|
-
@book.should be_alive
|
791
|
-
end
|
792
|
-
|
793
|
-
it "should return false, if book is dead" do
|
794
|
-
@book.close
|
795
|
-
@book.should_not be_alive
|
796
|
-
end
|
797
|
-
|
798
|
-
end
|
799
|
-
|
800
|
-
context "with filename" do
|
801
|
-
|
802
|
-
before do
|
803
|
-
@book = Book.open(@simple_file)
|
804
|
-
end
|
805
|
-
|
806
|
-
after do
|
807
|
-
@book.close
|
808
|
-
end
|
809
|
-
|
810
|
-
it "should return full file name" do
|
811
|
-
@book.filename.should == @simple_file
|
812
|
-
end
|
813
|
-
|
814
|
-
it "should return nil for dead book" do
|
815
|
-
@book.close
|
816
|
-
@book.filename.should == nil
|
817
|
-
end
|
818
|
-
|
819
|
-
end
|
820
|
-
|
821
|
-
context "with ==" do
|
822
|
-
|
823
|
-
before do
|
824
|
-
@book = Book.open(@simple_file1)
|
825
|
-
end
|
826
|
-
|
827
|
-
after do
|
828
|
-
@book.close
|
829
|
-
@new_book.close rescue nil
|
830
|
-
end
|
831
|
-
|
832
|
-
it "should be true with two identical books" do
|
833
|
-
@new_book = Book.open(@simple_file1)
|
834
|
-
@new_book.should == @book
|
835
|
-
end
|
836
|
-
|
837
|
-
it "should be false with two different books" do
|
838
|
-
@new_book = Book.new(@different_file)
|
839
|
-
@new_book.should_not == @book
|
840
|
-
end
|
841
|
-
|
842
|
-
it "should be false with same book names but different paths" do
|
843
|
-
@new_book = Book.new(@simple_file_other_path, :force_excel => :new)
|
844
|
-
@new_book.should_not == @book
|
845
|
-
end
|
846
|
-
|
847
|
-
it "should be false with same book names but different excel instances" do
|
848
|
-
@new_book = Book.new(@simple_file, :force_excel => :new)
|
849
|
-
@new_book.should_not == @book
|
850
|
-
end
|
851
|
-
|
852
|
-
it "should be false with non-Books" do
|
853
|
-
@book.should_not == "hallo"
|
854
|
-
@book.should_not == 7
|
855
|
-
@book.should_not == nil
|
856
|
-
end
|
857
|
-
end
|
858
|
-
|
859
|
-
context "with saved" do
|
860
|
-
|
861
|
-
before do
|
862
|
-
@book = Book.open(@simple_file)
|
863
|
-
end
|
864
|
-
|
865
|
-
after do
|
866
|
-
@book.close(:if_unsaved => :forget)
|
867
|
-
end
|
868
|
-
|
869
|
-
it "should yield true for a saved book" do
|
870
|
-
@book.saved.should be_true
|
871
|
-
end
|
872
|
-
|
873
|
-
it "should yield false for an unsaved book" do
|
874
|
-
sheet = @book.sheet(1)
|
875
|
-
sheet[1,1] = sheet[1,1].value == "foo" ? "bar" : "foo"
|
876
|
-
@book.saved.should be_false
|
877
|
-
end
|
878
|
-
end
|
879
|
-
|
880
|
-
|
881
|
-
context "with :visible => " do
|
882
|
-
|
883
|
-
it "should leave the excel invisible when opening with default option" do
|
884
|
-
excel1 = Excel.new(:reuse => false, :visible => false)
|
885
|
-
book1 = Book.open(@simple_file)
|
886
|
-
excel1.Visible.should be_false
|
887
|
-
book1.Windows(book1.Name).Visible.should be_true
|
888
|
-
book1.visible.should be_false
|
889
|
-
end
|
890
|
-
|
891
|
-
it "should leave the excel invisible when opening with :visible => false" do
|
892
|
-
excel1 = Excel.new(:reuse => false, :visible => false)
|
893
|
-
book1 = Book.open(@simple_file, :visible => false)
|
894
|
-
excel1.Visible.should be_false
|
895
|
-
book1.Windows(book1.Name).Visible.should be_false
|
896
|
-
book1.visible.should be_false
|
897
|
-
end
|
898
|
-
|
899
|
-
it "should leave the excel visible" do
|
900
|
-
excel1 = Excel.new(:reuse => false, :visible => false)
|
901
|
-
book1 = Book.open(@simple_file, :visible => true)
|
902
|
-
excel1.Visible.should be_true
|
903
|
-
book1.Windows(book1.Name).Visible.should be_true
|
904
|
-
book1.visible.should be_true
|
905
|
-
book2 = Book.open(@another_simple_file)
|
906
|
-
excel1.Visible.should be_true
|
907
|
-
book2.Windows(book2.Name).Visible.should be_true
|
908
|
-
book2.visible.should be_true
|
909
|
-
book3 = Book.open(@different_file, :visible => false)
|
910
|
-
excel1.Visible.should be_true
|
911
|
-
book3.Windows(book3.Name).Visible.should be_false
|
912
|
-
book3.visible.should be_false
|
913
|
-
end
|
914
|
-
|
915
|
-
it "should leave the excel visible when opening with default option" do
|
916
|
-
excel1 = Excel.new(:reuse => false, :visible => true)
|
917
|
-
book1 = Book.open(@simple_file)
|
918
|
-
excel1.Visible.should be_true
|
919
|
-
book1.Windows(book1.Name).Visible.should be_true
|
920
|
-
book1.visible.should be_true
|
921
|
-
end
|
922
|
-
|
923
|
-
it "should leave the excel visible when opening with :visible => false" do
|
924
|
-
excel1 = Excel.new(:reuse => false, :visible => true)
|
925
|
-
book1 = Book.open(@simple_file, :visible => false)
|
926
|
-
excel1.Visible.should be_true
|
927
|
-
book1.Windows(book1.Name).Visible.should be_false
|
928
|
-
book1.visible.should be_false
|
929
|
-
book2 = Book.open(@another_simple_file)
|
930
|
-
excel1.Visible.should be_true
|
931
|
-
book2.Windows(book2.Name).Visible.should be_true
|
932
|
-
book2.visible.should be_true
|
933
|
-
end
|
934
|
-
|
935
|
-
it "should leave the excel visible" do
|
936
|
-
excel1 = Excel.new(:reuse => false, :visible => true)
|
937
|
-
book1 = Book.open(@simple_file, :visible => true)
|
938
|
-
excel1.Visible.should be_true
|
939
|
-
book1.Windows(book1.Name).Visible.should be_true
|
940
|
-
book1.visible.should be_true
|
941
|
-
book2 = Book.open(@different_file, :visible => false)
|
942
|
-
excel1.Visible.should be_true
|
943
|
-
book2.Windows(book2.Name).Visible.should be_false
|
944
|
-
book2.visible.should be_false
|
945
|
-
end
|
946
|
-
|
947
|
-
it "should leave the visibility of Excel" do
|
948
|
-
excel1 = Excel.new(:reuse => false, :visible => false)
|
949
|
-
book1 = Book.open(@simple_file, :visible => true)
|
950
|
-
excel1.Visible.should be_true
|
951
|
-
book1.Windows(book1.Name).Visible.should be_true
|
952
|
-
book1.visible.should be_true
|
953
|
-
excel1.visible = false
|
954
|
-
book2 = Book.open(@different_file)
|
955
|
-
excel1.Visible.should be_false
|
956
|
-
book2.Windows(book2.Name).Visible.should be_true
|
957
|
-
book2.visible.should be_false
|
958
|
-
end
|
959
|
-
|
960
|
-
it "should leave the visibility of Excel" do
|
961
|
-
excel1 = Excel.new(:reuse => false, :visible => false)
|
962
|
-
book1 = Book.open(@simple_file, :visible => false)
|
963
|
-
excel1.Visible.should be_false
|
964
|
-
book1.Windows(book1.Name).Visible.should be_false
|
965
|
-
book1.visible.should be_false
|
966
|
-
excel1.visible = true
|
967
|
-
book2 = Book.open(@different_file)
|
968
|
-
excel1.Visible.should be_true
|
969
|
-
book2.Windows(book2.Name).Visible.should be_true
|
970
|
-
book2.visible.should be_true
|
971
|
-
end
|
972
|
-
end
|
973
|
-
|
974
|
-
context "with visible, visible=" do
|
975
|
-
|
976
|
-
before do
|
977
|
-
@book1 = Book.open(@simple_file)
|
978
|
-
@book2 = Book.open(@different_file, :force_excel => :new, :visible => true)
|
979
|
-
end
|
980
|
-
|
981
|
-
after do
|
982
|
-
@book1.close
|
983
|
-
@book2.close
|
984
|
-
end
|
985
|
-
|
986
|
-
it "should make the invisible workbook visible and invisible" do
|
987
|
-
@book1.excel.Visible.should be_false
|
988
|
-
@book1.Windows(@book1.Name).Visible.should be_true
|
989
|
-
@book1.visible.should be_false
|
990
|
-
@book1.visible = true
|
991
|
-
@book1.Saved.should be_true
|
992
|
-
@book1.excel.Visible.should be_true
|
993
|
-
@book1.Windows(@book1.Name).Visible.should be_true
|
994
|
-
@book1.visible.should be_true
|
995
|
-
@book1.visible = false
|
996
|
-
@book1.Saved.should be_true
|
997
|
-
@book1.excel.should be_true
|
998
|
-
@book1.Windows(@book1.Name).Visible.should be_false
|
999
|
-
@book1.visible.should be_false
|
1000
|
-
@book2.excel.Visible.should be_true
|
1001
|
-
end
|
1002
|
-
|
1003
|
-
it "should make the visible workbook and the invisible workbook invisible" do
|
1004
|
-
@book2.Windows(@book2.Name).Visible.should be_true
|
1005
|
-
@book2.visible.should be_true
|
1006
|
-
@book2.visible = true
|
1007
|
-
@book2.Saved.should be_true
|
1008
|
-
@book2.excel.Visible.should be_true
|
1009
|
-
@book2.Windows(@book2.Name).Visible.should be_true
|
1010
|
-
@book2.excel.visible = false
|
1011
|
-
@book2.visible = false
|
1012
|
-
@book2.Saved.should be_true
|
1013
|
-
@book2.excel.Visible.should be_false
|
1014
|
-
@book2.Windows(@book2.Name).Visible.should be_false
|
1015
|
-
@book2.visible.should be_false
|
1016
|
-
end
|
1017
|
-
|
1018
|
-
end
|
1019
|
-
|
1020
|
-
context "with focus" do
|
1021
|
-
|
1022
|
-
before do
|
1023
|
-
@key_sender = IO.popen 'ruby "' + File.join(File.dirname(__FILE__), '../helpers/key_sender.rb') + '" "Microsoft Office Excel" ' , "w"
|
1024
|
-
@book = Book.open(@simple_file, :visible => true)
|
1025
|
-
@book.excel.displayalerts = false
|
1026
|
-
@book2 = Book.open(@another_simple_file, :visible => true)
|
1027
|
-
@book2.excel.displayalerts = false
|
1028
|
-
end
|
1029
|
-
|
1030
|
-
after do
|
1031
|
-
@book.close(:if_unsaved => :forget)
|
1032
|
-
@book2.close(:if_unsaved => :forget)
|
1033
|
-
@key_sender.close
|
1034
|
-
end
|
1035
|
-
|
1036
|
-
it "should bring a book to focus" do
|
1037
|
-
sheet = @book.sheet(2)
|
1038
|
-
sheet.Activate
|
1039
|
-
sheet[2,3].Activate
|
1040
|
-
sheet2 = @book2.sheet(2)
|
1041
|
-
sheet2.Activate
|
1042
|
-
sheet2[3,2].Activate
|
1043
|
-
Excel.current.should == @book.excel
|
1044
|
-
@book2.focus
|
1045
|
-
@key_sender.puts "{a}{enter}"
|
1046
|
-
sleep 1
|
1047
|
-
sheet2[3,2].Value.should == "a"
|
1048
|
-
#Excel.current.should == @book2.excel
|
1049
|
-
@book.focus
|
1050
|
-
@key_sender.puts "{a}{enter}"
|
1051
|
-
sleep 1
|
1052
|
-
sheet[2,3].Value.should == "a"
|
1053
|
-
Excel.current.should == @book.excel
|
1054
|
-
end
|
1055
|
-
end
|
1056
|
-
|
1057
|
-
context "with compatibility" do
|
1058
|
-
|
1059
|
-
it "should open with checking compatibility" do
|
1060
|
-
book = Book.open(@simple_file, :visible => true, :check_compatibility => true)
|
1061
|
-
book.CheckCompatibility.should be_true
|
1062
|
-
end
|
1063
|
-
|
1064
|
-
it "should open without checking compatibility" do
|
1065
|
-
book = Book.open(@simple_file, :visible => true, :check_compatibility => false)
|
1066
|
-
book.CheckCompatibility.should be_false
|
1067
|
-
end
|
1068
|
-
end
|
1069
|
-
end
|
1070
|
-
end
|