Skip to content

Commit bf3501c

Browse files
committed
add tests for keyframe blob options
1 parent aad5e35 commit bf3501c

File tree

1 file changed

+103
-4
lines changed

1 file changed

+103
-4
lines changed

public/animate.test.ts

Lines changed: 103 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ describe("animate", () => {
4242
}
4343

4444
const testCases: Array<TestCase> = [
45+
// duration
4546
{
4647
name: "should accept valid duration",
4748
edit: (keyframe) => (keyframe.duration = 100),
@@ -70,6 +71,7 @@ describe("animate", () => {
7071
edit: (keyframe) => (keyframe.duration = "123" as any),
7172
error: /duration.*number.*string/g,
7273
},
74+
// delay
7375
{
7476
name: "should accept valid delay",
7577
edit: (keyframe) => (keyframe.delay = 200),
@@ -97,6 +99,7 @@ describe("animate", () => {
9799
edit: (keyframe) => (keyframe.delay = "123" as any),
98100
error: /delay.*number.*string/g,
99101
},
102+
// timingFunction
100103
{
101104
name: "should accept known timingFunction",
102105
edit: (keyframe) => (keyframe.timingFunction = "ease"),
@@ -115,6 +118,7 @@ describe("animate", () => {
115118
edit: (keyframe) => (keyframe.timingFunction = "unknown" as any),
116119
error: /timingFunction.*not recognized.*unknown/g,
117120
},
121+
// callback
118122
{
119123
name: "should accept valid callback",
120124
edit: (keyframe) => (keyframe.callback = () => console.log("test")),
@@ -128,12 +132,97 @@ describe("animate", () => {
128132
edit: (keyframe) => (keyframe.callback = {} as any),
129133
error: /callback.*function.*object/g,
130134
},
131-
// TODO complete blobOptions type tests, should be the same as non-animated.
135+
// blobOptions
132136
{
133137
name: "should reject undefined blobOptions",
134138
edit: (keyframe) => delete keyframe.blobOptions,
135139
error: /blobOptions.*object.*undefined/g,
136140
},
141+
{
142+
name: "should reject invalid blobOptions",
143+
edit: (keyframe) => (keyframe.blobOptions = null as any),
144+
error: /blobOptions.*object.*null/g,
145+
},
146+
// blobOptions.seed
147+
{
148+
name: "should accept number blobOptions seed",
149+
edit: (keyframe) => (keyframe.blobOptions.seed = 123),
150+
},
151+
{
152+
name: "should accept string blobOptions seed",
153+
edit: (keyframe) => (keyframe.blobOptions.seed = "test"),
154+
},
155+
{
156+
name: "should reject undefined blobOptions seed",
157+
edit: (keyframe) => delete keyframe.blobOptions.seed,
158+
error: /seed.*string.*number.*undefined/g,
159+
},
160+
{
161+
name: "should reject broken blobOptions seed",
162+
edit: (keyframe) => (keyframe.blobOptions.seed = NaN),
163+
error: /seed.*string.*number.*NaN/g,
164+
},
165+
// blobOptions.extraPoints
166+
{
167+
name: "should accept valid blobOptions extraPoints",
168+
edit: (keyframe) => (keyframe.blobOptions.extraPoints = 4),
169+
},
170+
{
171+
name: "should reject undefined blobOptions extraPoints",
172+
edit: (keyframe) => delete keyframe.blobOptions.extraPoints,
173+
error: /blobOptions.*extraPoints.*number.*undefined/g,
174+
},
175+
{
176+
name: "should reject broken blobOptions extraPoints",
177+
edit: (keyframe) => (keyframe.blobOptions.extraPoints = NaN),
178+
error: /blobOptions.*extraPoints.*number.*NaN/g,
179+
},
180+
{
181+
name: "should reject negative blobOptions extraPoints",
182+
edit: (keyframe) => (keyframe.blobOptions.extraPoints = -2),
183+
error: /blobOptions.*extraPoints.*invalid/g,
184+
},
185+
// blobOptions.randomness
186+
{
187+
name: "should accept valid blobOptions randomness",
188+
edit: (keyframe) => (keyframe.blobOptions.randomness = 3),
189+
},
190+
{
191+
name: "should reject undefined blobOptions randomness",
192+
edit: (keyframe) => delete keyframe.blobOptions.randomness,
193+
error: /blobOptions.*randomness.*number.*undefined/g,
194+
},
195+
{
196+
name: "should reject broken blobOptions randomness",
197+
edit: (keyframe) => (keyframe.blobOptions.randomness = NaN),
198+
error: /blobOptions.*randomness.*number.*NaN/g,
199+
},
200+
{
201+
name: "should reject negative blobOptions randomness",
202+
edit: (keyframe) => (keyframe.blobOptions.randomness = -10),
203+
error: /blobOptions.*randomness.*invalid/g,
204+
},
205+
// blobOptions.size
206+
{
207+
name: "should accept valid blobOptions size",
208+
edit: (keyframe) => (keyframe.blobOptions.size = 40),
209+
},
210+
{
211+
name: "should reject undefined blobOptions size",
212+
edit: (keyframe) => delete keyframe.blobOptions.size,
213+
error: /blobOptions.*size.*number.*undefined/g,
214+
},
215+
{
216+
name: "should reject broken blobOptions size",
217+
edit: (keyframe) => (keyframe.blobOptions.size = NaN),
218+
error: /blobOptions.*size.*number.*NaN/g,
219+
},
220+
{
221+
name: "should reject negative blobOptions size",
222+
edit: (keyframe) => (keyframe.blobOptions.size = -1),
223+
error: /blobOptions.*size.*invalid/g,
224+
},
225+
// canvasOptions
137226
{
138227
name: "should accept empty canvasOptions",
139228
edit: (keyframe) => (keyframe.canvasOptions = {}),
@@ -144,8 +233,13 @@ describe("animate", () => {
144233
},
145234
{
146235
name: "should reject invalid canvasOptions",
147-
edit: (keyframe) => keyframe.canvasOptions = null as any,
148-
error: /canvasOptions.*object.*null/g
236+
edit: (keyframe) => (keyframe.canvasOptions = null as any),
237+
error: /canvasOptions.*object.*null/g,
238+
},
239+
// canvasOptions.offsetX
240+
{
241+
name: "should accept valid canvasOptions offsetX",
242+
edit: (keyframe) => (keyframe.canvasOptions = {offsetX: 100}),
149243
},
150244
{
151245
name: "should accept undefined canvasOptions offsetX",
@@ -156,6 +250,11 @@ describe("animate", () => {
156250
edit: (keyframe) => (keyframe.canvasOptions = {offsetX: NaN}),
157251
error: /canvasOptions.*offsetX.*number.*NaN/g,
158252
},
253+
// canvasOptions.offsetY
254+
{
255+
name: "should accept valid canvasOptions offsetY",
256+
edit: (keyframe) => (keyframe.canvasOptions = {offsetY: 222}),
257+
},
159258
{
160259
name: "should accept undefined canvasOptions offsetY",
161260
edit: (keyframe) => delete keyframe.canvasOptions?.offsetY,
@@ -205,7 +304,7 @@ describe("animate", () => {
205304
// Run all cases when given more than one frame, asserting on a random one.
206305
const nthLength = 2 + Math.floor(16 * Math.random());
207306
const nthIndex = Math.floor(nthLength * Math.random());
208-
describe("nth", () => runSuite(nthLength, nthIndex));
307+
describe(`nth (${nthIndex + 1}/${nthLength})`, () => runSuite(nthLength, nthIndex));
209308
});
210309
});
211310
});

0 commit comments

Comments
 (0)