forked from newagebegins/BattleCity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCollisionDetectorSpec.js
58 lines (47 loc) · 2.03 KB
/
CollisionDetectorSpec.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
describe("CollisionDetector", function () {
it("should subscribe", function () {
var eventManager = new EventManager();
spyOn(eventManager, 'addSubscriber');
var bounds = new Rect(0, 0, 100, 100);
var collisionDetector = new CollisionDetector(eventManager, bounds);
expect(eventManager.addSubscriber).toHaveBeenCalledWith(collisionDetector,
[Sprite.Event.MOVED]);
});
it("should fire event when collision takes place", function () {
var eventManager = new EventManager();
spyOn(eventManager, 'fireEvent').andCallThrough();
var tank = new Tank(eventManager);
tank.setRect(new Rect(0, 0, 1, 1));
tank.setSpeed(1);
tank.setDirection(Sprite.Direction.RIGHT);
var wall = new Wall(eventManager);
wall.setRect(new Rect(1, 0, 1, 1));
var bounds = new Rect(0, 0, 100, 100);
var spriteContainer = new SpriteContainer(eventManager);
var collisionDetector = new CollisionDetector(eventManager, bounds, spriteContainer);
spriteContainer.addSprite(tank);
spriteContainer.addSprite(wall);
tank.move();
expect(eventManager.fireEvent).toHaveBeenCalledWith({
'name': CollisionDetector.Event.COLLISION,
'initiator': tank,
'sprite': wall});
});
it("should fire event when sprite goes out of bounds", function () {
var eventManager = new EventManager();
spyOn(eventManager, 'fireEvent').andCallThrough();
var tank = new Tank(eventManager);
tank.setRect(new Rect(0, 0, 1, 1));
tank.setSpeed(1);
tank.setDirection(Sprite.Direction.LEFT);
var bounds = new Rect(0, 0, 10, 5);
var spriteContainer = new SpriteContainer(eventManager);
var collisionDetector = new CollisionDetector(eventManager, bounds, spriteContainer);
spriteContainer.addSprite(tank);
tank.move();
expect(eventManager.fireEvent).toHaveBeenCalledWith({
'name': CollisionDetector.Event.OUT_OF_BOUNDS,
'sprite': tank,
'bounds': bounds});
});
});