vamp 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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