Skip to content

Commit 41ded4e

Browse files
authored
Tests: Add unit test for Mesh.raycast(). (mrdoob#21399)
1 parent 236ea7b commit 41ded4e

File tree

1 file changed

+39
-14
lines changed

1 file changed

+39
-14
lines changed

test/unit/src/objects/Mesh.tests.js

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,74 @@
11
/* global QUnit */
22

33
import { Mesh } from '../../../../src/objects/Mesh';
4+
import { Raycaster } from '../../../../src/core/Raycaster';
5+
import { PlaneGeometry } from '../../../../src/geometries/PlaneGeometry';
6+
import { MeshBasicMaterial } from '../../../../src/materials/MeshBasicMaterial';
7+
import { Vector2 } from '../../../../src/math/Vector2';
8+
import { Vector3 } from '../../../../src/math/Vector3';
49

510
export default QUnit.module( 'Objects', () => {
611

712
QUnit.module( 'Mesh', () => {
813

914
// INHERITANCE
10-
QUnit.todo( "Extending", ( assert ) => {
15+
QUnit.todo( 'Extending', ( assert ) => {
1116

12-
assert.ok( false, "everything's gonna be alright" );
17+
assert.ok( false, 'everything\'s gonna be alright' );
1318

1419
} );
1520

1621
// INSTANCING
17-
QUnit.todo( "Instancing", ( assert ) => {
22+
QUnit.todo( 'Instancing', ( assert ) => {
1823

19-
assert.ok( false, "everything's gonna be alright" );
24+
assert.ok( false, 'everything\'s gonna be alright' );
2025

2126
} );
2227

2328
// PUBLIC STUFF
24-
QUnit.todo( "isMesh", ( assert ) => {
29+
QUnit.todo( 'isMesh', ( assert ) => {
2530

26-
assert.ok( false, "everything's gonna be alright" );
31+
assert.ok( false, 'everything\'s gonna be alright' );
2732

2833
} );
29-
QUnit.todo( "copy", ( assert ) => {
34+
QUnit.todo( 'copy', ( assert ) => {
3035

31-
assert.ok( false, "everything's gonna be alright" );
36+
assert.ok( false, 'everything\'s gonna be alright' );
3237

3338
} );
34-
QUnit.todo( "updateMorphTargets", ( assert ) => {
39+
QUnit.todo( 'updateMorphTargets', ( assert ) => {
3540

36-
assert.ok( false, "everything's gonna be alright" );
41+
assert.ok( false, 'everything\'s gonna be alright' );
3742

3843
} );
39-
QUnit.todo( "raycast", ( assert ) => {
44+
QUnit.todo( 'raycast', ( assert ) => {
4045

41-
assert.ok( false, "everything's gonna be alright" );
46+
const geometry = new PlaneGeometry();
47+
const material = new MeshBasicMaterial();
48+
49+
const mesh = new Mesh( geometry, material );
50+
51+
const raycaster = new Raycaster();
52+
raycaster.ray.origin.set( 0.25, 0.25, 1 );
53+
raycaster.ray.direction.set( 0, 0, - 1 );
54+
55+
const intersections = [];
56+
57+
mesh.raycast( raycaster, intersections );
58+
59+
const intersection = intersections[ 0 ];
60+
61+
assert.equal( intersection.object, mesh, 'intersction object' );
62+
assert.equal( intersection.distance, 1, 'intersction distance' );
63+
assert.equal( intersection.faceIndex, 1, 'intersction face index' );
64+
assert.deepEqual( intersection.face, { a: 0, b: 2, c: 1 }, 'intersction vertex indices' );
65+
assert.deepEqual( intersection.point, new Vector3( 0.25, 0.25, 0 ), 'intersction point' );
66+
assert.deepEqual( intersection.uv, new Vector2( 0.75, 0.75 ), 'intersction uv' );
4267

4368
} );
44-
QUnit.todo( "clone", ( assert ) => {
69+
QUnit.todo( 'clone', ( assert ) => {
4570

46-
assert.ok( false, "everything's gonna be alright" );
71+
assert.ok( false, 'everything\'s gonna be alright' );
4772

4873
} );
4974

0 commit comments

Comments
 (0)