-
-
Notifications
You must be signed in to change notification settings - Fork 23
/
scene.test.js
99 lines (84 loc) · 2.45 KB
/
scene.test.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
import test from "ava";
import Component from "@pencil.js/component";
import Scene from "./scene.js";
test.beforeEach((t) => {
t.context = new Scene();
t.context.ctx.canvas.width = 800;
t.context.ctx.canvas.height = 600;
});
test("constructor", (t) => {
t.truthy(t.context.ctx);
t.true(t.context.cursorPosition.constructor.name === "Position");
t.true(t.context.containerPosition.constructor.name === "Position");
t.true(t.context.isScene);
t.false(t.context.isLooped);
t.is(t.context.fps, 0);
t.is(t.context.lastTick, null);
});
test("constructor with container", (t) => {
const container = window.document.createElement("canvas");
const scene = new Scene(container);
t.is(scene.ctx.canvas, container);
});
test("setCursor", (t) => {
t.context.setCursor("whatever");
t.is(t.context.ctx.canvas.style.cursor, "whatever");
});
test("isHover", (t) => {
t.true(t.context.isHover());
});
test("clear", (t) => {
t.context.ctx.clearRect = () => t.pass();
t.context.ctx.fillRect = () => t.pass();
t.context.options.fill = "red";
t.context.clear();
t.plan(3);
t.is(t.context.ctx.fillStyle, "red");
});
test("startLoop and stopLoop", (t) => {
t.false(t.context.isLooped);
t.context.startLoop();
t.true(t.context.isLooped);
t.context.render();
t.true(t.context.fps > 0);
t.context.stopLoop();
t.false(t.context.isLooped);
t.true(t.context.fps === 0);
});
test("startLoop render fail", (t) => {
const parent = new Component();
parent.add(new Component());
t.context.add(parent);
t.throws(() => t.context.startLoop());
t.false(t.context.isLooped);
});
test("hide and show", (t) => {
t.true(t.context.options.shown);
t.context.hide();
t.false(t.context.options.shown);
t.context.show();
t.true(t.context.options.shown);
});
test("from", (t) => {
const scene = Scene.from({
options: {
fill: "red",
},
});
t.true(scene instanceof Scene);
t.is(scene.options.fill, "red");
});
test("getDrawingContext", (t) => {
const ctx = Scene.getDrawingContext({
scrollWidth: 10,
scrollHeight: 20,
});
t.is(ctx.constructor.name, "CanvasRenderingContext2D");
t.is(ctx.canvas.width, 10);
t.is(ctx.canvas.height, 20);
const nothing = Scene.getDrawingContext(null);
t.is(nothing, null);
});
test("defaultOptions", (t) => {
t.is(Scene.defaultOptions.cursor, "default");
});