blob: 660e4d367abcda5dd070d2a5675046dd361316c8 [file] [log] [blame]
// Copyright (c) 2020, 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:args/args.dart';
import 'package:test/test.dart';
void main() {
group('ArgParser.parse()', () {
test('is fast', () {
var parser = ArgParser()..addFlag('flag');
var baseSize = 10000;
var baseList = List<String>.generate(baseSize, (_) => '--flag');
var multiplier = 10;
var largeList =
List<String>.generate(baseSize * multiplier, (_) => '--flag');
var baseTime = _time(() => parser.parse(baseList));
var largeTime = _time(() => parser.parse(largeList));
expect(largeTime, lessThan(baseTime * multiplier * 3),
reason:
'Comparing large data set time ${largeTime}ms to small data set time '
'${baseTime}ms. Data set increased ${multiplier}x, time is allowed to '
'increase up to ${multiplier * 3}x, but it increased '
'${largeTime ~/ baseTime}x.');
});
});
}
int _time(void Function() function) {
var stopwatch = Stopwatch()..start();
function();
return stopwatch.elapsedMilliseconds;
}