Skip to content

Commit f0119a8

Browse files
mattco98awesomekling
authored andcommitted
LibWeb: Add animation-effect method tests
1 parent e298e8a commit f0119a8

File tree

6 files changed

+170
-0
lines changed

6 files changed

+170
-0
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
num properties: 13
2+
delay: 10
3+
endDelay: 20
4+
fill: forwards
5+
iterationStart: 30
6+
iterations: 40
7+
duration: 50
8+
direction: normal
9+
easing: linear
10+
endTime: 2030
11+
activeDuration: 2000
12+
localTime: 0
13+
progress: null
14+
currentIteration: null
15+
16+
localTime: 1200
17+
progress: 0.20
18+
currentIteration: 1
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
num properties: 8
2+
delay: 10
3+
endDelay: 20
4+
fill: forwards
5+
iterationStart: 30
6+
iterations: 40
7+
duration: 50
8+
direction: alternate-reverse
9+
easing: linear
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
num properties: 8
2+
delay: 10
3+
endDelay: 20
4+
fill: forwards
5+
iterationStart: 30
6+
iterations: 40
7+
duration: 50
8+
direction: alternate-reverse
9+
easing: linear
10+
updateTiming() throws if it receives a negative iterationStart value
11+
updateTiming() throws if it receives a negative iterations value
12+
updateTiming() throws if it receives a NaN iterations value
13+
updateTiming() throws if it receives a negative duration value
14+
updateTiming() throws if it receives a NaN duration value
15+
updateTiming() throws if it receives an invalid easing function value
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<!DOCTYPE html>
2+
<div id="foo"></div>
3+
<script src="../../include.js"></script>
4+
<script>
5+
const foo = document.getElementById("foo");
6+
7+
promiseTest(async () => {
8+
const timeline = internals.createInternalAnimationTimeline();
9+
let anim = foo.animate({}, {
10+
delay: 10,
11+
endDelay: 20,
12+
fill: "forwards",
13+
iterationStart: 30,
14+
iterations: 40,
15+
duration: 50,
16+
direction: "normal",
17+
easing: "linear",
18+
timeline,
19+
});
20+
21+
await animationFrame();
22+
let timing = anim.effect.getComputedTiming();
23+
println(`num properties: ${Object.getOwnPropertyNames(timing).length}`);
24+
println(`delay: ${timing.delay}`);
25+
println(`endDelay: ${timing.endDelay}`);
26+
println(`fill: ${timing.fill}`);
27+
println(`iterationStart: ${timing.iterationStart}`);
28+
println(`iterations: ${timing.iterations}`);
29+
println(`duration: ${timing.duration}`);
30+
println(`direction: ${timing.direction}`);
31+
println(`easing: ${timing.easing}`);
32+
println(`endTime: ${timing.endTime}`);
33+
println(`activeDuration: ${timing.activeDuration}`);
34+
println(`localTime: ${timing.localTime}`);
35+
println(`progress: ${timing.progress}`);
36+
println(`currentIteration: ${timing.currentIteration}`);
37+
38+
// Test with some progress
39+
anim = foo.animate({}, {
40+
duration: 1000,
41+
iterations: 3,
42+
timeline,
43+
});
44+
timeline.setTime(1200);
45+
await animationFrame();
46+
timing = anim.effect.getComputedTiming();
47+
println("");
48+
println(`localTime: ${timing.localTime}`);
49+
println(`progress: ${timing.progress.toFixed(2)}`);
50+
println(`currentIteration: ${timing.currentIteration}`);
51+
});
52+
</script>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<!DOCTYPE html>
2+
<div id="foo"></div>
3+
<script src="../../include.js"></script>
4+
<script>
5+
const foo = document.getElementById("foo");
6+
7+
test(() => {
8+
const anim = foo.animate({}, {
9+
delay: 10,
10+
endDelay: 20,
11+
fill: "forwards",
12+
iterationStart: 30,
13+
iterations: 40,
14+
duration: 50,
15+
direction: "alternate-reverse",
16+
easing: "linear",
17+
});
18+
19+
const timing = anim.effect.getTiming();
20+
println(`num properties: ${Object.getOwnPropertyNames(timing).length}`);
21+
println(`delay: ${timing.delay}`);
22+
println(`endDelay: ${timing.endDelay}`);
23+
println(`fill: ${timing.fill}`);
24+
println(`iterationStart: ${timing.iterationStart}`);
25+
println(`iterations: ${timing.iterations}`);
26+
println(`duration: ${timing.duration}`);
27+
println(`direction: ${timing.direction}`);
28+
println(`easing: ${timing.easing}`);
29+
});
30+
</script>
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<!DOCTYPE html>
2+
<div id="foo"></div>
3+
<script src="../../include.js"></script>
4+
<script>
5+
const foo = document.getElementById("foo");
6+
7+
test(() => {
8+
const anim = foo.animate({}, {});
9+
anim.effect.updateTiming({
10+
delay: 10,
11+
endDelay: 20,
12+
fill: "forwards",
13+
iterationStart: 30,
14+
iterations: 40,
15+
duration: 50,
16+
direction: "alternate-reverse",
17+
easing: "linear",
18+
});
19+
20+
const timing = anim.effect.getTiming();
21+
println(`num properties: ${Object.getOwnPropertyNames(timing).length}`);
22+
println(`delay: ${timing.delay}`);
23+
println(`endDelay: ${timing.endDelay}`);
24+
println(`fill: ${timing.fill}`);
25+
println(`iterationStart: ${timing.iterationStart}`);
26+
println(`iterations: ${timing.iterations}`);
27+
println(`duration: ${timing.duration}`);
28+
println(`direction: ${timing.direction}`);
29+
println(`easing: ${timing.easing}`);
30+
31+
function expectThrows(obj, message) {
32+
try {
33+
anim.updateTiming(obj);
34+
} catch {
35+
println(message);
36+
}
37+
}
38+
39+
expectThrows({ iterationStart: -10 }, "updateTiming() throws if it receives a negative iterationStart value");
40+
expectThrows({ iterations: -10 }, "updateTiming() throws if it receives a negative iterations value");
41+
expectThrows({ iterations: NaN }, "updateTiming() throws if it receives a NaN iterations value");
42+
expectThrows({ duration: -10 }, "updateTiming() throws if it receives a negative duration value");
43+
expectThrows({ duration: NaN }, "updateTiming() throws if it receives a NaN duration value");
44+
expectThrows({ easing: "abcd" }, "updateTiming() throws if it receives an invalid easing function value");
45+
});
46+
</script>

0 commit comments

Comments
 (0)