cleanup tests

This commit is contained in:
Nick Fisher
2024-10-23 15:08:14 +11:00
parent cda4027f83
commit 2b338a63ba
6 changed files with 70 additions and 8 deletions

View File

@@ -7,6 +7,7 @@ void main() async {
final testHelper = TestHelper("integration");
group('camera', () {
test('getCameraModelMatrix, getCameraPosition, rotation', () async {
var viewer = await testHelper.createViewer();
var matrix = await viewer.getCameraModelMatrix();
@@ -23,6 +24,8 @@ void main() async {
expect(position.x, 2.0);
expect(position.y, 2.0);
expect(position.z, 2.0);
await viewer.dispose();
});
test('getCameraViewMatrix', () async {
@@ -46,19 +49,24 @@ void main() async {
expect(position.x, closeTo(3.0, 1e-6));
expect(position.y, closeTo(4.0, 1e-6));
expect(position.z, closeTo(5.0, 1e-6));
await viewer.dispose();
});
test('getCameraProjectionMatrix', () async {
var viewer = await testHelper.createViewer();
var projectionMatrix = await viewer.getCameraProjectionMatrix();
print(projectionMatrix);
await viewer.dispose();
});
test('getCameraCullingProjectionMatrix', () async {
throw Exception("TODO");
var viewer = await testHelper.createViewer();
var matrix = await viewer.getCameraCullingProjectionMatrix();
print(matrix);
throw Exception("TODO");
await viewer.dispose();
});
test('getCameraFrustum', () async {
@@ -74,6 +82,8 @@ void main() async {
frustum = await viewer.getCameraFrustum();
print(frustum.plane5.normal);
print(frustum.plane5.constant);
await viewer.dispose();
});
test('set orthographic projection', () async {
@@ -85,6 +95,7 @@ void main() async {
await camera.setProjection(Projection.Orthographic, -0.05, 0.05, -0.05, 0.05, 0.05, 10000);
await testHelper.capture(
viewer, "camera_set_orthographic_projection");
await viewer.dispose();
});
test('set custom projection/culling matrix', () async {
@@ -92,12 +103,13 @@ void main() async {
bg: kRed, cameraPosition: Vector3(0, 0, 4));
var camera = await viewer.getMainCamera();
final cube = await viewer.createGeometry(GeometryHelper.cube());
// cube is visible when inside the frustum, cube is visible
var projectionMatrix =
makeOrthographicMatrix(-10.0, 10.0, -10.0, 10.0, 0.05, 10000);
await camera.setProjectionMatrixWithCulling(
projectionMatrix, 0.05, 10000);
await testHelper.capture(
viewer, "camera_projection_culling_matrix_object_in_frustum");
@@ -107,6 +119,8 @@ void main() async {
await camera.setProjectionMatrixWithCulling(projectionMatrix, 0.05, 1);
await testHelper.capture(
viewer, "camera_projection_culling_matrix_object_outside_frustum");
await viewer.dispose();
});
test('setting transform on camera updates model matrix (no parent)',
@@ -123,6 +137,8 @@ void main() async {
expect(modelMatrix.getColumn(3).y, 0.0);
expect(modelMatrix.getColumn(3).z, 0.0);
expect(modelMatrix.getColumn(3).w, 1.0);
await viewer.dispose();
});
test('setting transform on camera updates model matrix (with parent)',
@@ -150,6 +166,7 @@ void main() async {
expect(modelMatrix.getColumn(3).y, 1.0);
expect(modelMatrix.getColumn(3).z, 0.0);
expect(modelMatrix.getColumn(3).w, 1.0);
await viewer.dispose();
});
test('create camera', () async {
@@ -178,6 +195,8 @@ void main() async {
expect(viewer.getCameraAt(0), await viewer.getMainCamera());
expect(viewer.getCameraAt(1), newCamera);
await expectLater(() => viewer.getCameraAt(2), throwsA(isA<Exception>()));
await viewer.dispose();
});
});
}

View File

@@ -20,7 +20,7 @@ void main() async {
test('load glb from buffer', () async {
var viewer = await testHelper.createViewer();
var buffer = File("${testHelper.testDir}/cube.glb").readAsBytesSync();
var buffer = File("${testHelper.testDir}/assets/cube.glb").readAsBytesSync();
var model = await viewer.loadGlbFromBuffer(buffer);
await viewer.transformToUnitCube(model);
await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0);
@@ -28,6 +28,7 @@ void main() async {
await viewer
.setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5));
await testHelper.capture(viewer, "load_glb_from_buffer");
await viewer.dispose();
});
test('load glb from buffer with priority', () async {
@@ -38,7 +39,7 @@ void main() async {
await viewer
.setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5));
var buffer = File("${testHelper.testDir}/cube.glb").readAsBytesSync();
var buffer = File("${testHelper.testDir}/assets/cube.glb").readAsBytesSync();
var model1 = await viewer.loadGlbFromBuffer(buffer, priority: 7);
var model2 = await viewer.loadGlbFromBuffer(buffer, priority: 0);
@@ -51,6 +52,8 @@ void main() async {
entity, "baseColorFactor", 0, 0, 1.0, 0.0, 1.0);
}
await testHelper.capture(viewer, "load_glb_from_buffer_with_priority");
await viewer.dispose();
});
});
}

