InterleavedBuffer.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /**
  2. * @author simonThiele / https://github.com/simonThiele
  3. */
  4. QUnit.module( "InterleavedBuffer" );
  5. function checkInstanceAgainstCopy( instance, copiedInstance, assert ) {
  6. assert.ok( copiedInstance instanceof THREE.InterleavedBuffer, "the clone has the correct type" );
  7. for ( var i = 0; i < instance.array.length; i++ ) {
  8. assert.ok( copiedInstance.array[i] === instance.array[i], "array was copied" );
  9. }
  10. assert.ok( copiedInstance.stride === instance.stride, "stride was copied" );
  11. assert.ok( copiedInstance.dynamic === true, "dynamic was copied" );
  12. }
  13. QUnit.test( "count", function( assert ) {
  14. var instance = new THREE.InterleavedBuffer( new Float32Array( [1, 2, 3, 7, 8 ,9] ), 3 );
  15. assert.equal( instance.count, 2, "count is calculated via array length / stride" );
  16. });
  17. QUnit.test( "copy" , function( assert ) {
  18. var array = new Float32Array( [1, 2, 3, 7, 8 ,9] );
  19. var instance = new THREE.InterleavedBuffer( array, 3 );
  20. instance.setDynamic( true );
  21. checkInstanceAgainstCopy(instance, instance.copy( instance ), assert );
  22. });
  23. QUnit.test( "clone" , function( assert ) {
  24. var array = new Float32Array( [1, 2, 3, 7, 8 ,9] );
  25. var instance = new THREE.InterleavedBuffer( array, 3 );
  26. instance.setDynamic( true );
  27. checkInstanceAgainstCopy( instance, instance.clone(), assert );
  28. });
  29. QUnit.test( "set" , function( assert ) {
  30. var instance = new THREE.InterleavedBuffer( new Float32Array( [1, 2, 3, 7, 8 ,9] ), 3 );
  31. instance.set( [0, -1] );
  32. assert.ok( instance.array[0] === 0 && instance.array[1] === -1, "replace at first by default" );
  33. });
  34. QUnit.test( "needsUpdate", function ( assert ) {
  35. var a = new THREE.InterleavedBuffer( new Float32Array( [ 1, 2, 3, 4 ], 2 ) );
  36. a.needsUpdate = true;
  37. assert.strictEqual( a.version, 1, "Check version increased" );
  38. } );
  39. QUnit.test( "setArray", function ( assert ) {
  40. var f32a = new Float32Array( [ 1, 2, 3, 4 ] );
  41. var f32b = new Float32Array( [ ] );
  42. var a = new THREE.InterleavedBuffer( f32a, 2, false );
  43. a.setArray( f32a );
  44. assert.strictEqual( a.count, 2, "Check item count for non-empty array" );
  45. assert.strictEqual( a.array, f32a, "Check array itself" );
  46. a.setArray( f32b );
  47. assert.strictEqual( a.count, 0, "Check item count for empty array" );
  48. assert.strictEqual( a.array, f32b, "Check array itself" );
  49. assert.throws(
  50. function () {
  51. a.setArray( [ 1, 2, 3, 4 ] );
  52. },
  53. /array should be a Typed Array/,
  54. "Calling setArray with a non-typed array throws Error"
  55. );
  56. } );
  57. QUnit.test( "copyAt", function ( assert ) {
  58. var a = new THREE.InterleavedBuffer( new Float32Array( [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] ), 3 );
  59. var b = new THREE.InterleavedBuffer( new Float32Array( 9 ), 3 );
  60. var expected = new Float32Array( [ 4, 5, 6, 7, 8, 9, 1, 2, 3 ] );
  61. b.copyAt( 1, a, 2 );
  62. b.copyAt( 0, a, 1 );
  63. b.copyAt( 2, a, 0 );
  64. assert.deepEqual( b.array, expected, "Check the right values were replaced" );
  65. } );
  66. QUnit.test( "onUpload", function ( assert ) {
  67. var a = new THREE.InterleavedBuffer();
  68. var func = function () { };
  69. a.onUpload( func );
  70. assert.strictEqual( a.onUploadCallback, func, "Check callback was set properly" );
  71. } );
粤ICP备19079148号