blob: 7fdd6ed91f0a480c04932cda1cebab61ca9fe171 [file] [log] [blame]
// 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);
}