flutter/packages/flutter_tools/test/context_test.dart
Todd Volkert 622e4396c9 Add tests for nested contexts (#7197)
This tests against the failure that was fixed in #7189
2016-12-08 09:39:32 -08:00

81 lines
2.4 KiB
Dart

// Copyright 2016 The Chromium 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/base/context.dart' hide context;
import 'package:flutter_tools/src/base/logger.dart';
import 'package:flutter_tools/src/globals.dart';
import 'package:test/test.dart';
void main() {
group('AppContext', () {
test('error', () async {
AppContext context = new AppContext();
BufferLogger mockLogger = new BufferLogger();
context.setVariable(Logger, mockLogger);
await context.runInZone(() {
printError('foo bar');
});
expect(mockLogger.errorText, 'foo bar\n');
expect(mockLogger.statusText, '');
expect(mockLogger.traceText, '');
});
test('status', () async {
AppContext context = new AppContext();
BufferLogger mockLogger = new BufferLogger();
context.setVariable(Logger, mockLogger);
await context.runInZone(() {
printStatus('foo bar');
});
expect(mockLogger.errorText, '');
expect(mockLogger.statusText, 'foo bar\n');
expect(mockLogger.traceText, '');
});
test('trace', () async {
AppContext context = new AppContext();
BufferLogger mockLogger = new BufferLogger();
context.setVariable(Logger, mockLogger);
await context.runInZone(() {
printTrace('foo bar');
});
expect(mockLogger.errorText, '');
expect(mockLogger.statusText, '');
expect(mockLogger.traceText, 'foo bar\n');
});
test('awaitNestedZones', () async {
AppContext outerContext = new AppContext();
await outerContext.runInZone(() async {
AppContext middleContext = new AppContext();
await middleContext.runInZone(() async {
AppContext innerContext = new AppContext();
await innerContext.runInZone(() async {
expect(innerContext.getVariable(String), isNull);
});
});
});
});
test('fireAndForgetNestedZones', () async {
AppContext outerContext = new AppContext();
outerContext.runInZone(() async {
AppContext middleContext = new AppContext();
middleContext.runInZone(() async {
AppContext innerContext = new AppContext();
innerContext.runInZone(() async {
expect(innerContext.getVariable(String), isNull);
});
});
});
});
});
}