vamp 0.1.3 → 0.1.4

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.
@@ -0,0 +1,364 @@
1
+ require "spec_helper"
2
+ require "vamp/graphic"
3
+
4
+ describe Vamp::Graphic::Context do
5
+ describe "screen 2x2" do
6
+ subject { described_class.new(Vamp::Graphic::TextDotter.new(2, 2)) }
7
+ describe "#new" do
8
+ it "has empty screen" do
9
+ expect(subject.screen).to eq <<-'END'
10
+ +--+
11
+ | |
12
+ | |
13
+ +--+
14
+ END
15
+ end
16
+ end
17
+ describe "#draw_line_direct" do
18
+ it "can draw top left to right down" do
19
+ subject.draw_line_direct 0, 0, 1, 1
20
+ expect(subject.screen).to eq <<-'END'
21
+ +--+
22
+ |X |
23
+ | X|
24
+ +--+
25
+ END
26
+ end
27
+
28
+ it "can draw down left to right top" do
29
+ subject.draw_line_direct 0, 1, 1, 0
30
+ expect(subject.screen).to eq <<-'END'
31
+ +--+
32
+ | X|
33
+ |X |
34
+ +--+
35
+ END
36
+ end
37
+
38
+ it "can draw top left to right top" do
39
+ subject.draw_line_direct 0, 0, 1, 0
40
+ expect(subject.screen).to eq <<-'END'
41
+ +--+
42
+ |XX|
43
+ | |
44
+ +--+
45
+ END
46
+ end
47
+
48
+ it "can draw top left to right down" do
49
+ subject.draw_line_direct 0, 0, 1, 1
50
+ expect(subject.screen).to eq <<-'END'
51
+ +--+
52
+ |X |
53
+ | X|
54
+ +--+
55
+ END
56
+ end
57
+ end
58
+
59
+ describe "#line" do
60
+ describe "only integers, without clipping" do
61
+ it "can draw down left to right top" do
62
+ subject.line 0, 1, 1, 0
63
+ expect(subject.screen).to eq <<-'END'
64
+ +--+
65
+ | X|
66
+ |X |
67
+ +--+
68
+ END
69
+ end
70
+
71
+ it "can draw top left to right top" do
72
+ subject.line 0, 0, 1, 0
73
+ expect(subject.screen).to eq <<-'END'
74
+ +--+
75
+ |XX|
76
+ | |
77
+ +--+
78
+ END
79
+ end
80
+ end
81
+
82
+ describe "also double, no clipping" do
83
+ it "can draw top left to right down" do
84
+ subject.line 0.1, 0.1, 1.9, 1.4
85
+ expect(subject.screen).to eq <<-'END'
86
+ +--+
87
+ |X |
88
+ | X|
89
+ +--+
90
+ END
91
+ end
92
+
93
+ it "can draw top left to right top" do
94
+ subject.line 0.0001, 0, 1.99999, 0.9
95
+ expect(subject.screen).to eq <<-'END'
96
+ +--+
97
+ |XX|
98
+ | |
99
+ +--+
100
+ END
101
+ end
102
+
103
+ it "can draw top left to right down" do
104
+ subject.line 0.0001, 0, 1.99999, 1
105
+ expect(subject.screen).to eq <<-'END'
106
+ +--+
107
+ |XX|
108
+ | |
109
+ +--+
110
+ END
111
+ end
112
+
113
+ it "can draw top left to right top" do
114
+ subject.line 0.1, 0.1, 1, 0
115
+ expect(subject.screen).to eq <<-'END'
116
+ +--+
117
+ |XX|
118
+ | |
119
+ +--+
120
+ END
121
+ end
122
+
123
+ it "can draw top left to right down" do
124
+ subject.line 0.9999, 0.1, 1.9999, 1.9999999
125
+ expect(subject.screen).to eq <<-'END'
126
+ +--+
127
+ | X|
128
+ | |
129
+ +--+
130
+ END
131
+ end
132
+ end
133
+
134
+ describe "only integers, with clipping" do
135
+ it "can draw down left to right top" do
136
+ subject.line -1, -1, 2, 2
137
+ expect(subject.screen).to eq <<-'END'
138
+ +--+
139
+ |X |
140
+ | X|
141
+ +--+
142
+ END
143
+ end
144
+
145
+ it "can draw top left to right down" do
146
+ subject.line -10, -11, 21, 22
147
+ expect(subject.screen).to eq <<-'END'
148
+ +--+
149
+ |X |
150
+ | X|
151
+ +--+
152
+ END
153
+ end
154
+ end
155
+ end
156
+
157
+ describe "#clear" do
158
+ it "can clear the scren" do
159
+ subject.line 0, 1, 1, 0
160
+ expect(subject.clear.screen).to eq <<-'END'
161
+ +--+
162
+ | |
163
+ | |
164
+ +--+
165
+ END
166
+ end
167
+ end
168
+ end
169
+
170
+ describe "screen 9x4" do
171
+ subject { described_class.new(Vamp::Graphic::TextDotter.new(9, 4)) }
172
+ describe "#new" do
173
+ it "has empty screen" do
174
+ expect(subject.screen).to eq <<-'END'
175
+ +---------+
176
+ | |
177
+ | |
178
+ | |
179
+ | |
180
+ +---------+
181
+ END
182
+ end
183
+ end
184
+ describe "#draw_line_direct" do
185
+ it "can draw top left to right down" do
186
+ subject.draw_line_direct 0, 0, 8, 3
187
+ expect(subject.screen).to eq <<-'END'
188
+ +---------+
189
+ |XX |
190
+ | XXX |
191
+ | XX |
192
+ | XX|
193
+ +---------+
194
+ END
195
+ end
196
+
197
+ it "can draw down left to right top" do
198
+ subject.draw_line_direct 0, 3, 8, 0
199
+ expect(subject.screen).to eq <<-'END'
200
+ +---------+
201
+ | XX|
202
+ | XX |
203
+ | XXX |
204
+ |XX |
205
+ +---------+
206
+ END
207
+ end
208
+
209
+ it "can draw top left to right top" do
210
+ subject.draw_line_direct 0, 0, 8, 0
211
+ expect(subject.screen).to eq <<-'END'
212
+ +---------+
213
+ |XXXXXXXXX|
214
+ | |
215
+ | |
216
+ | |
217
+ +---------+
218
+ END
219
+ end
220
+
221
+ it "can draw down right to left down" do
222
+ subject.draw_line_direct 8, 3, 0, 3
223
+ expect(subject.screen).to eq <<-'END'
224
+ +---------+
225
+ | |
226
+ | |
227
+ | |
228
+ |XXXXXXXXX|
229
+ +---------+
230
+ END
231
+ end
232
+ end
233
+
234
+ describe "#line" do
235
+ describe "only integers, without clipping" do
236
+ it "can draw down left to right top" do
237
+ subject.line 0, 3, 8, 0
238
+ expect(subject.screen).to eq <<-'END'
239
+ +---------+
240
+ | XX|
241
+ | XX |
242
+ | XXX |
243
+ |XX |
244
+ +---------+
245
+ END
246
+ end
247
+
248
+ it "can draw top left to right top" do
249
+ subject.line 0, 0, 8, 0
250
+ expect(subject.screen).to eq <<-'END'
251
+ +---------+
252
+ |XXXXXXXXX|
253
+ | |
254
+ | |
255
+ | |
256
+ +---------+
257
+ END
258
+ end
259
+ end
260
+
261
+ describe "also double, no clipping" do
262
+ it "can draw top left to right down" do
263
+ subject.line 0.1, 0.1, 8.9, 3.4
264
+ expect(subject.screen).to eq <<-'END'
265
+ +---------+
266
+ |XX |
267
+ | XXX |
268
+ | XX |
269
+ | XX|
270
+ +---------+
271
+ END
272
+ end
273
+
274
+ it "can draw top left to right top" do
275
+ subject.line 0.0001, 0, 8.99999, 0.56
276
+ expect(subject.screen).to eq <<-'END'
277
+ +---------+
278
+ |XXXXXXXXX|
279
+ | |
280
+ | |
281
+ | |
282
+ +---------+
283
+ END
284
+ end
285
+
286
+ it "can draw top left to right down" do
287
+ subject.line 0.0001, 0, 8.99999, 3
288
+ expect(subject.screen).to eq <<-'END'
289
+ +---------+
290
+ |XX |
291
+ | XXX |
292
+ | XX |
293
+ | XX|
294
+ +---------+
295
+ END
296
+ end
297
+
298
+ it "can draw top left to right top" do
299
+ subject.line 0.1, 0.1, 8, 0
300
+ expect(subject.screen).to eq <<-'END'
301
+ +---------+
302
+ |XXXXXXXXX|
303
+ | |
304
+ | |
305
+ | |
306
+ +---------+
307
+ END
308
+ end
309
+
310
+ it "can draw top left to right down" do
311
+ subject.line 0.9999, 0.1, 8.9999, 3.9999999
312
+ expect(subject.screen).to eq <<-'END'
313
+ +---------+
314
+ | XX |
315
+ | XX |
316
+ | XX |
317
+ | X |
318
+ +---------+
319
+ END
320
+ end
321
+ end
322
+
323
+ describe "only integers, with clipping" do
324
+ it "can draw down left to right top" do
325
+ subject.line -1, -1, 9, 4
326
+ expect(subject.screen).to eq <<-'END'
327
+ +---------+
328
+ | XX |
329
+ | XX |
330
+ | XX |
331
+ | X |
332
+ +---------+
333
+ END
334
+ end
335
+
336
+ it "can draw down left to right top" do
337
+ subject.line -11, -5, 41, 20
338
+ expect(subject.screen).to eq <<-'END'
339
+ +---------+
340
+ |XX |
341
+ | XX |
342
+ | XX |
343
+ | X |
344
+ +---------+
345
+ END
346
+ end
347
+ end
348
+ end
349
+
350
+ describe "#clear" do
351
+ it "can clear the scren" do
352
+ subject.line 0, 1, 8, 3
353
+ expect(subject.clear.screen).to eq <<-'END'
354
+ +---------+
355
+ | |
356
+ | |
357
+ | |
358
+ | |
359
+ +---------+
360
+ END
361
+ end
362
+ end
363
+ end
364
+ end
@@ -0,0 +1,179 @@
1
+ require "spec_helper"
2
+
3
+ describe Vamp::Graphic::Transfer5 do
4
+ describe "#mappping" do
5
+ subject do
6
+ s = described_class.new(Vamp::Graphic::Context.new(Vamp::Graphic::TextDotter.new(5, 5)))
7
+ end
8
+ it "has correct minus pattern" do
9
+ expect(subject.mapping["-"].screen).to eq <<-'END'
10
+ +-----+
11
+ | |
12
+ | |
13
+ |XXXX |
14
+ | |
15
+ | |
16
+ +-----+
17
+ END
18
+ end
19
+ end
20
+ describe "screen 145x85" do
21
+ subject do
22
+ s = described_class.new(Vamp::Graphic::Context.new(Vamp::Graphic::TextDotter.new(145, 85)))
23
+ s.context.line 0, 0, 72, 42
24
+ s.context.line 72, 42, 144, 0
25
+ s.context.line 72, 42, 144, 84
26
+ s.context.line 0, 84, 72, 42
27
+ s.context.line 72, 42, 144, 42
28
+ s.context.line 72, 42, 0, 42
29
+ s.context.line 72, 42, 72, 0
30
+ s.context.line 72, 42, 72, 84
31
+ s.context.line 36, 0, 72, 42
32
+ s.context.line 108, 0, 72, 42
33
+ s.context.line 36, 84, 72, 42
34
+ s.context.line 108, 84, 72, 42
35
+ s.context.line 0, 21, 72, 42
36
+ s.context.line 144, 21, 72, 42
37
+ s.context.line 0, 63, 72, 42
38
+ s.context.line 144, 63, 72, 42
39
+ s
40
+ end
41
+ it "has correct starting picture" do
42
+ expect(subject.context.screen).to eq <<-'END'
43
+ +-------------------------------------------------------------------------------------------------------------------------------------------------+
44
+ |X X X X X|
45
+ | XX X X X XX |
46
+ | XX X X X XX |
47
+ | XX X X X X |
48
+ | X X X X XX |
49
+ | XX X X X XX |
50
+ | XX X X X XX |
51
+ | X X X X X |
52
+ | XX X X X XX |
53
+ | XX X X X XX |
54
+ | XX X X X X |
55
+ | X X X X XX |
56
+ | XX X X X XX |
57
+ | XX X X X XX |
58
+ | X X X X X |
59
+ | XX X X X XX |
60
+ | XX X X X XX |
61
+ | XX X X X X |
62
+ | X X X X XX |
63
+ | XX X X X XX |
64
+ | XX X X X XX |
65
+ |XX X X X X X XX|
66
+ | XXXX XX X X X XX XXXX |
67
+ | XXX XX X X X XX XXX |
68
+ | XXXX XX X X X X XXXX |
69
+ | XXX X X X X XX XXX |
70
+ | XXX XX X X X XX XXX |
71
+ | XXXX XX X X X XX XXXX |
72
+ | XXX X X X X X XXX |
73
+ | XXXX XX X X X XX XXXX |
74
+ | XXX XX X X X XX XXX |
75
+ | XXXX XX X X X X XXXX |
76
+ | XXX X X X X XX XXX |
77
+ | XXX XX X X X XX XXX |
78
+ | XXXX XX X X X XX XXXX |
79
+ | XXX X X X X X XXX |
80
+ | XXXX XX X X X XX XXXX |
81
+ | XXX XX X X X XX XXX |
82
+ | XXXX XX X X X X XXXX |
83
+ | XXX X X X X XX XXX |
84
+ | XXX XXX X XXX XXX |
85
+ | XXXXXXXXXXX |
86
+ |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|
87
+ | XXXXXXXXXXX |
88
+ | XXX XXX X XXX XXX |
89
+ | XXX X X X X XX XXX |
90
+ | XXXX XX X X X X XXXX |
91
+ | XXX XX X X X XX XXX |
92
+ | XXXX XX X X X XX XXXX |
93
+ | XXX X X X X X XXX |
94
+ | XXXX XX X X X XX XXXX |
95
+ | XXX XX X X X XX XXX |
96
+ | XXX X X X X XX XXX |
97
+ | XXXX XX X X X X XXXX |
98
+ | XXX XX X X X XX XXX |
99
+ | XXXX XX X X X XX XXXX |
100
+ | XXX X X X X X XXX |
101
+ | XXXX XX X X X XX XXXX |
102
+ | XXX XX X X X XX XXX |
103
+ | XXX X X X X XX XXX |
104
+ | XXXX XX X X X X XXXX |
105
+ | XXX XX X X X XX XXX |
106
+ | XXXX XX X X X XX XXXX |
107
+ |XX X X X X X XX|
108
+ | XX X X X XX |
109
+ | XX X X X XX |
110
+ | X X X X XX |
111
+ | XX X X X X |
112
+ | XX X X X XX |
113
+ | XX X X X XX |
114
+ | X X X X X |
115
+ | XX X X X XX |
116
+ | XX X X X XX |
117
+ | X X X X XX |
118
+ | XX X X X X |
119
+ | XX X X X XX |
120
+ | XX X X X XX |
121
+ | X X X X X |
122
+ | XX X X X XX |
123
+ | XX X X X XX |
124
+ | X X X X XX |
125
+ | XX X X X X |
126
+ | XX X X X XX |
127
+ | XX X X X XX |
128
+ |X X X X X|
129
+ +-------------------------------------------------------------------------------------------------------------------------------------------------+
130
+ END
131
+ end
132
+ it "gets correct ascii" do
133
+ expect(subject.ascii.split("\n").map(&:rstrip).join("\n")).to eq (<<-'END'
134
+ ` \ | / '
135
+ \ \ | / /
136
+ . \ | .`
137
+ ' | `
138
+ -- \ | ` / --
139
+ "-_ . ' | / /` _-"
140
+ "-_ ' ' | ' ` _-`
141
+ -- \|/ -"
142
+ -------------###-------------
143
+ -- "|\ -_
144
+ -`` ` | \' '-
145
+ -- / ` | \ --
146
+ -" /` / | ' . "-
147
+ ` ` | ' '
148
+ ' / | \ `
149
+ / / | \ \
150
+ .` | \ .
151
+ END
152
+ ).chomp
153
+ end
154
+
155
+ # here is the 3 x 3 result
156
+ pending "gets correct ascii" do
157
+ expect(subject.ascii.split("\n").map(&:rstrip).join("\n")).to eq (<<-'END'
158
+ \_ \ | / _/
159
+ \ \ | / /`
160
+ '_ . | .` _`
161
+ `. . | .` .'
162
+ \_ \ | ` /` _/
163
+ "-__ '\ ' | ' /` __-"
164
+ `-_ '_' | '_' _-'`
165
+ "\\/\|////"
166
+ -------------###-------------
167
+ _////|\/\\_
168
+ _-" .'.`| .`. "-_
169
+ _-'` _/`.` | . \_ '`-_
170
+ /" /` ` | \ "\
171
+ _' ' | ' '_
172
+ _' ' | ' `_
173
+ /` / | \ \
174
+ /` / | \ '\
175
+ END
176
+ ).chomp
177
+ end
178
+ end
179
+ end