| // Copyright (c) 2023, 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. |
| |
| // SharedOptions=-DtestFlag=testValue -DnumFlag=-0xfeed -DboolFlag=false |
| |
| import "package:expect/expect.dart"; |
| |
| // Test that the `fromEnvironment`/`hasEnvironment` constructors |
| // agree between constant and runtime evaluation, |
| // both for platform-library detection entries and for normal entries. |
| |
| main() { |
| // User string entry, const. |
| Expect.isTrue(const bool.hasEnvironment("testFlag")); |
| Expect.equals("testValue", |
| const String.fromEnvironment("testFlag", defaultValue: "nonce")); |
| // User string entry, runtime. |
| Expect.isTrue(bool.hasEnvironment("testFlag")); |
| Expect.equals( |
| "testValue", String.fromEnvironment("testFlag", defaultValue: "nonce")); |
| |
| // User number entry, const. |
| Expect.isTrue(const bool.hasEnvironment("numFlag")); |
| Expect.equals("-0xfeed", const String.fromEnvironment("numFlag")); |
| Expect.equals(-0xfeed, const int.fromEnvironment("numFlag", defaultValue: 4)); |
| // User number entry, runtime. |
| Expect.isTrue(bool.hasEnvironment("numFlag")); |
| Expect.equals("-0xfeed", String.fromEnvironment("numFlag")); |
| Expect.equals(-0xfeed, int.fromEnvironment("numFlag", defaultValue: 4)); |
| |
| // User bool entry, const. |
| Expect.isTrue(const bool.hasEnvironment("boolFlag")); |
| Expect.equals("false", const String.fromEnvironment("boolFlag")); |
| Expect.equals( |
| false, const bool.fromEnvironment("boolFlag", defaultValue: true)); |
| // User bool entry, runtime. |
| Expect.isTrue(bool.hasEnvironment("boolFlag")); |
| Expect.equals("false", String.fromEnvironment("boolFlag")); |
| Expect.equals(false, bool.fromEnvironment("boolFlag", defaultValue: true)); |
| |
| // Missing user entry, const. |
| Expect.isFalse(const bool.hasEnvironment("noEntry")); |
| Expect.equals("", const String.fromEnvironment("noEntry")); |
| Expect.equals( |
| "nonce", const String.fromEnvironment("noEntry", defaultValue: "nonce")); |
| Expect.equals(0, const int.fromEnvironment("noEntry")); |
| Expect.equals(42, const int.fromEnvironment("noEntry", defaultValue: 42)); |
| Expect.isFalse(const bool.fromEnvironment("noEntry")); |
| Expect.isTrue(const bool.fromEnvironment("noEntry", defaultValue: true)); |
| // Missing user entry, runtime. |
| Expect.isFalse(bool.hasEnvironment("noEntry")); |
| Expect.equals("", String.fromEnvironment("noEntry")); |
| Expect.equals( |
| "nonce", String.fromEnvironment("noEntry", defaultValue: "nonce")); |
| Expect.equals(0, int.fromEnvironment("noEntry")); |
| Expect.equals(42, int.fromEnvironment("noEntry", defaultValue: 42)); |
| Expect.isFalse(bool.fromEnvironment("noEntry")); |
| Expect.isTrue(bool.fromEnvironment("noEntry", defaultValue: true)); |
| |
| // General platform library entry, const. |
| Expect.isTrue(const bool.hasEnvironment("dart.library.core")); |
| Expect.equals("true", |
| const String.fromEnvironment("dart.library.core", defaultValue: "nonce")); |
| Expect.isTrue( |
| const bool.fromEnvironment("dart.library.core", defaultValue: false)); |
| // General platform library entry, runtime. |
| Expect.isTrue(bool.hasEnvironment("dart.library.core")); |
| Expect.equals("true", |
| String.fromEnvironment("dart.library.core", defaultValue: "nonce")); |
| Expect.isTrue(bool.fromEnvironment("dart.library.core", defaultValue: false)); |
| |
| // Standalone VM-specific library, const. |
| Expect.isTrue(const bool.hasEnvironment("dart.library.io")); |
| Expect.equals("true", |
| const String.fromEnvironment("dart.library.io", defaultValue: "nonce")); |
| Expect.isTrue( |
| const bool.fromEnvironment("dart.library.io", defaultValue: false)); |
| // Standalone VM-specific library, runtime. |
| Expect.isTrue(bool.hasEnvironment("dart.library.io")); |
| Expect.equals( |
| "true", String.fromEnvironment("dart.library.io", defaultValue: "nonce")); |
| Expect.isTrue(bool.fromEnvironment("dart.library.io", defaultValue: false)); |
| |
| // Web-specific library, not available here, const. |
| Expect.isFalse(const bool.hasEnvironment("dart.library.html")); |
| Expect.equals("", const String.fromEnvironment("dart.library.html")); |
| Expect.equals("nonce", |
| const String.fromEnvironment("dart.library.html", defaultValue: "nonce")); |
| Expect.isFalse(const bool.fromEnvironment("dart.library.html")); |
| Expect.isTrue( |
| const bool.fromEnvironment("dart.library.html", defaultValue: true)); |
| // Web-specific library, not available here, runtime. |
| Expect.isFalse(bool.hasEnvironment("dart.library.html")); |
| Expect.equals("", String.fromEnvironment("dart.library.html")); |
| Expect.equals("nonce", |
| String.fromEnvironment("dart.library.html", defaultValue: "nonce")); |
| Expect.isFalse(bool.fromEnvironment("dart.library.html")); |
| Expect.isTrue(bool.fromEnvironment("dart.library.html", defaultValue: true)); |
| |
| // Non-existing library, const. |
| Expect.isFalse(const bool.hasEnvironment("dart.library.not")); |
| Expect.equals("", const String.fromEnvironment("dart.library.not")); |
| Expect.equals("nonce", |
| const String.fromEnvironment("dart.library.not", defaultValue: "nonce")); |
| Expect.isFalse(const bool.fromEnvironment("dart.library.not")); |
| Expect.isTrue( |
| const bool.fromEnvironment("dart.library.not", defaultValue: true)); |
| // Non-existing library, runtime. |
| Expect.isFalse(bool.hasEnvironment("dart.library.not")); |
| Expect.equals("", String.fromEnvironment("dart.library.not")); |
| Expect.equals("nonce", |
| String.fromEnvironment("dart.library.not", defaultValue: "nonce")); |
| Expect.isFalse(bool.fromEnvironment("dart.library.not")); |
| Expect.isTrue(bool.fromEnvironment("dart.library.not", defaultValue: true)); |
| } |