usps_flags 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,248 @@
1
+ # Container class for helper methods.
2
+ class USPSFlags::Helpers
3
+ # Valid options for flag generation.
4
+ #
5
+ # @param [Symbol] type Specify subset of flags.
6
+ # @option type [Symbol] :all All flags
7
+ # @option type [Symbol] :officer Officer flags
8
+ # @option type [Symbol] :insignia Insignia-eligible officer flags (no past officers)
9
+ # @option type [Symbol] :squadron Squadron-level officer flags
10
+ # @option type [Symbol] :district District-level officer flags
11
+ # @option type [Symbol] :national National-level officer flags
12
+ # @option type [Symbol] :special Special flags
13
+ # @option type [Symbol] :us US flag
14
+ # @return [Array] Valid options for flag generation (based on the provided type).
15
+ def self.valid_flags(type = :all)
16
+ squadron = %w[
17
+ PLTC
18
+ PC
19
+ PORTCAP
20
+ FLEETCAP
21
+ LT
22
+ FLT
23
+ 1LT
24
+ LTC
25
+ CDR
26
+ ]
27
+
28
+ district = %w[
29
+ PDLTC
30
+ PDC
31
+ DLT
32
+ DAIDE
33
+ DFLT
34
+ D1LT
35
+ DLTC
36
+ DC
37
+ ]
38
+
39
+ national = %w[
40
+ PSTFC
41
+ PRC
42
+ PVC
43
+ PCC
44
+ NAIDE
45
+ NFLT
46
+ STFC
47
+ RC
48
+ VC
49
+ CC
50
+ ]
51
+
52
+ past = %w[
53
+ PLTC
54
+ PC
55
+ PDLTC
56
+ PDC
57
+ PSTFC
58
+ PRC
59
+ PVC
60
+ PCC
61
+ ]
62
+
63
+ special = %w[
64
+ CRUISE
65
+ OIC
66
+ ENSIGN
67
+ WHEEL
68
+ ]
69
+
70
+ us = %w[
71
+ US
72
+ ]
73
+
74
+ case type
75
+ when :all
76
+ squadron + district + national + special + us
77
+ when :officer
78
+ squadron + district + national
79
+ when :insignia
80
+ squadron + district + national - past
81
+ when :squadron
82
+ squadron
83
+ when :district
84
+ district
85
+ when :national
86
+ national
87
+ when :special
88
+ special
89
+ when :us
90
+ us
91
+ end
92
+ end
93
+
94
+ # Displays an overlay grid with regularly spaced locator markers.
95
+ #
96
+ # This is useful for adjusting or creating new SVG data generators, but should not otherwise need to be called.
97
+ # @private
98
+ def self.grid(width: USPSFlags::Config::BASE_FLY, height: USPSFlags::Config::BASE_HOIST)
99
+ <<~SVG
100
+ <circle cx="0" cy="0" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
101
+ <circle cx="#{width}" cy="0" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
102
+ <circle cx="#{width}" cy="#{height}" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
103
+ <circle cx="0" cy="#{height}" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
104
+
105
+ <circle cx="#{width*1/4}" cy="#{height/2}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
106
+ <circle cx="#{width*3/4}" cy="#{height/2}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
107
+
108
+ <circle cx="#{width/2}" cy="#{height*1/4}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
109
+ <circle cx="#{width/2}" cy="#{height/2}" r="#{width/60}" fill="#000000" fill-opacity="0.4" />
110
+ <circle cx="#{width/2}" cy="#{height/2}" r="#{width/75}" fill="#CCCCCC" fill-opacity="0.4" />
111
+ <circle cx="#{width/2}" cy="#{height/2}" r="#{width/100}" fill="#000000" fill-opacity="0.4" />
112
+ <circle cx="#{width/2}" cy="#{height*3/4}" r="#{width/60}" fill="#999999" fill-opacity="0.4" />
113
+
114
+ <line x1="0" y1="0" x2="#{width}" y2="0" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
115
+ <line x1="0" y1="#{height*1/4}" x2="#{width}" y2="#{height*1/4}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
116
+ <line x1="0" y1="#{height/2}" x2="#{width}" y2="#{height/2}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
117
+ <line x1="0" y1="#{height*3/4}" x2="#{width}" y2="#{height*3/4}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
118
+ <line x1="0" y1="#{height}" x2="#{width}" y2="#{height}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
119
+
120
+ <line y1="0" x1="0" y2="#{height}" x2="0" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
121
+ <line y1="0" x1="#{width*1/6}" y2="#{height}" x2="#{width*1/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
122
+ <line y1="0" x1="#{width*2/6}" y2="#{height}" x2="#{width*2/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
123
+ <line y1="0" x1="#{width*3/6}" y2="#{height}" x2="#{width*3/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
124
+ <line y1="0" x1="#{width*4/6}" y2="#{height}" x2="#{width*4/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
125
+ <line y1="0" x1="#{width*5/6}" y2="#{height}" x2="#{width*5/6}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
126
+ <line y1="0" x1="#{width}" y2="#{height}" x2="#{width}" stroke="#333333" stroke-width="#{width/600}" stroke-opacity="0.5" />
127
+
128
+ <line x1="#{width/2}" y1="#{height*1/4}" x2="#{width*3/4}" y2="#{height/2}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
129
+ <line x1="#{width*3/4}" y1="#{height/2}" x2="#{width/2}" y2="#{height*3/4}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
130
+ <line x1="#{width/2}" y1="#{height*3/4}" x2="#{width*1/4}" y2="#{height/2}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
131
+ <line x1="#{width*1/4}" y1="#{height/2}" x2="#{width/2}" y2="#{height*1/4}" stroke="#999999" stroke-width="#{width/600}" stroke-opacity="0.5" />
132
+
133
+ SVG
134
+ end
135
+
136
+ # Displays an overlay indicator of concentric circles and radiating lines.
137
+ #
138
+ # This is useful for adjusting or creating new SVG data generators, but should not otherwise need to be called.
139
+ # @private
140
+ def self.locator
141
+ <<~SVG
142
+ <circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY*2}" fill="#000000" fill-opacity="0.4" />
143
+ <circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY}" fill="#333333" fill-opacity="0.4" />
144
+ <circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/2}" fill="#666666" fill-opacity="0.4" />
145
+ <circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/4}" fill="#999999" fill-opacity="0.4" />
146
+ <circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/8}" fill="#CCCCCC" fill-opacity="0.4" />
147
+ <circle cx="0" cy="0" r="#{USPSFlags::Config::BASE_FLY/16}" fill="#FFFFFF" fill-opacity="0.4" />
148
+
149
+ <line x1="-#{USPSFlags::Config::BASE_FLY}" y1="-#{USPSFlags::Config::BASE_HOIST}" x2="#{USPSFlags::Config::BASE_FLY}" y2="#{USPSFlags::Config::BASE_HOIST}" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
150
+ <line x1="-#{USPSFlags::Config::BASE_FLY}" y1="#{USPSFlags::Config::BASE_HOIST}" x2="#{USPSFlags::Config::BASE_FLY}" y2="-#{USPSFlags::Config::BASE_HOIST}" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
151
+ <line x1="0" y1="#{USPSFlags::Config::BASE_HOIST}" x2="0" y2="-#{USPSFlags::Config::BASE_HOIST}" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
152
+ <line x1="-#{USPSFlags::Config::BASE_FLY}" y1="0" x2="#{USPSFlags::Config::BASE_FLY}" y2="0" stroke="#FFFFFF" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
153
+
154
+ <rect x="0" y="0" width="#{USPSFlags::Config::BASE_FLY/30}" height="#{USPSFlags::Config::BASE_FLY/30}" fill="#333333" fill-opacity="0.6" />
155
+ SVG
156
+ end
157
+
158
+ # Creates a vertical arrow for the trident spec sheet.
159
+ #
160
+ # This is used USPSFlags::Core.trident_spec, and should never need to be called directly.
161
+ # @private
162
+ def self.v_arrow(x, top, bottom, pointer_top = nil, pointer_bottom = nil, label: nil, label_offset: (USPSFlags::Config::BASE_FLY/120), label_offset_y: 0, label_align: "left", color: "#CCCCCC", stroke_width: (USPSFlags::Config::BASE_FLY/600), stroke_dash: "10, 10", font_size: (USPSFlags::Config::BASE_FLY/60), arrow_size: (USPSFlags::Config::BASE_FLY/120), fly: USPSFlags::Config::BASE_FLY, unit: nil)
163
+ label = bottom - top if label.nil?
164
+ label = label.to_i if label - label.to_i == 0
165
+ label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
166
+ if label == label.to_i
167
+ label = label.to_i
168
+ label_fraction = ""
169
+ else
170
+ label, label_fraction = label.to_simplified_a
171
+ end
172
+ svg = ""
173
+ unless pointer_top.nil?
174
+ svg << <<~SVG
175
+ <line x1="#{x}" y1="#{top}" x2="#{pointer_top}" y2="#{top}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
176
+ SVG
177
+ end
178
+ unless pointer_bottom.nil?
179
+ svg << <<~SVG
180
+ <line x1="#{x}" y1="#{bottom}" x2="#{pointer_bottom}" y2="#{bottom}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
181
+ SVG
182
+ end
183
+
184
+ svg << <<~SVG
185
+ <path d="M#{x} #{top} l #{arrow_size} #{arrow_size} M#{x} #{top} l -#{arrow_size} #{arrow_size} M#{x} #{top} l 0 #{bottom - top} l #{arrow_size} -#{arrow_size} M#{x} #{bottom} l -#{arrow_size} -#{arrow_size}" stroke="#{color}" stroke-width="#{stroke_width}" fill="none" />
186
+ <g>
187
+ <style><![CDATA[tspan{font-size: #{USPSFlags::Config::FRACTION_SCALE}%;}]]></style>
188
+ <text x="#{x + label_offset}" y="#{(top+bottom)/2+(USPSFlags::Config::BASE_HOIST/150)+label_offset_y}" font-family="sans-serif" font-size="#{font_size}px" fill="#041E42" text-anchor="#{label_align}">#{label} <tspan>#{label_fraction}</tspan> #{unit}</text>
189
+ </g>
190
+ SVG
191
+
192
+ svg
193
+ end
194
+
195
+ # Creates a horizontal arrow for the trident spec sheet.
196
+ #
197
+ # This is used USPSFlags::Core.trident_spec, and should never need to be called directly.
198
+ # @private
199
+ def self.h_arrow(y, left, right, pointer_left = nil, pointer_right = nil, label: nil, label_offset: (USPSFlags::Config::BASE_FLY/45), label_offset_x: 0, label_align: "middle", color: "#CCCCCC", stroke_width: (USPSFlags::Config::BASE_FLY/600), stroke_dash: "10, 10", font_size: (USPSFlags::Config::BASE_FLY/60), arrow_size: (USPSFlags::Config::BASE_FLY/120), fly: USPSFlags::Config::BASE_FLY, unit: nil)
200
+ label = right - left if label.nil?
201
+ label = label.to_i if label - label.to_i == 0
202
+ label = Rational(label) * fly / USPSFlags::Config::BASE_FLY
203
+ if label == label.to_i
204
+ label = label.to_i
205
+ label_fraction = ""
206
+ else
207
+ label, label_fraction = label.to_simplified_a
208
+ end
209
+ svg = ""
210
+ unless pointer_left.nil?
211
+ svg << <<~SVG
212
+ <line x1="#{left}" y1="#{y}" x2="#{left}" y2="#{pointer_left}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
213
+ SVG
214
+ end
215
+ unless pointer_right.nil?
216
+ svg << <<~SVG
217
+ <line x1="#{right}" y1="#{y}" x2="#{right}" y2="#{pointer_right}" stroke="#{color}" stroke-width="#{stroke_width}" stroke-dasharray="#{stroke_dash}" />
218
+ SVG
219
+ end
220
+
221
+ svg << <<~SVG
222
+ <path d="M#{left} #{y} l #{arrow_size} #{arrow_size} M#{left} #{y} l #{arrow_size} -#{arrow_size} M#{left} #{y} l #{right - left} 0 l -#{arrow_size} -#{arrow_size} M#{right} #{y} l -#{arrow_size} #{arrow_size}" stroke="#{color}" stroke-width="#{stroke_width}" fill="none" />
223
+ <g>
224
+ <style><![CDATA[tspan{font-size: #{USPSFlags::Config::FRACTION_SCALE}%;}]]></style>
225
+ <text x="#{(left+right)/2+label_offset_x}" y="#{y + label_offset}" font-family="sans-serif" font-size="#{font_size}px" fill="#041E42" text-anchor="#{label_align}">#{label} <tspan>#{label_fraction}</tspan> #{unit}</text>
226
+ </g>
227
+ SVG
228
+
229
+ svg
230
+ end
231
+
232
+ # Prints message(s) to the console and logs them.
233
+ #
234
+ # This should never need to be called directly.
235
+ # @private
236
+ def self.log(*messages)
237
+ ::FileUtils.mkdir_p(USPSFlags::Config.log_path)
238
+ log_file = File.open("#{USPSFlags::Config.log_path}/flag.log", 'a')
239
+ messages.each do |message|
240
+ [STDOUT, log_file].each do |f|
241
+ f.write(message)
242
+ end
243
+ end
244
+ log_file.close
245
+
246
+ messages
247
+ end
248
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Rational do
4
+ describe "monkey patches" do
5
+ it "should render a simplified fraction as an Array" do
6
+ expect(Rational(4,3).to_simplified_a).to eql([1, Rational(1,3)])
7
+ end
8
+
9
+ it "should render a simplified fraction as a String" do
10
+ expect(Rational(4,3).to_simplified_s).to eql("1 1/3")
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+ require 'bundler/setup'
4
+ Bundler.setup
5
+
6
+ require 'usps_flags' # Contains direct SVG matching
7
+ # require 'fileutils'
8
+ # require 'zip'
9
+ # require 'mini_magick'
10
+ require 'usps_flags/config'
11
+ require 'usps_flags/helpers'
12
+ require 'usps_flags/core' # Contains direct SVG matching
13
+ require 'usps_flags/generate'
14
+
15
+ RSpec.configure do |config|
16
+ # some (optional) config here
17
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe USPSFlags::Config do
4
+ describe "flags_dir" do
5
+ it "should return the current flags directory" do
6
+ default_flags_dir = File.dirname(__dir__).gsub("/spec", "/lib") + "/output"
7
+ expect(USPSFlags::Config.flags_dir).to eql(default_flags_dir)
8
+ end
9
+
10
+ it "should return the new flags directory when given a new path" do
11
+ new_flags_dir = "#{File.dirname(__dir__)}/flags"
12
+ expect(USPSFlags::Config.flags_dir(new_flags_dir)).to eql(new_flags_dir)
13
+ end
14
+ end
15
+
16
+ describe "trident" do
17
+ it "should return a Hash from trident" do
18
+ expect(USPSFlags::Config.trident).to be_a(Hash)
19
+ end
20
+ end
21
+
22
+ describe "use_larger_tridents" do
23
+ it "should return a Boolean from use_larger_tridents" do
24
+ expect([true, false]).to include(USPSFlags::Config.use_larger_tridents)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,133 @@
1
+ require 'spec_helper'
2
+
3
+ describe USPSFlags::Core do
4
+ describe "trident_spec" do
5
+ ["Field", "Specification Heading Information", "Short Trident", "Delta Trident", "Circle Trident", "Long Trident"].each do |section|
6
+ it "should contain the #{section} section" do
7
+ expect(USPSFlags::Core.trident_spec).to include("<!-- #{section} -->")
8
+ end
9
+ end
10
+ end
11
+
12
+ describe "headers" do
13
+ ["?xml ", "!DOCTYPE", "svg ", "metadata"].each do |tag|
14
+ it "should contain the #{tag} tag" do
15
+ expect(USPSFlags::Core.headers).to include("<#{tag}")
16
+ end
17
+ end
18
+ end
19
+
20
+ describe "footer" do
21
+ it "should contain the closing tag" do
22
+ expect(USPSFlags::Core.footer).to include("</svg>")
23
+ end
24
+ end
25
+
26
+ before(:all) do
27
+ @fly = USPSFlags::Config::BASE_FLY
28
+ @hoist = USPSFlags::Config::BASE_HOIST
29
+ @red = USPSFlags::Config::RED
30
+ @blue = USPSFlags::Config::BLUE
31
+ end
32
+
33
+ describe "field" do
34
+ it "should correctly generate the basic field" do
35
+ expect(USPSFlags::Core.field).to eql(
36
+ <<~SVG
37
+ <path d="M 0 0
38
+ l #{@fly} 0
39
+ l 0 #{@hoist}
40
+ l -#{@fly} 0
41
+ l 0 -#{@hoist}
42
+ " fill="#FFFFFF" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
43
+ SVG
44
+ )
45
+ end
46
+
47
+ it "should correctly generate the red field" do
48
+
49
+ expect(USPSFlags::Core.field(color: :red)).to eql(
50
+ <<~SVG
51
+ <path d="M 0 0
52
+ l #{@fly} 0
53
+ l 0 #{@hoist}
54
+ l -#{@fly} 0
55
+ l 0 -#{@hoist}
56
+ " fill="#{@red}" />
57
+ SVG
58
+ )
59
+ end
60
+
61
+ it "should correctly generate the swallowtail field" do
62
+ expect(USPSFlags::Core.field(style: :swallowtail)).to eql(
63
+ <<~SVG
64
+ <path d="M 0 0
65
+ l #{@fly} #{@hoist/6}
66
+ l -#{@fly/5} #{@hoist/3}
67
+ l #{@fly/5} #{@hoist/3}
68
+ l -#{@fly} #{@hoist/6}
69
+ " fill="#FFFFFF" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
70
+ SVG
71
+ )
72
+ end
73
+
74
+ it "should correctly generate the blue past field" do
75
+ expect(USPSFlags::Core.field(style: :past, color: :blue)).to eql(
76
+ <<~SVG
77
+ <path d="M 0 0
78
+ l #{@fly/2} #{@hoist*1/12}
79
+ l 0 #{@hoist*10/12}
80
+ l -#{@fly/2} #{@hoist*1/12}
81
+ " fill="#{@blue}" />
82
+ <path d="M #{@fly/2} #{@hoist*1/12}
83
+ l #{@fly/4} #{@hoist*1/24}
84
+ l 0 #{@hoist*9/12}
85
+ l -#{@fly/4} #{@hoist*1/24}
86
+ " fill="#FFFFFF" />
87
+ <path d="M #{@fly*3/4} #{@hoist*3/24}
88
+ l #{@fly/4} #{@hoist*1/24}
89
+ l -#{@fly/5} #{@hoist/3}
90
+ l #{@fly/5} #{@hoist/3}
91
+ l -#{@fly/4} #{@hoist*1/24}
92
+ " fill="#{@red}" />
93
+ <path d="M 0 0
94
+ l #{@fly} #{@hoist/6}
95
+ l -#{@fly/5} #{@hoist/3}
96
+ l #{@fly/5} #{@hoist/3}
97
+ l -#{@fly} #{@hoist/6}
98
+ " fill="none" stroke="#000000" stroke-width="#{USPSFlags::Config::BASE_FLY/600}" />
99
+ SVG
100
+ )
101
+ end
102
+ end
103
+
104
+ describe "trident" do
105
+ it "should correctly generate a short trident" do
106
+ expect(USPSFlags::Core.trident(:s)).to include("<path d=\"M #{@fly/2} #{@hoist/4}\n")
107
+ end
108
+
109
+ it "should correctly generate a delta trident" do
110
+ expect(USPSFlags::Core.trident(:d)).to include("<g mask=\"url(#delta-mask)\"><path d=\"M #{@fly/2} #{@hoist*3/16}\n")
111
+ end
112
+
113
+ it "should correctly generate a circle trident" do
114
+ expect(USPSFlags::Core.trident(:stf)).to include("<g mask=\"url(#circle-mask-for-main-spike)\"><path d=\"M #{@fly/2} #{@hoist/8}\n")
115
+ end
116
+
117
+ it "should correctly generate a long trident" do
118
+ expect(USPSFlags::Core.trident(:n)).to include("<path d=\"M #{@fly/2} #{@hoist/8}\n")
119
+ end
120
+ end
121
+
122
+ describe "anchor" do
123
+ it "should correctly generate an anchor" do
124
+ expect(USPSFlags::Core.anchor).to include("<mask id=\"anchor-mask\">")
125
+ end
126
+ end
127
+
128
+ describe "lighthouse" do
129
+ it "should correctly generate a lighthouse" do
130
+ expect(USPSFlags::Core.lighthouse).to include("<mask id=\"lighthouse-mask\">")
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe USPSFlags::Generate do
4
+ it "should get the correct flag" do
5
+ expect(USPSFlags::Generate.get("LtC", outfile: "")).to include("width=\"1024pt\" height=\"682pt\" viewBox=\"0 0 3072 2048\"")
6
+ expect(USPSFlags::Generate.get("LtC", outfile: "")).to include(
7
+ <<~SVG
8
+ <path d="M 0 0
9
+ l 3072 0
10
+ l 0 2048
11
+ l -3072 0
12
+ l 0 -2048
13
+ " fill="#BF0D3E" />
14
+ SVG
15
+ )
16
+ expect(USPSFlags::Generate.get("LtC", outfile: "")).to include("<path d=\"M 1536 512")
17
+ expect(USPSFlags::Generate.get("LtC", outfile: "")).to include("<g transform=\"translate(-512)\">")
18
+ expect(USPSFlags::Generate.get("LtC", outfile: "")).to include("<g transform=\"translate(512)\">")
19
+ end
20
+ end