| // 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. |
| // |
| // SharedObjects=ffi_test_functions |
| |
| import 'dart:ffi'; |
| |
| import 'package:expect/expect.dart'; |
| |
| import 'dylib_utils.dart'; |
| |
| void main() { |
| testClose(); |
| testUnclosable(); |
| } |
| |
| void testClose() { |
| final lib = dlopenPlatformSpecific("ffi_test_functions"); |
| lib.lookup('ReturnMaxUint8'); |
| |
| lib.close(); |
| Expect.throwsStateError( |
| () => lib.lookup('ReturnMaxUint8'), 'Illegal lookup in closed library'); |
| lib.close(); // Duplicate close should not crash. |
| } |
| |
| void testUnclosable() { |
| final proc = DynamicLibrary.process(); |
| final exec = DynamicLibrary.executable(); |
| |
| Expect.throwsStateError(proc.close); |
| Expect.throwsStateError(exec.close); |
| } |