aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorRblSb <msrblsb@gmail.com>2020-04-03 04:48:36 +0300
committerRblSb <msrblsb@gmail.com>2020-04-03 04:48:36 +0300
commit5f2a3b89eaa1199d9bc2ddd10622f9803cec983f (patch)
treeee9064ee7b683cfe2ac7b504ba81674b490367b6 /test
parent62c9be74228549ff888b684a62f77fb056571470 (diff)
Sync playback rate
Diffstat (limited to 'test')
-rw-r--r--test/Main.hx15
-rw-r--r--test/tests/TestTimer.hx163
2 files changed, 178 insertions, 0 deletions
diff --git a/test/Main.hx b/test/Main.hx
new file mode 100644
index 0000000..d2ea286
--- /dev/null
+++ b/test/Main.hx
@@ -0,0 +1,15 @@
+package;
+
+import utest.Runner;
+import utest.ui.Report;
+
+class Main {
+
+ static function main() {
+ final runner = new Runner();
+ runner.addCases(test.tests);
+ Report.create(runner);
+ runner.run();
+ }
+
+}
diff --git a/test/tests/TestTimer.hx b/test/tests/TestTimer.hx
new file mode 100644
index 0000000..9403b75
--- /dev/null
+++ b/test/tests/TestTimer.hx
@@ -0,0 +1,163 @@
+package test.tests;
+
+import haxe.PosInfos;
+import utest.Assert;
+import haxe.Timer;
+import server.VideoTimer;
+
+class TestTimer extends utest.Test {
+
+ @:timeout(500)
+ function testMain(async:utest.Async) {
+ final timer = new VideoTimer();
+ timer.start();
+ Timer.delay(() -> {
+ almostEq(0.1, timer.getTime());
+ timer.setTime(1);
+ almostEq(1, timer.getTime());
+ }, 100);
+ Timer.delay(() -> {
+ almostEq(1.1, timer.getTime());
+ timer.setTime(0.1);
+ almostEq(0.1, timer.getTime());
+ }, 200);
+ Timer.delay(() -> {
+ almostEq(0.2, timer.getTime());
+ Assert.equals(false, timer.isPaused());
+ Assert.equals(true, timer.isStarted);
+ timer.stop();
+ Assert.equals(0, timer.getTime());
+ Assert.equals(true, timer.isPaused());
+ Assert.equals(false, timer.isStarted);
+ async.done();
+ }, 300);
+ }
+
+ @:timeout(500)
+ function testRate(async:utest.Async) {
+ final timer = new VideoTimer();
+ timer.start();
+ timer.setRate(2);
+ almostEq(0, timer.getTime());
+ Timer.delay(() -> {
+ almostEq(0.2, timer.getTime());
+ timer.setRate(1);
+ almostEq(0.2, timer.getTime());
+ }, 100);
+ Timer.delay(() -> {
+ almostEq(0.3, timer.getTime());
+ timer.setRate(2);
+ almostEq(0.3, timer.getTime());
+ }, 200);
+ Timer.delay(() -> {
+ almostEq(0.5, timer.getTime());
+ timer.pause();
+ almostEq(0.5, timer.getTime());
+ Assert.equals(true, timer.isPaused());
+ Assert.equals(true, timer.isStarted);
+ }, 300);
+ Timer.delay(() -> {
+ almostEq(0.5, timer.getTime());
+ Assert.equals(true, timer.isPaused());
+ Assert.equals(true, timer.isStarted);
+ async.done();
+ }, 400);
+ }
+
+ @:timeout(500)
+ function testRatePause(async:utest.Async) {
+ final timer = new VideoTimer();
+ timer.start();
+ timer.setRate(2);
+ timer.setTime(1);
+ almostEq(1, timer.getTime());
+ Timer.delay(() -> {
+ almostEq(1.2, timer.getTime());
+ timer.pause();
+ almostEq(1.2, timer.getTime());
+ }, 100);
+ Timer.delay(() -> {
+ almostEq(1.2, timer.getTime());
+ timer.play();
+ almostEq(1.2, timer.getTime());
+ }, 200);
+ Timer.delay(() -> {
+ almostEq(1.4, timer.getTime());
+ timer.pause();
+ almostEq(1.4, timer.getTime());
+ timer.setRate(3);
+ }, 300);
+ Timer.delay(() -> {
+ almostEq(1.4, timer.getTime());
+ timer.play();
+ almostEq(1.4, timer.getTime());
+ timer.setRate(1);
+ almostEq(1.4, timer.getTime());
+ async.done();
+ }, 400);
+ }
+
+ @:timeout(500)
+ function testPauseRate(async:utest.Async) {
+ final timer = new VideoTimer();
+ timer.start();
+ timer.setTime(100);
+ timer.pause();
+ Timer.delay(() -> {
+ almostEq(100, timer.getTime());
+ timer.setRate(2);
+ almostEq(100, timer.getTime());
+ }, 100);
+ Timer.delay(() -> {
+ almostEq(100, timer.getTime());
+ timer.setRate(1);
+ almostEq(100, timer.getTime());
+ }, 200);
+ Timer.delay(() -> {
+ almostEq(100, timer.getTime());
+ timer.setRate(2);
+ almostEq(100, timer.getTime());
+ timer.play();
+ almostEq(100, timer.getTime());
+ }, 300);
+ Timer.delay(() -> {
+ almostEq(100.2, timer.getTime());
+ timer.setRate(1);
+ almostEq(100.2, timer.getTime());
+ async.done();
+ }, 400);
+ }
+
+ @:timeout(500)
+ function testBigRate(async:utest.Async) {
+ final timer = new VideoTimer();
+ timer.start();
+ timer.setRate(3);
+ timer.setTime(10);
+ almostEq(10, timer.getTime());
+ Timer.delay(() -> {
+ almostEq(10.3, timer.getTime());
+ }, 100);
+ Timer.delay(() -> {
+ almostEq(10.6, timer.getTime());
+ timer.pause();
+ almostEq(10.6, timer.getTime());
+ }, 200);
+ Timer.delay(() -> {
+ almostEq(10.6, timer.getTime());
+ timer.play();
+ almostEq(10.6, timer.getTime());
+ }, 300);
+ Timer.delay(() -> {
+ almostEq(10.9, timer.getTime());
+ timer.setRate(1);
+ almostEq(10.9, timer.getTime());
+ async.done();
+ }, 400);
+ }
+
+ function almostEq(a:Float, b:Float, ?p:PosInfos):Void {
+ Assert.equals(Math.round(a * 10) / 10, Math.round(b * 10) / 10, p);
+ }
+
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage