// 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. // // This file has been automatically generated. Please do not edit it manually. // Generated by tests/ffi/generator/address_of_test_generator.dart. // // SharedObjects=ffi_test_functions // VMOptions= // VMOptions=--deterministic --optimization-counter-threshold=90 // VMOptions=--use-slow-path // VMOptions=--use-slow-path --stacktrace-every=100 // ignore_for_file: unused_import import 'dart:ffi'; import 'dart:typed_data'; import 'package:expect/expect.dart'; import 'address_of_generated_shared.dart'; import 'address_of_shared.dart'; import 'dylib_utils.dart'; final ffiTestFunctions = dlopenPlatformSpecific('ffi_test_functions'); void main() { // Force dlopen so @Native lookups in DynamicLibrary.process() succeed. dlopenGlobalPlatformSpecific('ffi_test_functions'); for (int i = 0; i < 100; ++i) { testAddressOfInt8Array(); testAddressOfInt8ArrayElementAt(); testAddressOfInt16Array(); testAddressOfInt16ArrayElementAt(); testAddressOfInt32Array(); testAddressOfInt32ArrayElementAt(); testAddressOfInt64Array(); testAddressOfInt64ArrayElementAt(); testAddressOfUint8Array(); testAddressOfUint8ArrayElementAt(); testAddressOfUint16Array(); testAddressOfUint16ArrayElementAt(); testAddressOfUint32Array(); testAddressOfUint32ArrayElementAt(); testAddressOfUint64Array(); testAddressOfUint64ArrayElementAt(); testAddressOfFloatArray(); testAddressOfFloatArrayElementAt(); testAddressOfDoubleArray(); testAddressOfDoubleArrayElementAt(); testAddressOfBoolArray(); testAddressOfBoolArrayElementAt(); } } final class Int8ArrayStruct extends Struct { @Array(20) external Array array; } Array makeInt8Array(int length) { assert(length == 20); final typedData = makeInt8List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfInt8Array() { const length = 20; final array = makeInt8Array(length); final expectedResult = makeExpectedResultInt8(0, length); final result = takeInt8Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfInt8ArrayElementAt() { const length = 20; final array = makeInt8Array(length); final expectedResult = makeExpectedResultInt8(0, length); final result = takeInt8PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Int16ArrayStruct extends Struct { @Array(20) external Array array; } Array makeInt16Array(int length) { assert(length == 20); final typedData = makeInt16List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfInt16Array() { const length = 20; final array = makeInt16Array(length); final expectedResult = makeExpectedResultInt16(0, length); final result = takeInt16Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfInt16ArrayElementAt() { const length = 20; final array = makeInt16Array(length); final expectedResult = makeExpectedResultInt16(0, length); final result = takeInt16PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Int32ArrayStruct extends Struct { @Array(20) external Array array; } Array makeInt32Array(int length) { assert(length == 20); final typedData = makeInt32List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfInt32Array() { const length = 20; final array = makeInt32Array(length); final expectedResult = makeExpectedResultInt32(0, length); final result = takeInt32Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfInt32ArrayElementAt() { const length = 20; final array = makeInt32Array(length); final expectedResult = makeExpectedResultInt32(0, length); final result = takeInt32PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Int64ArrayStruct extends Struct { @Array(20) external Array array; } Array makeInt64Array(int length) { assert(length == 20); final typedData = makeInt64List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfInt64Array() { const length = 20; final array = makeInt64Array(length); final expectedResult = makeExpectedResultInt64(0, length); final result = takeInt64Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfInt64ArrayElementAt() { const length = 20; final array = makeInt64Array(length); final expectedResult = makeExpectedResultInt64(0, length); final result = takeInt64PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Uint8ArrayStruct extends Struct { @Array(20) external Array array; } Array makeUint8Array(int length) { assert(length == 20); final typedData = makeUint8List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfUint8Array() { const length = 20; final array = makeUint8Array(length); final expectedResult = makeExpectedResultUint8(0, length); final result = takeUint8Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfUint8ArrayElementAt() { const length = 20; final array = makeUint8Array(length); final expectedResult = makeExpectedResultUint8(0, length); final result = takeUint8PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Uint16ArrayStruct extends Struct { @Array(20) external Array array; } Array makeUint16Array(int length) { assert(length == 20); final typedData = makeUint16List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfUint16Array() { const length = 20; final array = makeUint16Array(length); final expectedResult = makeExpectedResultUint16(0, length); final result = takeUint16Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfUint16ArrayElementAt() { const length = 20; final array = makeUint16Array(length); final expectedResult = makeExpectedResultUint16(0, length); final result = takeUint16PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Uint32ArrayStruct extends Struct { @Array(20) external Array array; } Array makeUint32Array(int length) { assert(length == 20); final typedData = makeUint32List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfUint32Array() { const length = 20; final array = makeUint32Array(length); final expectedResult = makeExpectedResultUint32(0, length); final result = takeUint32Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfUint32ArrayElementAt() { const length = 20; final array = makeUint32Array(length); final expectedResult = makeExpectedResultUint32(0, length); final result = takeUint32PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class Uint64ArrayStruct extends Struct { @Array(20) external Array array; } Array makeUint64Array(int length) { assert(length == 20); final typedData = makeUint64List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfUint64Array() { const length = 20; final array = makeUint64Array(length); final expectedResult = makeExpectedResultUint64(0, length); final result = takeUint64Pointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfUint64ArrayElementAt() { const length = 20; final array = makeUint64Array(length); final expectedResult = makeExpectedResultUint64(0, length); final result = takeUint64PointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); } final class FloatArrayStruct extends Struct { @Array(20) external Array array; } Array makeFloatArray(int length) { assert(length == 20); final typedData = makeFloat32List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfFloatArray() { const length = 20; final array = makeFloatArray(length); final expectedResult = makeExpectedResultFloat(0, length); final result = takeFloatPointer(array.address, length); Expect.approxEquals(expectedResult, result); } void testAddressOfFloatArrayElementAt() { const length = 20; final array = makeFloatArray(length); final expectedResult = makeExpectedResultFloat(0, length); final result = takeFloatPointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.approxEquals(expectedResult, result); } final class DoubleArrayStruct extends Struct { @Array(20) external Array array; } Array makeDoubleArray(int length) { assert(length == 20); final typedData = makeFloat64List(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfDoubleArray() { const length = 20; final array = makeDoubleArray(length); final expectedResult = makeExpectedResultDouble(0, length); final result = takeDoublePointer(array.address, length); Expect.approxEquals(expectedResult, result); } void testAddressOfDoubleArrayElementAt() { const length = 20; final array = makeDoubleArray(length); final expectedResult = makeExpectedResultDouble(0, length); final result = takeDoublePointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.approxEquals(expectedResult, result); } final class BoolArrayStruct extends Struct { @Array(20) external Array array; } Array makeBoolArray(int length) { assert(length == 20); final typedData = makeBoolList(length); final struct = Struct.create(typedData); return struct.array; } void testAddressOfBoolArray() { const length = 20; final array = makeBoolArray(length); final expectedResult = makeExpectedResultBool(0, length); final result = takeBoolPointer(array.address, length); Expect.equals(expectedResult, result); } void testAddressOfBoolArrayElementAt() { const length = 20; final array = makeBoolArray(length); final expectedResult = makeExpectedResultBool(0, length); final result = takeBoolPointerMany( array[0].address, array[1].address, array[2].address, array[3].address, array[4].address, array[5].address, array[6].address, array[7].address, array[8].address, array[9].address, array[10].address, array[11].address, array[12].address, array[13].address, array[14].address, array[15].address, array[16].address, array[17].address, array[18].address, array[19].address, ); Expect.equals(expectedResult, result); }