cleanup tests
This commit is contained in:
@@ -7,6 +7,7 @@ void main() async {
|
|||||||
final testHelper = TestHelper("integration");
|
final testHelper = TestHelper("integration");
|
||||||
|
|
||||||
group('camera', () {
|
group('camera', () {
|
||||||
|
|
||||||
test('getCameraModelMatrix, getCameraPosition, rotation', () async {
|
test('getCameraModelMatrix, getCameraPosition, rotation', () async {
|
||||||
var viewer = await testHelper.createViewer();
|
var viewer = await testHelper.createViewer();
|
||||||
var matrix = await viewer.getCameraModelMatrix();
|
var matrix = await viewer.getCameraModelMatrix();
|
||||||
@@ -23,6 +24,8 @@ void main() async {
|
|||||||
expect(position.x, 2.0);
|
expect(position.x, 2.0);
|
||||||
expect(position.y, 2.0);
|
expect(position.y, 2.0);
|
||||||
expect(position.z, 2.0);
|
expect(position.z, 2.0);
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('getCameraViewMatrix', () async {
|
test('getCameraViewMatrix', () async {
|
||||||
@@ -46,19 +49,24 @@ void main() async {
|
|||||||
expect(position.x, closeTo(3.0, 1e-6));
|
expect(position.x, closeTo(3.0, 1e-6));
|
||||||
expect(position.y, closeTo(4.0, 1e-6));
|
expect(position.y, closeTo(4.0, 1e-6));
|
||||||
expect(position.z, closeTo(5.0, 1e-6));
|
expect(position.z, closeTo(5.0, 1e-6));
|
||||||
|
await viewer.dispose();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('getCameraProjectionMatrix', () async {
|
test('getCameraProjectionMatrix', () async {
|
||||||
var viewer = await testHelper.createViewer();
|
var viewer = await testHelper.createViewer();
|
||||||
var projectionMatrix = await viewer.getCameraProjectionMatrix();
|
var projectionMatrix = await viewer.getCameraProjectionMatrix();
|
||||||
print(projectionMatrix);
|
print(projectionMatrix);
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('getCameraCullingProjectionMatrix', () async {
|
test('getCameraCullingProjectionMatrix', () async {
|
||||||
|
throw Exception("TODO");
|
||||||
var viewer = await testHelper.createViewer();
|
var viewer = await testHelper.createViewer();
|
||||||
var matrix = await viewer.getCameraCullingProjectionMatrix();
|
var matrix = await viewer.getCameraCullingProjectionMatrix();
|
||||||
print(matrix);
|
print(matrix);
|
||||||
throw Exception("TODO");
|
await viewer.dispose();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('getCameraFrustum', () async {
|
test('getCameraFrustum', () async {
|
||||||
@@ -74,6 +82,8 @@ void main() async {
|
|||||||
frustum = await viewer.getCameraFrustum();
|
frustum = await viewer.getCameraFrustum();
|
||||||
print(frustum.plane5.normal);
|
print(frustum.plane5.normal);
|
||||||
print(frustum.plane5.constant);
|
print(frustum.plane5.constant);
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('set orthographic projection', () async {
|
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 camera.setProjection(Projection.Orthographic, -0.05, 0.05, -0.05, 0.05, 0.05, 10000);
|
||||||
await testHelper.capture(
|
await testHelper.capture(
|
||||||
viewer, "camera_set_orthographic_projection");
|
viewer, "camera_set_orthographic_projection");
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('set custom projection/culling matrix', () async {
|
test('set custom projection/culling matrix', () async {
|
||||||
@@ -92,12 +103,13 @@ void main() async {
|
|||||||
bg: kRed, cameraPosition: Vector3(0, 0, 4));
|
bg: kRed, cameraPosition: Vector3(0, 0, 4));
|
||||||
var camera = await viewer.getMainCamera();
|
var camera = await viewer.getMainCamera();
|
||||||
final cube = await viewer.createGeometry(GeometryHelper.cube());
|
final cube = await viewer.createGeometry(GeometryHelper.cube());
|
||||||
|
|
||||||
// cube is visible when inside the frustum, cube is visible
|
// cube is visible when inside the frustum, cube is visible
|
||||||
var projectionMatrix =
|
var projectionMatrix =
|
||||||
makeOrthographicMatrix(-10.0, 10.0, -10.0, 10.0, 0.05, 10000);
|
makeOrthographicMatrix(-10.0, 10.0, -10.0, 10.0, 0.05, 10000);
|
||||||
await camera.setProjectionMatrixWithCulling(
|
await camera.setProjectionMatrixWithCulling(
|
||||||
projectionMatrix, 0.05, 10000);
|
projectionMatrix, 0.05, 10000);
|
||||||
|
|
||||||
await testHelper.capture(
|
await testHelper.capture(
|
||||||
viewer, "camera_projection_culling_matrix_object_in_frustum");
|
viewer, "camera_projection_culling_matrix_object_in_frustum");
|
||||||
|
|
||||||
@@ -107,6 +119,8 @@ void main() async {
|
|||||||
await camera.setProjectionMatrixWithCulling(projectionMatrix, 0.05, 1);
|
await camera.setProjectionMatrixWithCulling(projectionMatrix, 0.05, 1);
|
||||||
await testHelper.capture(
|
await testHelper.capture(
|
||||||
viewer, "camera_projection_culling_matrix_object_outside_frustum");
|
viewer, "camera_projection_culling_matrix_object_outside_frustum");
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('setting transform on camera updates model matrix (no parent)',
|
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).y, 0.0);
|
||||||
expect(modelMatrix.getColumn(3).z, 0.0);
|
expect(modelMatrix.getColumn(3).z, 0.0);
|
||||||
expect(modelMatrix.getColumn(3).w, 1.0);
|
expect(modelMatrix.getColumn(3).w, 1.0);
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('setting transform on camera updates model matrix (with parent)',
|
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).y, 1.0);
|
||||||
expect(modelMatrix.getColumn(3).z, 0.0);
|
expect(modelMatrix.getColumn(3).z, 0.0);
|
||||||
expect(modelMatrix.getColumn(3).w, 1.0);
|
expect(modelMatrix.getColumn(3).w, 1.0);
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('create camera', () async {
|
test('create camera', () async {
|
||||||
@@ -178,6 +195,8 @@ void main() async {
|
|||||||
expect(viewer.getCameraAt(0), await viewer.getMainCamera());
|
expect(viewer.getCameraAt(0), await viewer.getMainCamera());
|
||||||
expect(viewer.getCameraAt(1), newCamera);
|
expect(viewer.getCameraAt(1), newCamera);
|
||||||
await expectLater(() => viewer.getCameraAt(2), throwsA(isA<Exception>()));
|
await expectLater(() => viewer.getCameraAt(2), throwsA(isA<Exception>()));
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ void main() async {
|
|||||||
|
|
||||||
test('load glb from buffer', () async {
|
test('load glb from buffer', () async {
|
||||||
var viewer = await testHelper.createViewer();
|
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);
|
var model = await viewer.loadGlbFromBuffer(buffer);
|
||||||
await viewer.transformToUnitCube(model);
|
await viewer.transformToUnitCube(model);
|
||||||
await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0);
|
await viewer.setBackgroundColor(0.0, 0.0, 1.0, 1.0);
|
||||||
@@ -28,6 +28,7 @@ void main() async {
|
|||||||
await viewer
|
await viewer
|
||||||
.setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5));
|
.setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5));
|
||||||
await testHelper.capture(viewer, "load_glb_from_buffer");
|
await testHelper.capture(viewer, "load_glb_from_buffer");
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('load glb from buffer with priority', () async {
|
test('load glb from buffer with priority', () async {
|
||||||
@@ -38,7 +39,7 @@ void main() async {
|
|||||||
await viewer
|
await viewer
|
||||||
.setCameraRotation(Quaternion.axisAngle(Vector3(1, 0, 0), -0.5));
|
.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 model1 = await viewer.loadGlbFromBuffer(buffer, priority: 7);
|
||||||
var model2 = await viewer.loadGlbFromBuffer(buffer, priority: 0);
|
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);
|
entity, "baseColorFactor", 0, 0, 1.0, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
await testHelper.capture(viewer, "load_glb_from_buffer_with_priority");
|
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 = Directory("$testDir/output/${dir}");
|
||||||
// outDir.deleteSync(recursive: true);
|
// outDir.deleteSync(recursive: true);
|
||||||
outDir.createSync();
|
outDir.createSync(recursive: true);
|
||||||
DynamicLibrary.open('${testDir}/libThermionTextureSwift.dylib');
|
if(Platform.isMacOS) {
|
||||||
|
DynamicLibrary.open('${testDir}/libThermionTextureSwift.dylib');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future capture(ThermionViewer viewer, String outputFilename,
|
Future capture(ThermionViewer viewer, String outputFilename,
|
||||||
{View? view, SwapChain? swapChain, RenderTarget? renderTarget}) async {
|
{View? view, SwapChain? swapChain, RenderTarget? renderTarget}) async {
|
||||||
|
|
||||||
await Future.delayed(Duration(milliseconds: 10));
|
await Future.delayed(Duration(milliseconds: 10));
|
||||||
var outPath = p.join(outDir.path, "$outputFilename.bmp");
|
var outPath = p.join(outDir.path, "$outputFilename.bmp");
|
||||||
|
|
||||||
var pixelBuffer = await viewer.capture(
|
var pixelBuffer = await viewer.capture(
|
||||||
view: view,
|
view: view,
|
||||||
swapChain: swapChain ?? this.swapChain,
|
swapChain: swapChain ?? this.swapChain,
|
||||||
renderTarget: renderTarget);
|
renderTarget: renderTarget);
|
||||||
|
await viewer.render();
|
||||||
|
|
||||||
view ??= await viewer.getViewAt(0);
|
view ??= await viewer.getViewAt(0);
|
||||||
var vp = await view.getViewport();
|
var vp = await view.getViewport();
|
||||||
await savePixelBufferToBmp(pixelBuffer, vp.width, vp.height, outPath);
|
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 {
|
test('load skybox', () async {
|
||||||
var viewer = await testHelper.createViewer();
|
var viewer = await testHelper.createViewer();
|
||||||
await viewer.loadSkybox(
|
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 testHelper.capture(viewer, "load_skybox");
|
||||||
await viewer.removeSkybox();
|
await viewer.removeSkybox();
|
||||||
await testHelper.capture(viewer, "remove_skybox");
|
await testHelper.capture(viewer, "remove_skybox");
|
||||||
|
await viewer.dispose();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ void main() async {
|
|||||||
var viewer = await testHelper.createViewer();
|
var viewer = await testHelper.createViewer();
|
||||||
var view = await viewer.getViewAt(0);
|
var view = await viewer.getViewAt(0);
|
||||||
expect(await view.getCamera(), isNotNull);
|
expect(await view.getCamera(), isNotNull);
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('one swapchain, render view to render target', () async {
|
test('one swapchain, render view to render target', () async {
|
||||||
@@ -32,6 +35,9 @@ void main() async {
|
|||||||
viewer,
|
viewer,
|
||||||
renderTarget: renderTarget,
|
renderTarget: renderTarget,
|
||||||
"default_swapchain_default_view_render_target");
|
"default_swapchain_default_view_render_target");
|
||||||
|
|
||||||
|
await viewer.dispose();
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('create secondary view, default swapchain', () async {
|
test('create secondary view, default swapchain', () async {
|
||||||
|
|||||||
Reference in New Issue
Block a user