View File

@@ -76,19 +76,24 @@ class TestHelper {
outDir = Directory("$testDir/output/${dir}");
// outDir.deleteSync(recursive: true);
outDir.createSync();
DynamicLibrary.open('${testDir}/libThermionTextureSwift.dylib');
outDir.createSync(recursive: true);
if(Platform.isMacOS) {
DynamicLibrary.open('${testDir}/libThermionTextureSwift.dylib');
}
}
Future capture(ThermionViewer viewer, String outputFilename,
{View? view, SwapChain? swapChain, RenderTarget? renderTarget}) async {
await Future.delayed(Duration(milliseconds: 10));
var outPath = p.join(outDir.path, "$outputFilename.bmp");
var pixelBuffer = await viewer.capture(
view: view,
swapChain: swapChain ?? this.swapChain,
renderTarget: renderTarget);
await viewer.render();
view ??= await viewer.getViewAt(0);
var vp = await view.getViewport();
await savePixelBufferToBmp(pixelBuffer, vp.width, vp.height, outPath);

View File

@@ -0,0 +1,28 @@
import 'package:test/test.dart';
import 'helpers.dart';
void main() async {
final testHelper = TestHelper("renderThread");
group('camera', () {
test('getCameraModelMatrix, getCameraPosition, rotation', () async {
var viewer = await testHelper.createViewer();
var matrix = await viewer.getCameraModelMatrix();
expect(matrix.trace(), 4);
await viewer.setCameraPosition(2.0, 2.0, 2.0);
matrix = await viewer.getCameraModelMatrix();
var position = matrix.getColumn(3).xyz;
expect(position.x, 2.0);
expect(position.y, 2.0);
expect(position.z, 2.0);
position = await viewer.getCameraPosition();
expect(position.x, 2.0);
expect(position.y, 2.0);
expect(position.z, 2.0);
});
});
}

View File

@@ -10,10 +10,11 @@ void main() async {
test('load skybox', () async {
var viewer = await testHelper.createViewer();
await viewer.loadSkybox(
"file:///${testHelper.testDir}/assets/default_env_skybox.ktx");
"file://${testHelper.testDir}/assets/default_env_skybox.ktx");
await testHelper.capture(viewer, "load_skybox");
await viewer.removeSkybox();
await testHelper.capture(viewer, "remove_skybox");
await viewer.dispose();
});
});
}

View File

@@ -13,6 +13,9 @@ void main() async {
var viewer = await testHelper.createViewer();
var view = await viewer.getViewAt(0);
expect(await view.getCamera(), isNotNull);
await viewer.dispose();
});
test('one swapchain, render view to render target', () async {
@@ -32,6 +35,9 @@ void main() async {
viewer,
renderTarget: renderTarget,
"default_swapchain_default_view_render_target");
await viewer.dispose();
});
test('create secondary view, default swapchain', () async {