// Copyright (c) 2023, 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. import 'dart:io'; import 'package:jni/jni.dart'; import 'package:test/test.dart'; import 'test_util/test_util.dart'; void main() { // Don't forget to initialize JNI. if (!Platform.isAndroid) { checkDylibIsUpToDate(); spawnJvm(); } run(testRunner: test); } void run({required TestRunnerCallback testRunner}) { testRunner('JByte', () { const val = 1 << 5; using((arena) { expect(JByte(val).toDartInt(releaseOriginal: true), val); expect((-val).toJByte().toDartInt(releaseOriginal: true), -val); }); }); testRunner('JCharacter', () { const val = 1 << 5; using((arena) { expect(JCharacter(val).toDartInt(releaseOriginal: true), val); expect(JCharacter(0).toDartInt(releaseOriginal: true), 0); }); }); testRunner('JShort', () { const val = 1 << 10; using((arena) { expect(JShort(val).toDartInt(releaseOriginal: true), val); expect((-val).toJShort().toDartInt(releaseOriginal: true), -val); }); }); testRunner('JInteger', () { const val = 1 << 20; using((arena) { expect(JInteger(val).toDartInt(releaseOriginal: true), val); expect((-val).toJInteger().toDartInt(releaseOriginal: true), -val); }); }); testRunner('JLong', () { const val = 1 << 40; using((arena) { expect(JLong(val).toDartInt(releaseOriginal: true), val); expect((-val).toJLong().toDartInt(releaseOriginal: true), -val); }); }); testRunner('JFloat', () { const val = 3.14; const eps = 1e-6; using((arena) { expect( JFloat(val).toDartDouble(releaseOriginal: true), closeTo(val, eps)); expect((-val).toJFloat().toDartDouble(releaseOriginal: true), closeTo(-val, eps)); }); }); testRunner('JDouble', () { const val = 3.14; const eps = 1e-9; using((arena) { expect( JDouble(val).toDartDouble(releaseOriginal: true), closeTo(val, eps)); expect((-val).toJDouble().toDartDouble(releaseOriginal: true), closeTo(-val, eps)); }); }); testRunner('JBoolean', () { using((arena) { expect(JBoolean(false).toDartBool(releaseOriginal: true), false); expect(JBoolean(true).toDartBool(releaseOriginal: true), true); }); }); testRunner('JNumber conversion methods', () { using((arena) { final number = JInteger(42).as(JNumber.type, releaseOriginal: true); expect( number .toJByte(releaseOriginal: false) .toDartInt(releaseOriginal: true), 42); expect( number .toJShort(releaseOriginal: false) .toDartInt(releaseOriginal: true), 42); expect( number .toJInteger(releaseOriginal: false) .toDartInt(releaseOriginal: true), 42); expect( number .toJLong(releaseOriginal: false) .toDartInt(releaseOriginal: true), 42); expect( number .toJFloat(releaseOriginal: false) .toDartDouble(releaseOriginal: true), closeTo(42.0, 1e-6)); expect( number .toJDouble(releaseOriginal: true) .toDartDouble(releaseOriginal: true), closeTo(42.0, 1e-9)); }); }); }