blob: fdfd61184546008a30018f71fef3fc75e27de091 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:test/test.dart';
void main() {
group('Timeout.parse', () {
group('for "none"', () {
test('successfully parses', () {
expect(Timeout.parse('none'), equals(Timeout.none));
});
test('rejects invalid input', () {
expect(() => Timeout.parse(' none'), throwsFormatException);
expect(() => Timeout.parse('none '), throwsFormatException);
expect(() => Timeout.parse('xnone'), throwsFormatException);
expect(() => Timeout.parse('nonex'), throwsFormatException);
expect(() => Timeout.parse('noxe'), throwsFormatException);
});
});
group('for a relative timeout', () {
test('successfully parses', () {
expect(Timeout.parse('1x'), equals(const Timeout.factor(1)));
expect(Timeout.parse('2.5x'), equals(const Timeout.factor(2.5)));
expect(Timeout.parse('1.2e3x'), equals(const Timeout.factor(1.2e3)));
});
test('rejects invalid input', () {
expect(() => Timeout.parse('.x'), throwsFormatException);
expect(() => Timeout.parse('x'), throwsFormatException);
expect(() => Timeout.parse('ax'), throwsFormatException);
expect(() => Timeout.parse('1x '), throwsFormatException);
expect(() => Timeout.parse('1x5m'), throwsFormatException);
});
});
group('for an absolute timeout', () {
test('successfully parses all supported units', () {
expect(Timeout.parse('2d'), equals(const Timeout(Duration(days: 2))));
expect(Timeout.parse('2h'), equals(const Timeout(Duration(hours: 2))));
expect(
Timeout.parse('2m'), equals(const Timeout(Duration(minutes: 2))));
expect(
Timeout.parse('2s'), equals(const Timeout(Duration(seconds: 2))));
expect(Timeout.parse('2ms'),
equals(const Timeout(Duration(milliseconds: 2))));
expect(Timeout.parse('2us'),
equals(const Timeout(Duration(microseconds: 2))));
});
test('supports non-integer units', () {
expect(Timeout.parse('2.73d'),
equals(Timeout(const Duration(days: 1) * 2.73)));
});
test('supports multiple units', () {
expect(
Timeout.parse('1d 2h3m 4s5ms\t6us'),
equals(const Timeout(Duration(
days: 1,
hours: 2,
minutes: 3,
seconds: 4,
milliseconds: 5,
microseconds: 6))));
});
test('rejects invalid input', () {
expect(() => Timeout.parse('.d'), throwsFormatException);
expect(() => Timeout.parse('d'), throwsFormatException);
expect(() => Timeout.parse('ad'), throwsFormatException);
expect(() => Timeout.parse('1z'), throwsFormatException);
expect(() => Timeout.parse('1u'), throwsFormatException);
expect(() => Timeout.parse('1d5x'), throwsFormatException);
expect(() => Timeout.parse('1d*5m'), throwsFormatException);
});
});
});
}