| // 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'); | |
| }); | |
| } |