microstation 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +23 -0
- data/.gemtest +0 -0
- data/.rspec +2 -0
- data/Gemfile +17 -0
- data/History.txt +6 -0
- data/Manifest.txt +60 -0
- data/README.txt +75 -0
- data/Rakefile +30 -0
- data/bin/dgn2pdf +37 -0
- data/lib/microstation.rb +88 -0
- data/lib/microstation/app.rb +286 -0
- data/lib/microstation/attributes.rb +35 -0
- data/lib/microstation/cad_input_queue.rb +25 -0
- data/lib/microstation/configuration.rb +57 -0
- data/lib/microstation/dir.rb +252 -0
- data/lib/microstation/drawing.rb +189 -0
- data/lib/microstation/enumerator.rb +29 -0
- data/lib/microstation/ext/pathname.rb +25 -0
- data/lib/microstation/extensions/hash.rb +27 -0
- data/lib/microstation/pdf_support.rb +40 -0
- data/lib/microstation/properties.rb +57 -0
- data/lib/microstation/scan/color.rb +38 -0
- data/lib/microstation/scan/criteria.rb +85 -0
- data/lib/microstation/scan/klass.rb +43 -0
- data/lib/microstation/scan/level.rb +38 -0
- data/lib/microstation/scan/line_style.rb +45 -0
- data/lib/microstation/scan/line_weight.rb +33 -0
- data/lib/microstation/scan/subtype.rb +40 -0
- data/lib/microstation/scan/type.rb +109 -0
- data/lib/microstation/scanner.rb +24 -0
- data/lib/microstation/tag.rb +58 -0
- data/lib/microstation/tag_set.rb +280 -0
- data/lib/microstation/template.rb +84 -0
- data/lib/microstation/text.rb +54 -0
- data/lib/microstation/text_node.rb +74 -0
- data/lib/microstation/ts/attribute.rb +139 -0
- data/lib/microstation/ts/instance.rb +112 -0
- data/lib/microstation/types.rb +91 -0
- data/lib/microstation/wrap.rb +214 -0
- data/plot/pdf-bw.plt +164 -0
- data/plot/pdf.plt +163 -0
- data/plot/png.plt +383 -0
- data/plot/tiff.plt +384 -0
- data/plot/wmbw.tbl +66 -0
- data/plot/wmcolor.tbl +62 -0
- data/spec/app_spec.rb +267 -0
- data/spec/configuration_spec.rb +122 -0
- data/spec/drawing_spec.rb +247 -0
- data/spec/drawings/new_drawing.dgn +0 -0
- data/spec/drawings/test.dgn +0 -0
- data/spec/drawings/test1.dgn +0 -0
- data/spec/drawings/testfile.pdf +0 -0
- data/spec/enumerator_spec.rb +60 -0
- data/spec/microstation_spec.rb +36 -0
- data/spec/scanner_spec.rb +155 -0
- data/spec/spec_app.rb +11 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/tag_set_spec.rb +123 -0
- data/spec/text_node_spec.rb +92 -0
- data/spec/text_spec.rb +62 -0
- metadata +241 -0
data/spec/app_spec.rb
ADDED
@@ -0,0 +1,267 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__) , 'spec_helper')
|
2
|
+
|
3
|
+
describe "Microstation::App" do
|
4
|
+
|
5
|
+
before(:all) do
|
6
|
+
@app = Microstation::App.new
|
7
|
+
@existing_drawing_path = drawing_path('test.dgn')
|
8
|
+
@new_drawing_path = drawing_path('my_new_drawing.dgn')
|
9
|
+
end
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
File.delete(@new_drawing_path) if File.exist?(@new_drawing_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
after(:all) do
|
17
|
+
@app.quit if @app
|
18
|
+
@app = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:app){@app}
|
22
|
+
|
23
|
+
describe "#initialize" do
|
24
|
+
it "with no options visible is true" do
|
25
|
+
app = Microstation::App.new
|
26
|
+
app.should be_visible
|
27
|
+
end
|
28
|
+
|
29
|
+
it "works with options" do
|
30
|
+
app = Microstation::App.new(:visible => false)
|
31
|
+
app.should_not be_visible
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "#can_open?" do
|
37
|
+
|
38
|
+
|
39
|
+
it "can open a dwg file" do
|
40
|
+
app.can_open?('test.dwg').should be_true
|
41
|
+
end
|
42
|
+
|
43
|
+
it "can open a dgn file" do
|
44
|
+
app.can_open?('test.dgn').should be_true
|
45
|
+
end
|
46
|
+
|
47
|
+
it "can't open any other type of files" do
|
48
|
+
%w(xls doc txt png tiff odf).each do |format|
|
49
|
+
app.can_open?("test.#{format}").should be_false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#open_drawing" do
|
55
|
+
|
56
|
+
after(:each) do
|
57
|
+
app.close_active_drawing
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
let (:valid_file){ @existing_drawing_path }
|
62
|
+
let (:invalid_file) {"bogus file"}
|
63
|
+
|
64
|
+
it "returns a drawing if drawing exists" do
|
65
|
+
drawing = app.open_drawing(valid_file)
|
66
|
+
drawing.class.should == Microstation::Drawing
|
67
|
+
app.active_design_file.should.eql? drawing.ole_obj
|
68
|
+
end
|
69
|
+
|
70
|
+
it "raises error if drawing does not exist" do
|
71
|
+
expect {
|
72
|
+
app.open_drawing(invalid_file)
|
73
|
+
}.to raise_error
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "when given a block" do
|
77
|
+
|
78
|
+
it "yields the drawing to a block if a block is given" do
|
79
|
+
app.open_drawing(valid_file) do |drawing|
|
80
|
+
drawing.class.should == Microstation::Drawing
|
81
|
+
app.active_design_file.should.eql? drawing.ole_obj
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
|
86
|
+
it "closes drawing after block returns" do
|
87
|
+
app.active_design_file.should == nil
|
88
|
+
app.open_drawing(valid_file) do |drawing|
|
89
|
+
app.active_design_file.should.eql? drawing.ole_obj
|
90
|
+
end
|
91
|
+
app.active_design_file.should == nil
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
it "has an ole_object" do
|
99
|
+
app.ole_obj.class.should == ::WIN32OLE
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "load constants" do
|
103
|
+
it "should load the constants" do
|
104
|
+
app.load_constants
|
105
|
+
Microstation::MSD::MsdElementTypeTag.should == 37
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe "create_scanner" do
|
110
|
+
it "should yield a scanner object" do
|
111
|
+
app.create_scanner do |scan|
|
112
|
+
scan.should be_instance_of Microstation::Scan::Criteria
|
113
|
+
scan.include_tags
|
114
|
+
scan.include_color(3)
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
describe "#create_ole_scanner" do
|
124
|
+
it "returns an ole scanner" do
|
125
|
+
pending
|
126
|
+
scanner = app.create_ole_scan_criteria
|
127
|
+
scanner.ole_type.to_s.should =~ /_ElementScanCriteria/
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe "#normalize_name(name)" do
|
132
|
+
|
133
|
+
it "returns the name if the name is absolute" do
|
134
|
+
app.normalize_name("c:/my_drawings/cool.dng").to_s.should == "c:/my_drawings/cool.dgn"
|
135
|
+
end
|
136
|
+
|
137
|
+
context "when given a relative path and project dir is set" do
|
138
|
+
it "returns the name joined with the project_dir" do
|
139
|
+
app.project_dir = "c:/projects/new"
|
140
|
+
app.normalize_name('cool_beans.dng').to_s.should == "c:/projects/new/cool_beans.dgn"
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
context "when project_dir is nil" do
|
146
|
+
it "returns name relative to the calling process" do
|
147
|
+
app.project_dir = nil
|
148
|
+
app.normalize_name('cool_beans.dng').to_s.should == (Pathname.getwd + 'cool_beans.dgn').to_s
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
it "#windows path method" do
|
154
|
+
pending
|
155
|
+
app.windows_path( drawing_path("")).should == "c:\\test"
|
156
|
+
end
|
157
|
+
|
158
|
+
|
159
|
+
it "should have a #username" do
|
160
|
+
app.username.should == ENV["USERNAME"]
|
161
|
+
end
|
162
|
+
|
163
|
+
describe "#new_drawing" do
|
164
|
+
# before(:each) do
|
165
|
+
# @new_name = "my_new_drawing.dgn"
|
166
|
+
# @new_drawing_path = drawing_path(@new_name)
|
167
|
+
# @existing_drawing_path = drawing_path('test.dgn')
|
168
|
+
# end
|
169
|
+
|
170
|
+
after(:each) do
|
171
|
+
app.close_active_drawing
|
172
|
+
# File.delete(@new_drawing_path) if File.exist?(@new_drawing_path)
|
173
|
+
end
|
174
|
+
|
175
|
+
let(:existing_drawing){ @existing_drawing_path }
|
176
|
+
let(:new_drawing) { @new_drawing_path }
|
177
|
+
|
178
|
+
|
179
|
+
it "needs a filename" do
|
180
|
+
expect{ app.new_drawing()}.to raise_error
|
181
|
+
end
|
182
|
+
|
183
|
+
it "raises an error if drawing exists" do
|
184
|
+
expect {
|
185
|
+
app.new_drawing(existing_drawing).to raise_error
|
186
|
+
}
|
187
|
+
end
|
188
|
+
|
189
|
+
it "creates a drawing if it's a new drawing_name" do
|
190
|
+
drawing = app.new_drawing(new_drawing)
|
191
|
+
drawing.should be_an_instance_of Microstation::Drawing
|
192
|
+
end
|
193
|
+
|
194
|
+
describe "when given a block" do
|
195
|
+
|
196
|
+
it "yields the drawing to a block if a block is given" do
|
197
|
+
app.new_drawing(new_drawing) do |drawing|
|
198
|
+
drawing.class.should == Microstation::Drawing
|
199
|
+
app.active_design_file.should.eql? drawing.ole_obj
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
|
204
|
+
it "closes drawing after block returns" do
|
205
|
+
app.active_design_file.should == nil
|
206
|
+
app.new_drawing(new_drawing) do |drawing|
|
207
|
+
app.active_design_file.should.eql? drawing.ole_obj
|
208
|
+
end
|
209
|
+
app.active_design_file.should == nil
|
210
|
+
end
|
211
|
+
|
212
|
+
end
|
213
|
+
|
214
|
+
end
|
215
|
+
|
216
|
+
describe "an app with an open drawing" do
|
217
|
+
before(:each) do
|
218
|
+
@drawing = app.new_drawing(@new_drawing_path)
|
219
|
+
end
|
220
|
+
|
221
|
+
after(:each) do
|
222
|
+
app.close_active_drawing
|
223
|
+
# File.delete(@new_drawing_path) if File.exist? (@new_drawing_path)
|
224
|
+
end
|
225
|
+
|
226
|
+
describe "#scan" do
|
227
|
+
it "defaults to all objects without a scan criteria" do
|
228
|
+
pending
|
229
|
+
expect{app.scan}.to_not raise_error
|
230
|
+
end
|
231
|
+
|
232
|
+
it "resolves the scan criteria" do
|
233
|
+
scanner = app.create_scanner do |scan|
|
234
|
+
scan.include_textual
|
235
|
+
end
|
236
|
+
scanner.should_receive("resolve")
|
237
|
+
app.scan(scanner)
|
238
|
+
end
|
239
|
+
|
240
|
+
|
241
|
+
|
242
|
+
end
|
243
|
+
|
244
|
+
# describe "#current_drawing" do
|
245
|
+
# it "returns the current drawing" do
|
246
|
+
# binding.pry
|
247
|
+
# app.current_drawing.should == @drawing
|
248
|
+
# end
|
249
|
+
|
250
|
+
# end
|
251
|
+
|
252
|
+
|
253
|
+
|
254
|
+
|
255
|
+
end
|
256
|
+
|
257
|
+
# it "forwards method missing" do
|
258
|
+
|
259
|
+
# @app.ole_obj.should_receive("Open")
|
260
|
+
# @app.Open("this is a drawing")
|
261
|
+
|
262
|
+
|
263
|
+
# end
|
264
|
+
|
265
|
+
|
266
|
+
end
|
267
|
+
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__) , 'spec_helper')
|
2
|
+
require 'pry'
|
3
|
+
|
4
|
+
describe Microstation::Configuration do
|
5
|
+
|
6
|
+
before(:all) do
|
7
|
+
@app = Microstation::App.new
|
8
|
+
@configuration = Microstation::Configuration.new(@app)
|
9
|
+
@defined_variable = "new_variable"
|
10
|
+
@defined_variable_value = "variable_value"
|
11
|
+
@configuration[@defined_variable] = @defined_variable_value
|
12
|
+
@undefined_variable = 'undefined'
|
13
|
+
@configuration.remove_variable('undefined')
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:all) do
|
17
|
+
@configuration.remove_variable(@defined_variable)
|
18
|
+
@app.quit
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
describe "#exists" do
|
23
|
+
let(:variable){ @defined_variable}
|
24
|
+
let(:undefined){ @undefined_variable}
|
25
|
+
subject { @configuration}
|
26
|
+
|
27
|
+
it "should return true if config variable is exists" do
|
28
|
+
subject.exists?(variable).should be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should return false if config variable doesn't exist" do
|
32
|
+
subject.exists?(undefined).should be_false
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#[]" do
|
38
|
+
let(:undefined){ @undefined_variable}
|
39
|
+
let(:variable){ @defined_variable}
|
40
|
+
subject{@configuration}
|
41
|
+
|
42
|
+
it "should check if value exists" do
|
43
|
+
subject.should_receive(:exists?).with('undefined')
|
44
|
+
expect(subject[undefined]).to be_nil
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return the configuration variable if exists" do
|
48
|
+
expect(subject[variable]).to eq 'variable_value'
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return nil if not exists" do
|
52
|
+
expect(@configuration[undefined]).to equal nil
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#should update" do
|
59
|
+
|
60
|
+
let(:undefined){@undefined}
|
61
|
+
let(:variable){@defined_variable}
|
62
|
+
|
63
|
+
it "should return true if key doesn't exist" do
|
64
|
+
@configuration.should_update?(undefined).should be_true
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should return false if key exists? and options[:force] is false or nil" do
|
68
|
+
@configuration.should_update?(variable).should be_false
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should return true if key exists? and options[:force] is true" do
|
72
|
+
@configuration.should_update?(variable, {:force => true}).should be_true
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
describe "setting variables" do
|
78
|
+
|
79
|
+
before(:each) do
|
80
|
+
@variable = "TEST_VARIABLE"
|
81
|
+
@configuration.remove_variable(@variable)
|
82
|
+
end
|
83
|
+
|
84
|
+
context "value not existing yet" do
|
85
|
+
|
86
|
+
it "should set the variable" do
|
87
|
+
@configuration[@variable].should == nil
|
88
|
+
@configuration[@variable] = "a new variable"
|
89
|
+
@configuration[@variable].should == "a new variable"
|
90
|
+
end
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
context "value existing" do
|
95
|
+
|
96
|
+
let(:variable){@defined_variable}
|
97
|
+
subject{ @configuration}
|
98
|
+
|
99
|
+
it "should raise variable defined if force option is false" do
|
100
|
+
@configuration[variable].should == 'variable_value'
|
101
|
+
expect{ @configuration[variable]= "my new value"}.to raise_error Microstation::VariableDefined
|
102
|
+
@configuration[variable].should == "variable_value"
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should change the variable if force is true" do
|
106
|
+
@configuration[variable].should == "variable_value"
|
107
|
+
@configuration.set(variable, "my new value", :force => true)
|
108
|
+
@configuration[variable].should == "my new value"
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "#expand" do
|
114
|
+
it "should be able to expand string" do
|
115
|
+
@configuration.expand( "$(_USTN_USER)$(_USTN_USERNAME).txt").should_not be_nil
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,247 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__) , 'spec_helper')
|
2
|
+
|
3
|
+
module DrawingHelpers
|
4
|
+
|
5
|
+
def create_new_drawing_path(name)
|
6
|
+
path = drawing_path(name)
|
7
|
+
File.delete(path) if File.exist? path
|
8
|
+
return path
|
9
|
+
end
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
describe Microstation::Drawing do
|
14
|
+
include DrawingHelpers
|
15
|
+
|
16
|
+
context "a drawing created with app.new_drawing" do
|
17
|
+
|
18
|
+
before(:all) do
|
19
|
+
@app = Microstation::App.new
|
20
|
+
# debugger
|
21
|
+
@drawing_name = 'my_new_drawing.dgn'
|
22
|
+
@new_drawing_path = create_new_drawing_path('my_new_drawing.dgn')
|
23
|
+
@new_drawing = @app.new_drawing(@new_drawing_path)
|
24
|
+
end
|
25
|
+
|
26
|
+
after(:all) do
|
27
|
+
@app.close_active_drawing if @app
|
28
|
+
@app.quit if @app
|
29
|
+
File.delete(@new_drawing_path) if File.exist?(@new_drawing_path || "")
|
30
|
+
end
|
31
|
+
|
32
|
+
let(:new_drawing) { @new_drawing}
|
33
|
+
let(:new_drawing_path) { @new_drawing_path }
|
34
|
+
let(:new_drawing_name) {@drawing_name}
|
35
|
+
|
36
|
+
# describe "#name and path" do
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
# context "when given a relative name and no project_dir" do
|
42
|
+
# before(:each) do
|
43
|
+
# @app.project_dir = nil
|
44
|
+
# @drawing_name = "my drawing.dgn"
|
45
|
+
# @path = @app.normalize_name(@drawing_name)
|
46
|
+
|
47
|
+
# end
|
48
|
+
|
49
|
+
# after(:each) do
|
50
|
+
# @path.unlink
|
51
|
+
# end
|
52
|
+
|
53
|
+
# subject{@app.new_drawing(@drawing_name) }
|
54
|
+
|
55
|
+
|
56
|
+
# it "#name should be set to the name of the drawing with .dgn extension" do
|
57
|
+
# subject.name.should =~ "my drawing.dgn"
|
58
|
+
# end
|
59
|
+
|
60
|
+
# it "#path should be the working path" do
|
61
|
+
# subject.path.should == Pathname.getwd
|
62
|
+
# end
|
63
|
+
|
64
|
+
# end
|
65
|
+
|
66
|
+
# context "when given a relative name and a project_dir" do
|
67
|
+
|
68
|
+
# before(:each) do
|
69
|
+
# @app.project_dir = "c:/my_projects/"
|
70
|
+
# @new_drawing = @app.new_drawing('my drawing')
|
71
|
+
# end
|
72
|
+
|
73
|
+
# after(:each) do
|
74
|
+
# File.delete(@new_drawing.full_path)
|
75
|
+
# end
|
76
|
+
|
77
|
+
|
78
|
+
# it "name should be the name of the drawing" do
|
79
|
+
# @new_drawing.name.should == 'my drawing.dng'
|
80
|
+
# end
|
81
|
+
|
82
|
+
# it "path should == the project_dir" do
|
83
|
+
# drawing.path.should == "c:\\my_projects"
|
84
|
+
# end
|
85
|
+
|
86
|
+
# end
|
87
|
+
# end
|
88
|
+
|
89
|
+
it "should be the active drawing" do
|
90
|
+
new_drawing.should be_active
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#author" do
|
94
|
+
|
95
|
+
it "should be '' to start" do
|
96
|
+
pending
|
97
|
+
new_drawing.author.should == ""
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should set author if given a new author" do
|
101
|
+
new_drawing.author = "A newer author"
|
102
|
+
new_drawing.author.should == "A newer author"
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
describe "#title" do
|
108
|
+
it "should be '' to start" do
|
109
|
+
new_drawing.title.should == ""
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should set title if given a new title" do
|
113
|
+
new_drawing.title = "a new title"
|
114
|
+
new_drawing.title.should == "a new title"
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#keywords" do
|
120
|
+
it "should be empty to start" do
|
121
|
+
new_drawing.keywords.should == ""
|
122
|
+
end
|
123
|
+
|
124
|
+
it "should set keywords if given a string of words" do
|
125
|
+
new_drawing.keywords = "project, rcl, new"
|
126
|
+
new_drawing.keywords.should == "project, rcl, new"
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
|
131
|
+
it "should have a #comments method" do
|
132
|
+
new_drawing.comments.should == ""
|
133
|
+
new_drawing.comments = "these are the comments"
|
134
|
+
new_drawing.comments.should == "these are the comments"
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
it "should have a two_d? method" do
|
141
|
+
new_drawing.should be_two_d
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should be able to save as pdf" do
|
145
|
+
new_drawing.save_as_pdf
|
146
|
+
end
|
147
|
+
|
148
|
+
describe "revision count" do
|
149
|
+
it "should have a revision_count" do
|
150
|
+
new_drawing.should respond_to "revision_count"
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should forward method" do
|
154
|
+
new_drawing.ole_obj.should_receive("DesignRevisionCount").and_return(0)
|
155
|
+
new_drawing.revision_count
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
describe "pdf_name" do
|
160
|
+
it "should be the passed in dirname + name with pdf changed for ext" do
|
161
|
+
new_drawing.pdf_name("my_name","output").to_s.should == File.expand_path(File.join('output', "my_name.pdf"))
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should == the name of the drawing file #basename with pdf ext with no args" do
|
165
|
+
new_drawing.stub(:basename).and_return "Drawing Name"
|
166
|
+
File.extname(new_drawing.pdf_name).should == '.pdf'
|
167
|
+
File.basename(new_drawing.pdf_name, '.pdf').should == "Drawing Name"
|
168
|
+
end
|
169
|
+
|
170
|
+
end
|
171
|
+
|
172
|
+
|
173
|
+
context "save_as_pdf" do
|
174
|
+
it "should use the filename if given in args" do
|
175
|
+
new_drawing.save_as_pdf("testfile")
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
describe "scanning" do
|
180
|
+
|
181
|
+
it "should have a #create_scanner" do
|
182
|
+
scanner = new_drawing.create_scanner
|
183
|
+
scanner.include_textual
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should scan the drawing" do
|
187
|
+
scanner = new_drawing.create_scanner do |scan|
|
188
|
+
scan.include_textual
|
189
|
+
end
|
190
|
+
new_drawing.scan(scanner)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
|
195
|
+
describe "#scan_text" do
|
196
|
+
|
197
|
+
it "only yields textual items" do
|
198
|
+
|
199
|
+
new_drawing.scan_text do |item|
|
200
|
+
item.class.should == (Microstation::Text || Microstation::TextNode)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
# describe "#new_drawing" do
|
216
|
+
# before(:each) do
|
217
|
+
# ENV["USERNAME"] = "test person"
|
218
|
+
# end
|
219
|
+
|
220
|
+
# after(:each) do
|
221
|
+
# @drawing.close
|
222
|
+
# @drawing = nil
|
223
|
+
# end
|
224
|
+
|
225
|
+
# it "should set author" do
|
226
|
+
# @app.should_receive(:username).and_return("test person")
|
227
|
+
# @drawing = @app.new_drawing(new_drawing_path)
|
228
|
+
# @drawing.author.should == "test person"
|
229
|
+
# end
|
230
|
+
|
231
|
+
# end
|
232
|
+
|
233
|
+
# describe "creating a new drawing" do
|
234
|
+
# before(:each) do
|
235
|
+
# @drawing = @app.new_drawing(new_drawing_path)
|
236
|
+
# end
|
237
|
+
|
238
|
+
# after(:each) do
|
239
|
+
# @drawing.close
|
240
|
+
# @drawing = nil
|
241
|
+
# end
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
|
247
|
+
|