|  | // Copyright (c) 2024, 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:test/test.dart'; | 
|  |  | 
|  | import '../shared_test_options.dart'; | 
|  | import 'expression_compiler_e2e_suite.dart'; | 
|  |  | 
|  | void runTests( | 
|  | ExpressionEvaluationTestDriver driver, | 
|  | SetupCompilerOptions setup, | 
|  | ) { | 
|  | group('Asserts', () { | 
|  | const source = r''' | 
|  | void main() { | 
|  | var b = const bool.fromEnvironment('dart.web.assertions_enabled'); | 
|  |  | 
|  | // Breakpoint: bp | 
|  | print('hello world'); | 
|  | } | 
|  | int myAssert() { | 
|  | assert(false); | 
|  | return 0; | 
|  | } | 
|  | '''; | 
|  |  | 
|  | setUpAll(() => driver.initSource(setup, source)); | 
|  | tearDownAll(() async { | 
|  | await driver.cleanupTest(); | 
|  | await driver.finish(); | 
|  | }); | 
|  |  | 
|  | if (setup.enableAsserts) { | 
|  | group('enabled |', () { | 
|  | test('dart.web.assertions_enabled is set', () async { | 
|  | await driver.checkInFrame( | 
|  | breakpointId: 'bp', | 
|  | expression: 'b', | 
|  | expectedResult: 'true', | 
|  | ); | 
|  | }); | 
|  |  | 
|  | test('assert errors in the source code', () async { | 
|  | await driver.checkInFrame( | 
|  | breakpointId: 'bp', | 
|  | expression: 'myAssert()', | 
|  | expectedError: allOf( | 
|  | contains('Error: Assertion failed:'), | 
|  | contains('test.dart:8:16'), | 
|  | contains('false'), | 
|  | contains('is not true'), | 
|  | ), | 
|  | ); | 
|  | }); | 
|  | test('assert errors in evaluated expression', () async { | 
|  | await driver.checkInFrame( | 
|  | breakpointId: 'bp', | 
|  | expression: '() { assert(false); return 0; } ()', | 
|  | expectedError: allOf( | 
|  | contains('Error: Assertion failed:'), | 
|  | contains('org-dartlang-debug:synthetic_debug_expression:1:13'), | 
|  | contains('false'), | 
|  | contains('is not true'), | 
|  | ), | 
|  | ); | 
|  | }); | 
|  | }); | 
|  | } | 
|  |  | 
|  | if (!setup.enableAsserts) { | 
|  | group('disabled |', () { | 
|  | test('dart.web.assertions_enabled is not set', () async { | 
|  | await driver.checkInFrame( | 
|  | breakpointId: 'bp', | 
|  | expression: 'b', | 
|  | expectedResult: 'false', | 
|  | ); | 
|  | }); | 
|  |  | 
|  | test('no assert errors in the source code', () async { | 
|  | await driver.checkInFrame( | 
|  | breakpointId: 'bp', | 
|  | expression: 'myAssert()', | 
|  | expectedResult: '0', | 
|  | ); | 
|  | }); | 
|  |  | 
|  | test('no assert errors in evaluated expression', () async { | 
|  | await driver.checkInFrame( | 
|  | breakpointId: 'bp', | 
|  | expression: '() { assert(false); return 0; } ()', | 
|  | expectedResult: '0', | 
|  | ); | 
|  | }); | 
|  | }); | 
|  | } | 
|  | }); | 
|  | } |