// 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'); }); }); }); }