From 4b2342979f5f3e5d0f51689eba9a9483ab0a35a2 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 17 May 2025 21:52:21 +0800 Subject: [PATCH] update tests + bindings --- .../src/bindings/src/thermion_dart_ffi.g.dart | 8 ++---- thermion_dart/test/asset_tests.dart | 27 ++++++++++++------- thermion_dart/test/helpers.dart | 11 +++++--- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/thermion_dart/lib/src/bindings/src/thermion_dart_ffi.g.dart b/thermion_dart/lib/src/bindings/src/thermion_dart_ffi.g.dart index 1be20c3d..d8b4e063 100644 --- a/thermion_dart/lib/src/bindings/src/thermion_dart_ffi.g.dart +++ b/thermion_dart/lib/src/bindings/src/thermion_dart_ffi.g.dart @@ -2490,14 +2490,12 @@ external void GltfAssetLoader_createRenderThread( @ffi.Native< ffi.Void Function( ffi.Pointer, - ffi.Pointer, ffi.Pointer< ffi.NativeFunction< ffi.Void Function( ffi.Pointer)>>)>(isLeaf: true) external void GltfResourceLoader_createRenderThread( ffi.Pointer tEngine, - ffi.Pointer relativeResourcePath, ffi.Pointer< ffi .NativeFunction)>> @@ -2616,12 +2614,10 @@ external void Gizmo_createRenderThread( callback, ); -@ffi.Native< - ffi.Pointer Function( - ffi.Pointer, ffi.Pointer)>(isLeaf: true) +@ffi.Native Function(ffi.Pointer)>( + isLeaf: true) external ffi.Pointer GltfResourceLoader_create( ffi.Pointer tEngine, - ffi.Pointer relativeResourcePath, ); @ffi.Native< diff --git a/thermion_dart/test/asset_tests.dart b/thermion_dart/test/asset_tests.dart index 7150ee75..3c8cc43c 100644 --- a/thermion_dart/test/asset_tests.dart +++ b/thermion_dart/test/asset_tests.dart @@ -41,11 +41,10 @@ void main() async { }, cameraPosition: Vector3(0, 0, 5)); }); - test('load/remove gltf', () async { + test('sync load/remove gltf from uri', () async { await testHelper.withViewer((viewer) async { var asset = await viewer.loadGltf( - "file://${testHelper.testDir}/assets/cube.gltf", - relativeResourcePath: "${testHelper.testDir}/assets"); + "file://${testHelper.testDir}/assets/cube.gltf"); await viewer .loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx"); await testHelper.capture(viewer.view, "gltf_loaded"); @@ -54,12 +53,9 @@ void main() async { }, cameraPosition: Vector3(0, 0, 5)); }); - test('load/remove gltf (async)', () async { + test('async load/remove gltf from uri', () async { await testHelper.withViewer((viewer) async { - var assetData = - File("${testHelper.testDir}/assets/cube.gltf").readAsBytesSync(); - var asset = await viewer.loadGltfFromBuffer(assetData, - relativeResourcePath: "${testHelper.testDir}/assets", loadResourcesAsync: true); + var asset = await viewer.loadGltf("file://${testHelper.testDir}/assets/cube.gltf", loadAsync: true); await viewer .loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx"); await testHelper.capture(viewer.view, "gltf_async_loaded"); @@ -68,11 +64,22 @@ void main() async { }, cameraPosition: Vector3(0, 0, 5)); }); + test('sync load/remove gltf from buffer', () async { + await testHelper.withViewer((viewer) async { + var assetData = + File("${testHelper.testDir}/assets/cube.gltf").readAsBytesSync(); + var asset = await viewer.loadGltfFromBuffer(assetData, + resourceUri: "${testHelper.testDir}/assets", loadResourcesAsync: false); + await viewer + .loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx"); + await testHelper.capture(viewer.view, "gltf_load_from_buffer"); + }, cameraPosition: Vector3(0, 0, 5)); + }); + test('transform gltf to unit cube', () async { await testHelper.withViewer((viewer) async { var asset = await viewer.loadGltf( - "file://${testHelper.testDir}/assets/cube.gltf", - relativeResourcePath: "${testHelper.testDir}/assets"); + "file://${testHelper.testDir}/assets/cube.gltf"); await viewer .loadIbl("file://${testHelper.testDir}/assets/default_env_ibl.ktx"); diff --git a/thermion_dart/test/helpers.dart b/thermion_dart/test/helpers.dart index a813c660..6f110772 100644 --- a/thermion_dart/test/helpers.dart +++ b/thermion_dart/test/helpers.dart @@ -195,8 +195,13 @@ class TestHelper { return object; } + Future _loadResource(String uri) async { + uri = uri.replaceAll("file://", ""); + return File(uri).readAsBytesSync(); + } + Future setup() async { - await FFIFilamentApp.create(); + await FFIFilamentApp.create(config: FFIFilamentConfig(loadResource: _loadResource)); } Future createViewer( @@ -244,9 +249,7 @@ class TestHelper { color: color, depth: depth) as FFIRenderTarget; } - var viewer = ThermionViewerFFI( - loadAssetFromUri: (path) async => - File(path.replaceAll("file://", "")).readAsBytesSync()); + var viewer = ThermionViewerFFI(); await viewer.initialized; await FilamentApp.instance!.register(swapChain, viewer.view);