// Copyright (c) 2019, 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.
//
// Tests GC of Pointer objects.
//
// SharedObjects=ffi_test_functions

library FfiTest;

import 'dart:ffi';

import "package:expect/expect.dart";

import 'utf8.dart';
import 'dylib_utils.dart';

DynamicLibrary ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");

final triggerGc = ffiTestFunctions
    .lookupFunction<Void Function(), void Function()>("TriggerGC");

void main() async {
  testSizeOf();
  testGC();
}

dynamic bar;

Future<void> testGC() async {
  bar = Pointer<Int8>.fromAddress(11);
  // Verify that the objects manufactured by 'fromAddress' can be scanned by the
  // GC.
  triggerGc();
}

void testSizeOf() {
  Expect.equals(true, 4 == sizeOf<Pointer>() || 8 == sizeOf<Pointer>());
}
