-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcube.spec.js
136 lines (94 loc) · 2.99 KB
/
cube.spec.js
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import { Cube } from './cube'
describe('Cube', () => {
describe('rotation', () => {
it('should rotate right', () => {
const cube = new Cube({})
cube.rotateRight()
expect(cube.currentFace).toEqual(3)
})
it('should get back to front face', () => {
const cube = new Cube({})
cube.rotateRight()
cube.rotateRight()
cube.rotateRight()
cube.rotateRight()
expect(cube.currentFace).toEqual(0)
})
it('should rotate left', () => {
const cube = new Cube({})
cube.rotateLeft()
expect(cube.currentFace).toEqual(1)
})
it('should get back to front face', () => {
const cube = new Cube({})
cube.rotateLeft()
cube.rotateLeft()
cube.rotateLeft()
cube.rotateLeft()
expect(cube.currentFace).toEqual(0)
})
it('should return on front face after a rotation to the right', () => {
const cube = new Cube({})
cube.rotateRight()
cube.rotateLeft()
expect(cube.currentFace).toEqual(0)
})
it('should return on front face after a rotation to the left', () => {
const cube = new Cube({})
cube.rotateLeft()
cube.rotateRight()
expect(cube.currentFace).toEqual(0)
})
})
describe('children', () => {
it('should add an element to children', () => {
const cube = new Cube({})
const child = new Cube({})
cube.attachTo(child)
expect(cube.children.pop()).toEqual(child)
})
it('should add face on element attached to something', () => {
const cube = new Cube({})
const child = new Cube({})
cube.attachTo(child, 0)
expect(cube.children.pop().face).toEqual(0)
})
it('should hide child when currentFace is the one it is attached to', () => {
const cube = new Cube({})
const child = new Cube({})
cube.attachTo(child, 2)
expect(cube.isChildHidden(cube.children.pop())).toEqual(true)
})
it('should hide child when previousHiddenFace is the one it were attached to', () => {
const cube = new Cube({})
const child = new Cube({})
cube.attachTo(child, 3)
cube.rotateLeft()
expect(cube.isChildHidden(cube.children.pop())).toEqual(true)
})
})
describe('hidden face', () => {
it('should return back when current face is front', () => {
const cube = new Cube({})
expect(cube.getHiddenFace()).toEqual(2)
})
it('should return right when current face is left', () => {
const cube = new Cube({})
cube.rotateRight()
expect(cube.getHiddenFace()).toEqual(1)
})
it('should return front when current face is back', () => {
const cube = new Cube({})
cube.rotateRight()
cube.rotateRight()
expect(cube.getHiddenFace()).toEqual(0)
})
it('should return left when current face is right', () => {
const cube = new Cube({})
cube.rotateRight()
cube.rotateRight()
cube.rotateRight()
expect(cube.getHiddenFace()).toEqual(3)
})
})
})