| // 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<Int8> array; | |
| } | |
| Array<Int8> makeInt8Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeInt8List(length); | |
| final struct = Struct.create<Int8ArrayStruct>(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<Int16> array; | |
| } | |
| Array<Int16> makeInt16Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeInt16List(length); | |
| final struct = Struct.create<Int16ArrayStruct>(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<Int32> array; | |
| } | |
| Array<Int32> makeInt32Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeInt32List(length); | |
| final struct = Struct.create<Int32ArrayStruct>(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<Int64> array; | |
| } | |
| Array<Int64> makeInt64Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeInt64List(length); | |
| final struct = Struct.create<Int64ArrayStruct>(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<Uint8> array; | |
| } | |
| Array<Uint8> makeUint8Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeUint8List(length); | |
| final struct = Struct.create<Uint8ArrayStruct>(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<Uint16> array; | |
| } | |
| Array<Uint16> makeUint16Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeUint16List(length); | |
| final struct = Struct.create<Uint16ArrayStruct>(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<Uint32> array; | |
| } | |
| Array<Uint32> makeUint32Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeUint32List(length); | |
| final struct = Struct.create<Uint32ArrayStruct>(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<Uint64> array; | |
| } | |
| Array<Uint64> makeUint64Array(int length) { | |
| assert(length == 20); | |
| final typedData = makeUint64List(length); | |
| final struct = Struct.create<Uint64ArrayStruct>(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<Float> array; | |
| } | |
| Array<Float> makeFloatArray(int length) { | |
| assert(length == 20); | |
| final typedData = makeFloat32List(length); | |
| final struct = Struct.create<FloatArrayStruct>(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<Double> array; | |
| } | |
| Array<Double> makeDoubleArray(int length) { | |
| assert(length == 20); | |
| final typedData = makeFloat64List(length); | |
| final struct = Struct.create<DoubleArrayStruct>(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<Bool> array; | |
| } | |
| Array<Bool> makeBoolArray(int length) { | |
| assert(length == 20); | |
| final typedData = makeBoolList(length); | |
| final struct = Struct.create<BoolArrayStruct>(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); | |
| } |