diff options
| author | RblSb <msrblsb@gmail.com> | 2020-04-03 04:48:36 +0300 |
|---|---|---|
| committer | RblSb <msrblsb@gmail.com> | 2020-04-03 04:48:36 +0300 |
| commit | 5f2a3b89eaa1199d9bc2ddd10622f9803cec983f (patch) | |
| tree | ee9064ee7b683cfe2ac7b504ba81674b490367b6 /test/tests/TestTimer.hx | |
| parent | 62c9be74228549ff888b684a62f77fb056571470 (diff) | |
Sync playback rate
Diffstat (limited to 'test/tests/TestTimer.hx')
| -rw-r--r-- | test/tests/TestTimer.hx | 163 |
1 files changed, 163 insertions, 0 deletions
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); + } + +} |
