// 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 testStringBackAndForth(String str) { final jstring = str.toJString(); final dartString = jstring.toDartString(releaseOriginal: true); expect(dartString, str); } void run({required TestRunnerCallback testRunner}) { group('String encoding tests', () { testRunner('Long string back-and-forth', () { testStringBackAndForth('1' * 8096); }); testRunner('#278 UTF-8 bug', () { testStringBackAndForth('🐬'); }); testRunner('String containing null character', () { final str = 'A${String.fromCharCode(0)}B'; testStringBackAndForth(str); }); testRunner('Zero length string', () { testStringBackAndForth(''); }); }); testRunner('Inherited toString', () { final s = 'hello'.toJString(); expect(s.toString(), 'hello'); }); }