// 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.
//
// SharedObjects=ffi_test_functions

import 'dart:ffi';

import "package:expect/expect.dart";

import "coordinate.dart";

get is32Bit => 4 == sizeOf<IntPtr>();
get is64Bit => 8 == sizeOf<IntPtr>();

void main() async {
  if (is32Bit) {
    Expect.equals(4, sizeOf<Pointer>());
    // Struct is 20 bytes on ia32 and arm32-iOS, but 24 bytes on arm32-Android
    // and arm32-Linux due to alignment.
    Expect.isTrue(20 == sizeOf<Coordinate>() || 24 == sizeOf<Coordinate>());
  } else if (is64Bit) {
    Expect.equals(8, sizeOf<Pointer>());
    Expect.equals(24, sizeOf<Coordinate>());
  }
  Expect.throws(() => sizeOf<Void>());
}
