diff --git a/packages/stream_chat/test/src/ws/timer_helper_test.dart b/packages/stream_chat/test/src/ws/timer_helper_test.dart new file mode 100644 index 00000000..ecafd6d2 --- /dev/null +++ b/packages/stream_chat/test/src/ws/timer_helper_test.dart @@ -0,0 +1,98 @@ +import 'package:stream_chat/src/ws/timer_helper.dart'; +import 'package:test/test.dart'; + +void main() { + late TimerHelper timerHelper; + + setUp(() { + timerHelper = TimerHelper(); + }); + + tearDown(() { + timerHelper.cancelAllTimers(); + }); + + test('setTimer', () async { + expect(timerHelper.hasTimers, isFalse); + + var count = 0; + void callback() => count += 1; + + timerHelper.setTimer( + const Duration(milliseconds: 500), + callback, + ); + + expect(count, 0); + await Future.delayed(const Duration(milliseconds: 500)); + expect(count, 1); + + expect(timerHelper.hasTimers, isTrue); + }); + + test('setImmediateTimer', () async { + var count = 0; + void callback() => count += 1; + + timerHelper.setTimer( + const Duration(milliseconds: 500), + callback, + immediate: true, + ); + + expect(count, 1); + await Future.delayed(const Duration(milliseconds: 500)); + expect(count, 2); + }); + + test('setPeriodicTimer', () async { + expect(timerHelper.hasTimers, isFalse); + var count = 0; + void callback() => count += 1; + + timerHelper.setTimer( + const Duration(milliseconds: 500), + callback, + ); + + expect(count, 0); + await Future.delayed(const Duration(milliseconds: 500)); + expect(count, 1); + + expect(timerHelper.hasTimers, isTrue); + }); + + test('setImmediatePeriodicTimer', () async { + var count = 0; + void callback(_) => count += 1; + + timerHelper.setPeriodicTimer( + const Duration(milliseconds: 500), + callback, + immediate: true, + ); + + expect(count, 1); + await Future.delayed(const Duration(milliseconds: 500)); + expect(count, 2); + }); + + test('cancelTimer', () { + expect(timerHelper.hasTimers, isFalse); + final id = timerHelper.setTimer(const Duration(seconds: 3), () {}); + expect(timerHelper.hasTimers, isTrue); + timerHelper.cancelTimer(id); + expect(timerHelper.hasTimers, isFalse); + }); + + test('cancelAllTimers', () { + expect(timerHelper.hasTimers, isFalse); + timerHelper + ..setTimer(const Duration(seconds: 3), () {}) + ..setTimer(const Duration(seconds: 6), () {}) + ..setTimer(const Duration(seconds: 9), () {}); + expect(timerHelper.hasTimers, isTrue); + timerHelper.cancelAllTimers(); + expect(timerHelper.hasTimers, isFalse); + }); +}