blob: c175a41b6dd29baf8533e05fc1760d65e7f880c9 [file]
// 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 'package:jnigen/src/bindings/linker.dart';
import 'package:jnigen/src/config/config_types.dart';
import 'package:jnigen/src/elements/elements.dart';
import 'package:jnigen/src/summary/summary.dart';
import 'package:test/test.dart';
import 'jackson_core_test/generate.dart' as jackson_core_test;
import 'kotlin_test/generate.dart' as kotlin_test;
import 'simple_package_test/generate.dart' as simple_package_test;
import 'test_util/test_util.dart';
void main() {
checkLocallyBuiltDependencies();
for (final (name, getConfig) in [
('simple_package', simple_package_test.getConfig),
('kotlin', kotlin_test.getConfig),
('jackson_core', jackson_core_test.getConfig),
]) {
test('Method descriptor generation for $name',
timeout: const Timeout.factor(3), () async {
final config = getConfig();
config.summarizerOptions =
SummarizerOptions(backend: SummarizerBackend.asm);
final classes = await getSummary(config);
final methodDescriptorsPreLinking = <Method, String?>{};
for (final decl in classes.decls.values) {
for (final method in decl.methods) {
methodDescriptorsPreLinking[method] = method.descriptor;
}
}
await classes.accept(Linker(config));
for (final decl in classes.decls.values) {
for (final method in decl.methods) {
if (methodDescriptorsPreLinking[method]
case final preLinkingDescriptor?) {
expect(method.descriptor, preLinkingDescriptor);
}
}
}
});
}
}