|
3 | 3 | */ |
4 | 4 | /* global QUnit */ |
5 | 5 |
|
| 6 | +import { Object3D } from '../../../../src/core/Object3D'; |
| 7 | +import { Raycaster } from '../../../../src/core/Raycaster'; |
6 | 8 | import { LOD } from '../../../../src/objects/LOD'; |
7 | 9 |
|
8 | 10 | export default QUnit.module( 'Objects', () => { |
9 | 11 |
|
10 | 12 | QUnit.module( 'LOD', () => { |
11 | 13 |
|
12 | 14 | // INHERITANCE |
13 | | - QUnit.todo( "Extending", ( assert ) => { |
| 15 | + QUnit.test( "Extending", ( assert ) => { |
14 | 16 |
|
15 | | - assert.ok( false, "everything's gonna be alright" ); |
| 17 | + var lod = new LOD(); |
| 18 | + |
| 19 | + assert.strictEqual( ( lod instanceof Object3D ), true, "LOD extends from Object3D" ); |
16 | 20 |
|
17 | 21 | } ); |
18 | 22 |
|
19 | | - // INSTANCING |
20 | | - QUnit.todo( "Instancing", ( assert ) => { |
| 23 | + // PROPERTIES |
| 24 | + QUnit.test( "levels", ( assert ) => { |
21 | 25 |
|
22 | | - assert.ok( false, "everything's gonna be alright" ); |
| 26 | + var lod = new LOD(); |
| 27 | + var levels = lod.levels; |
| 28 | + |
| 29 | + assert.strictEqual( Array.isArray( levels ), true, "LOD.levels is of type array." ); |
| 30 | + assert.strictEqual( levels.length, 0, "LOD.levels is empty by default." ); |
23 | 31 |
|
24 | 32 | } ); |
25 | 33 |
|
26 | | - // PROPERTIES |
27 | | - QUnit.todo( "levels", ( assert ) => { |
| 34 | + QUnit.test( "autoUpdate", ( assert ) => { |
28 | 35 |
|
29 | | - assert.ok( false, "everything's gonna be alright" ); |
| 36 | + var lod = new LOD(); |
| 37 | + |
| 38 | + assert.strictEqual( lod.autoUpdate, true, "LOD.autoUpdate is of type boolean and true by default." ); |
30 | 39 |
|
31 | 40 | } ); |
32 | 41 |
|
33 | 42 | // PUBLIC STUFF |
34 | | - QUnit.todo( "isLOD", ( assert ) => { |
| 43 | + QUnit.test( "isLOD", ( assert ) => { |
35 | 44 |
|
36 | | - assert.ok( false, "everything's gonna be alright" ); |
| 45 | + var lod = new LOD(); |
| 46 | + |
| 47 | + assert.strictEqual( lod.isLOD, true, ".isLOD property is defined." ); |
37 | 48 |
|
38 | 49 | } ); |
39 | | - QUnit.todo( "copy", ( assert ) => { |
| 50 | + QUnit.test( "copy", ( assert ) => { |
40 | 51 |
|
41 | | - assert.ok( false, "everything's gonna be alright" ); |
| 52 | + var lod1 = new LOD(); |
| 53 | + var lod2 = new LOD(); |
| 54 | + |
| 55 | + var high = new Object3D(); |
| 56 | + var mid = new Object3D(); |
| 57 | + var low = new Object3D(); |
| 58 | + |
| 59 | + lod1.addLevel( high, 5 ); |
| 60 | + lod1.addLevel( mid, 25 ); |
| 61 | + lod1.addLevel( low, 50 ); |
| 62 | + |
| 63 | + lod1.autoUpdate = false; |
| 64 | + |
| 65 | + lod2.copy( lod1 ); |
| 66 | + |
| 67 | + assert.strictEqual( lod2.autoUpdate, false, "LOD.autoUpdate is correctly copied." ); |
| 68 | + assert.strictEqual( lod2.levels.length, 3, "LOD.levels has the correct length after the copy." ); |
42 | 69 |
|
43 | 70 | } ); |
44 | | - QUnit.todo( "addLevel", ( assert ) => { |
| 71 | + QUnit.test( "addLevel", ( assert ) => { |
45 | 72 |
|
46 | | - assert.ok( false, "everything's gonna be alright" ); |
| 73 | + var lod = new LOD(); |
| 74 | + |
| 75 | + var high = new Object3D(); |
| 76 | + var mid = new Object3D(); |
| 77 | + var low = new Object3D(); |
| 78 | + |
| 79 | + lod.addLevel( high, 5 ); |
| 80 | + lod.addLevel( mid, 25 ); |
| 81 | + lod.addLevel( low, 50 ); |
| 82 | + |
| 83 | + assert.strictEqual( lod.levels.length, 3, "LOD.levels has the correct length." ); |
| 84 | + assert.deepEqual( lod.levels[ 0 ], { distance: 5, object: high }, "First entry correct." ); |
| 85 | + assert.deepEqual( lod.levels[ 1 ], { distance: 25, object: mid }, "Second entry correct." ); |
| 86 | + assert.deepEqual( lod.levels[ 2 ], { distance: 50, object: low }, "Third entry correct." ); |
47 | 87 |
|
48 | 88 | } ); |
49 | | - QUnit.todo( "getObjectForDistance", ( assert ) => { |
| 89 | + QUnit.test( "getObjectForDistance", ( assert ) => { |
50 | 90 |
|
51 | | - assert.ok( false, "everything's gonna be alright" ); |
| 91 | + var lod = new LOD(); |
| 92 | + |
| 93 | + var high = new Object3D(); |
| 94 | + var mid = new Object3D(); |
| 95 | + var low = new Object3D(); |
| 96 | + |
| 97 | + assert.strictEqual( lod.getObjectForDistance( 5 ), null, "Returns null if no LOD levels are defined." ); |
| 98 | + |
| 99 | + lod.addLevel( high, 5 ); |
| 100 | + |
| 101 | + assert.strictEqual( lod.getObjectForDistance( 0 ), high, "Returns always the same object if only one LOD level is defined." ); |
| 102 | + assert.strictEqual( lod.getObjectForDistance( 10 ), high, "Returns always the same object if only one LOD level is defined." ); |
| 103 | + |
| 104 | + lod.addLevel( mid, 25 ); |
| 105 | + lod.addLevel( low, 50 ); |
| 106 | + |
| 107 | + assert.strictEqual( lod.getObjectForDistance( 0 ), high, "Returns the high resolution object." ); |
| 108 | + assert.strictEqual( lod.getObjectForDistance( 10 ), high, "Returns the high resolution object." ); |
| 109 | + assert.strictEqual( lod.getObjectForDistance( 25 ), mid, "Returns the mid resolution object." ); |
| 110 | + assert.strictEqual( lod.getObjectForDistance( 50 ), low, "Returns the low resolution object." ); |
| 111 | + assert.strictEqual( lod.getObjectForDistance( 60 ), low, "Returns the low resolution object." ); |
52 | 112 |
|
53 | 113 | } ); |
54 | | - QUnit.todo( "raycast", ( assert ) => { |
| 114 | + QUnit.test( "raycast", ( assert ) => { |
55 | 115 |
|
56 | | - assert.ok( false, "everything's gonna be alright" ); |
| 116 | + var lod = new LOD(); |
| 117 | + var raycaster = new Raycaster(); |
| 118 | + var intersections = []; |
| 119 | + |
| 120 | + lod.raycast( raycaster, intersections ); |
| 121 | + |
| 122 | + assert.strictEqual( intersections.length, 0, "Does not fail if raycasting is used with a LOD object without levels." ); |
57 | 123 |
|
58 | 124 | } ); |
59 | 125 | QUnit.todo( "update", ( assert ) => { |
|
0 commit comments