| // 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/context.dart' as pkg; |
| 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 { |
| final AppContext context = new AppContext(); |
| final 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 { |
| final AppContext context = new AppContext(); |
| final 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 { |
| final AppContext context = new AppContext(); |
| final 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 { |
| final AppContext outerContext = new AppContext(); |
| await outerContext.runInZone(() async { |
| final AppContext middleContext = new AppContext(); |
| await middleContext.runInZone(() async { |
| final AppContext innerContext = new AppContext(); |
| await innerContext.runInZone(() async { |
| expect(innerContext.getVariable(String), isNull); |
| }); |
| }); |
| }); |
| }); |
| |
| test('fireAndForgetNestedZones', () async { |
| final AppContext outerContext = new AppContext(); |
| outerContext.runInZone(() async { |
| final AppContext middleContext = new AppContext(); |
| middleContext.runInZone(() async { |
| final AppContext innerContext = new AppContext(); |
| innerContext.runInZone(() async { |
| expect(innerContext.getVariable(String), isNull); |
| }); |
| }); |
| }); |
| }); |
| |
| test('overriddenValuesInNestedZones', () async { |
| expect(pkg.context, isNull); |
| final AppContext outerContext = new AppContext(); |
| outerContext.setVariable(String, 'outer'); |
| outerContext.runInZone(() async { |
| expect(pkg.context[String], 'outer'); |
| final AppContext middleContext = new AppContext(); |
| middleContext.setVariable(String, 'middle'); |
| middleContext.runInZone(() async { |
| expect(pkg.context[String], 'middle'); |
| final AppContext innerContext = new AppContext(); |
| innerContext.setVariable(String, 'inner'); |
| innerContext.runInZone(() async { |
| expect(pkg.context[String], 'inner'); |
| }); |
| expect(pkg.context[String], 'middle'); |
| }); |
| expect(pkg.context[String], 'outer'); |
| }); |
| }); |
| }); |
| } |