cleanup tests
This commit is contained in:
@@ -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();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
28
thermion_dart/test/render_thread_tests.dart
Normal file
28
thermion_dart/test/render_thread_tests.dart
Normal 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);
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
@@ -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();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user