// Copyright (c) 2021, 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 // @dart = 2.9 import 'dart:ffi'; import "package:expect/expect.dart"; import 'dylib_utils.dart'; // Reuse struct definitions. import 'function_structs_by_value_generated_test.dart'; void main() { testSizeOfC(); testSizeOfDart(); } final ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions"); final sizeOfStruct3BytesPackedInt = ffiTestFunctions.lookupFunction( "SizeOfStruct3BytesPackedInt"); void testSizeOfC() { Expect.equals(3, sizeOfStruct3BytesPackedInt()); } void testSizeOfDart() { // No packing needed to get to 3 bytes. Expect.equals(3, sizeOf()); // Contents 3 bytes, but alignment forces it to be 4 bytes. Expect.equals(4, sizeOf()); // Alignment gets the same content back to 3 bytes. Expect.equals(3, sizeOf()); }