feat: Add response delay generator to mock_server

This commit is contained in:
Anton Stubenbord
2023-05-29 12:19:34 +02:00
parent 886b82df9e
commit f46ae73f49
4 changed files with 102 additions and 39 deletions

View File

@@ -0,0 +1,46 @@
import 'dart:math';
abstract interface class DelayGenerator {
Duration nextDelay();
}
class RandomDelayGenerator implements DelayGenerator {
/// Minimum allowed response delay
final Duration minDelay;
/// Maximum allowed response delay
final Duration maxDelay;
final Random _random = Random();
RandomDelayGenerator(this.minDelay, this.maxDelay);
@override
Duration nextDelay() {
return Duration(
milliseconds: minDelay.inMilliseconds +
_random.nextInt(
maxDelay.inMilliseconds - minDelay.inMilliseconds,
),
);
}
}
class ConstantDelayGenerator implements DelayGenerator {
final Duration delay;
const ConstantDelayGenerator(this.delay);
@override
Duration nextDelay() {
return delay;
}
}
class ZeroDelayGenerator implements DelayGenerator {
const ZeroDelayGenerator();
@override
Duration nextDelay() {
return Duration.zero;
}
}