From 4aad34ce930bccaf4e9201ac952e9b68a6a782b1 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Thu, 10 Oct 2024 20:47:17 +0800 Subject: [PATCH] add pick to view tests --- thermion_dart/test/view_tests.dart | 35 +++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/thermion_dart/test/view_tests.dart b/thermion_dart/test/view_tests.dart index 794d9478..f7603bc8 100644 --- a/thermion_dart/test/view_tests.dart +++ b/thermion_dart/test/view_tests.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:test/test.dart'; import 'package:thermion_dart/thermion_dart.dart'; import 'package:vector_math/vector_math_64.dart'; @@ -17,7 +19,8 @@ void main() async { var viewer = await testHelper.createViewer(); final texture = await testHelper.createTexture(500, 500); - final renderTarget = await viewer.createRenderTarget(500, 500, texture.metalTextureAddress); + final renderTarget = await viewer.createRenderTarget( + 500, 500, texture.metalTextureAddress); viewer.setRenderTarget(renderTarget); await viewer.setBackgroundColor(1.0, 0, 0, 1); @@ -76,14 +79,15 @@ void main() async { var mainCamera = await viewer.getMainCamera(); mainCamera.setTransform(Matrix4.translation(Vector3(0, 0, 5))); - final swapChain = await viewer.createSwapChain(1, 1); + final swapChain = await viewer.createHeadlessSwapChain(1, 1); await testHelper.capture( viewer, "create_swapchain_default_view_default_swapchain"); final view = await viewer.createView(); final texture = await testHelper.createTexture(200, 400); - final renderTarget = await viewer.createRenderTarget(200, 400, texture.metalTextureAddress); + final renderTarget = await viewer.createRenderTarget( + 200, 400, texture.metalTextureAddress); await view.setRenderTarget(renderTarget); await view.updateViewport(200, 400); @@ -100,5 +104,30 @@ void main() async { await viewer.dispose(); }); + + test('pick', () async { + var viewer = await testHelper.createViewer( + bg: kRed, cameraPosition: Vector3(0, 0, 5)); + + final cube = await viewer.createGeometry(GeometryHelper.cube()); + + final completer = Completer(); + late StreamSubscription listener; + listener = viewer.pickResult.listen((result) async { + completer.complete(result.entity); + await listener.cancel(); + }); + + viewer.pick(250, 250); + + for (int i = 0; i < 10; i++) { + await viewer.requestFrame(); + await Future.delayed(Duration(milliseconds: 100)); + } + + expect(completer.isCompleted, true); + expect(await completer.future, cube); + await viewer.dispose(); + }); }); }