dart-sdk/tests/language_2/deferred_global_test.dart
Ben Konyi 30dde80447 Migrated test block 57 to Dart 2.0.
Bug:
Change-Id: I4b6845b0539fc5b8bb7118d6e920685afb0b3edc
Reviewed-on: https://dart-review.googlesource.com/5342
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Jennifer Messerly <jmesserly@google.com>
2017-09-13 18:08:58 +00:00

61 lines
2.7 KiB
Dart

// Copyright (c) 2014, 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:expect/expect.dart';
import 'package:async_helper/async_helper.dart';
import "deferred_global_lib.dart" deferred as lib;
var nonDeferredGlobal = const {};
void main() {
nonDeferredGlobal = null;
asyncStart();
lib.loadLibrary().then((_) {
// Ensure non-deferred globals are not reset when loading a deferred
// library.
Expect.equals(null, nonDeferredGlobal);
Expect.equals("finalConstGlobal", lib.finalConstGlobal);
Expect.equals(0, lib.sideEffectCounter);
Expect.equals("finalNonConstGlobal", lib.finalNonConstGlobal);
Expect.equals(1, lib.sideEffectCounter);
Expect.equals("finalConstGlobal", lib.finalConstGlobal);
Expect.equals("finalNonConstGlobal", lib.finalNonConstGlobal);
Expect.equals("lazyConstGlobal", lib.lazyConstGlobal);
Expect.equals(1, lib.sideEffectCounter);
Expect.equals("lazyNonConstGlobal", lib.lazyNonConstGlobal);
Expect.equals(2, lib.sideEffectCounter);
Expect.equals("finalConstGlobal", lib.readFinalConstGlobal());
Expect.equals("finalNonConstGlobal", lib.readFinalNonConstGlobal());
Expect.equals("lazyConstGlobal", lib.readLazyConstGlobal());
Expect.equals("lazyNonConstGlobal", lib.readLazyNonConstGlobal());
lib.lazyConstGlobal = "lazyConstGlobal_mutated";
lib.lazyNonConstGlobal = "lazyNonConstGlobal_mutated";
Expect.equals("lazyConstGlobal_mutated", lib.lazyConstGlobal);
Expect.equals("lazyNonConstGlobal_mutated", lib.lazyNonConstGlobal);
Expect.equals("lazyConstGlobal_mutated", lib.readLazyConstGlobal());
Expect.equals("lazyNonConstGlobal_mutated", lib.readLazyNonConstGlobal());
Expect.equals(2, lib.sideEffectCounter);
lib.writeLazyConstGlobal("lazyConstGlobal_mutated2");
lib.writeLazyNonConstGlobal("lazyNonConstGlobal_mutated2");
Expect.equals("lazyConstGlobal_mutated2", lib.lazyConstGlobal);
Expect.equals("lazyNonConstGlobal_mutated2", lib.lazyNonConstGlobal);
Expect.equals("lazyConstGlobal_mutated2", lib.readLazyConstGlobal());
Expect.equals("lazyNonConstGlobal_mutated2", lib.readLazyNonConstGlobal());
Expect.mapEquals({}, lib.lazyConstGlobal2);
lib.const1Global = const {'foo': 'bar'};
Expect.equals(2, lib.sideEffectCounter);
Expect.equals(const {'foo': 'bar'}['foo'], lib.const1Global['foo']);
// Try loading the deferred library again, should not reset the globals.
lib.loadLibrary().then((_) {
Expect.equals(const {'foo': 'bar'}['foo'], lib.const1Global['foo']);
asyncEnd();
});
});
}