LOD.tests.js 3.8 KB

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