From 5f2a3b89eaa1199d9bc2ddd10622f9803cec983f Mon Sep 17 00:00:00 2001 From: RblSb Date: Fri, 3 Apr 2020 04:48:36 +0300 Subject: Sync playback rate --- test/tests/TestTimer.hx | 163 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 test/tests/TestTimer.hx (limited to 'test/tests') 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); + } + +} -- cgit v1.2.3