blob: d1582867c093e21d120b61a60d3eb8f1bcd43f00 [file] [log] [blame]
// Copyright 2014 The Flutter Authors. 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:flutter_tools/src/test/test_time_recorder.dart';
import '../../src/common.dart';
import '../../src/fakes.dart';
import '../../src/logging_logger.dart';
void main() {
testWithoutContext('Test phases prints correctly', () {
const Duration zero = Duration.zero;
const Duration combinedDuration = Duration(seconds: 42);
const Duration wallClockDuration = Duration(seconds: 21);
for (final TestTimePhases phase in TestTimePhases.values) {
final TestTimeRecorder recorder = createRecorderWithTimesForPhase(
phase, combinedDuration, wallClockDuration);
final Set<String> prints = recorder.getPrintAsListForTesting().toSet();
// Expect one entry per phase.
expect(prints, hasLength(TestTimePhases.values.length));
// Expect this phase to have the specified times.
expect(
prints,
contains('Runtime for phase ${phase.name}: '
'Wall-clock: $wallClockDuration; combined: $combinedDuration.'),
);
// Expect all other phases to say 0.
for (final TestTimePhases innerPhase in TestTimePhases.values) {
if (phase == innerPhase) {
continue;
}
expect(
prints,
contains('Runtime for phase ${innerPhase.name}: '
'Wall-clock: $zero; combined: $zero.'),
);
}
}
});
}
TestTimeRecorder createRecorderWithTimesForPhase(TestTimePhases phase,
Duration combinedDuration, Duration wallClockDuration) {
final LoggingLogger logger = LoggingLogger();
final TestTimeRecorder recorder =
TestTimeRecorder(logger, stopwatchFactory: FakeStopwatchFactory());
final FakeStopwatch combinedStopwatch =
recorder.start(phase) as FakeStopwatch;
final FakeStopwatch wallClockStopwatch =
recorder.getPhaseWallClockStopwatchForTesting(phase) as FakeStopwatch;
wallClockStopwatch.elapsed = wallClockDuration;
combinedStopwatch.elapsed = combinedDuration;
recorder.stop(phase, combinedStopwatch);
return recorder;
}