-
Notifications
You must be signed in to change notification settings - Fork 5
/
test.es6
91 lines (76 loc) · 2.43 KB
/
test.es6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import tape from 'tape'
import InfiniteCanvas from './'
import createCanvas from 'create-canvas'
// init vars
let mainCanvas = null
let iCanvas = null
let compareCanvas = null
function drawTriangle (ctx, start=[0, 0]) {
ctx.beginPath()
ctx.moveTo((10 + start[0]), (10 + start[1]))
ctx.lineTo((10 + start[0]), (16 + start[1]))
ctx.lineTo((14 + start[0]), (13 + start[1]))
ctx.closePath()
ctx.stroke()
}
function test (description, fn) {
tape(description, function (t) {
t.done = () => {
t.end()
mainCanvas = iCanvas = compareCanvas = null
}
mainCanvas = createCanvas(200, 300)
compareCanvas = createCanvas(200, 300)
iCanvas = new InfiniteCanvas(mainCanvas)
fn(t)
})
}
test('origin should accumulate', function (t) {
iCanvas.move([-20, 40])
t.deepEqual(iCanvas.getOrigin(), [-20, 40])
iCanvas.move([10, 20])
t.deepEqual(iCanvas.getOrigin(), [-10, 60])
t.done()
})
test('iCanvas should resize be the correct size with move', function (t) {
iCanvas.move([20, 40])
t.equal(iCanvas.buffer.width, 220)
t.equal(iCanvas.buffer.height, 340)
iCanvas.move([-10, 20])
t.equal(iCanvas.buffer.width, 220)
t.equal(iCanvas.buffer.height, 360)
iCanvas.move([-40, 0])
t.equal(iCanvas.buffer.width, 250)
t.equal(iCanvas.buffer.height, 360)
t.done()
})
test('iCanvas should resize be the correct size with setOrigin', function (t) {
iCanvas.setOrigin([20, 40])
t.equal(iCanvas.buffer.width, 220)
t.equal(iCanvas.buffer.height, 340)
iCanvas.setOrigin([10, 60])
t.equal(iCanvas.buffer.width, 220)
t.equal(iCanvas.buffer.height, 360)
iCanvas.setOrigin([-30, 60])
t.equal(iCanvas.buffer.width, 250)
t.equal(iCanvas.buffer.height, 360)
t.done()
})
test('should draw previous canvas in correct location moving down and right', function (t) {
drawTriangle(iCanvas.bufferContext, [0, 0])
drawTriangle(compareCanvas.getContext('2d'), [10, 30])
iCanvas.move([10, 30])
t.deepEqual(
iCanvas.bufferContext.getImageData(0, 0, 200, 300),
compareCanvas.getContext('2d').getImageData(0, 0, 200, 300))
t.end()
})
test('should draw previous canvas in correct location moving up and left', function (t) {
drawTriangle(iCanvas.bufferContext, [40, 40])
drawTriangle(compareCanvas.getContext('2d'), [20, 0])
iCanvas.move([-20, -40])
t.deepEqual(
iCanvas.bufferContext.getImageData(20, 0, 28, 8).data,
compareCanvas.getContext('2d').getImageData(20, 0, 28, 8).data)
t.end()
})