Files
sdk/tests/language/deferred/global_test.dart
T
Robert Nystrom fd3882091c Migrate language_2/deferred to NNBD.
Change-Id: I6c936a9ad34befccf1b6775d7c9bdc621995a96f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142280
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
2020-04-03 20:04:47 +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 "global_lib.dart" deferred as lib;
Object? 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();
});
});
}