InstancedBufferGeometry.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /**
  2. * @author simonThiele / https://github.com/simonThiele
  3. */
  4. module( "InstancedBufferGeometry" );
  5. function createClonableMock() {
  6. return {
  7. callCount: 0,
  8. clone: function() {
  9. this.callCount++;
  10. return this;
  11. }
  12. }
  13. }
  14. test( "copy", function() {
  15. var instanceMock1 = {};
  16. var instanceMock2 = {};
  17. var indexMock = createClonableMock();
  18. var attributeMock1 = {};
  19. var attributeMock2 = {};
  20. var instance = new THREE.InstancedBufferGeometry();
  21. instance.addGroup(0, 10, instanceMock1);
  22. instance.addGroup(10, 5, instanceMock2);
  23. instance.setIndex(indexMock);
  24. instance.addAttribute('attributeMock1', attributeMock1);
  25. instance.addAttribute('attributeMock2', attributeMock2);
  26. var copiedInstance = instance.copy(instance);
  27. ok( copiedInstance instanceof THREE.InstancedBufferGeometry, "the clone has the correct type" );
  28. ok( copiedInstance.index === indexMock, "index was copied" );
  29. ok( copiedInstance.index.callCount === 1, "index.clone was called once" );
  30. ok( copiedInstance.attributes['attributeMock1'] instanceof THREE.BufferAttribute, "attribute was created" );
  31. // the given attribute mock was passed to the array property of the created buffer attribute
  32. ok( copiedInstance.attributes['attributeMock1'].array === attributeMock1, "attribute was copied" );
  33. ok( copiedInstance.attributes['attributeMock2'].array === attributeMock2, "attribute was copied" );
  34. ok( copiedInstance.groups[0].start === 0, "group was copied" );
  35. ok( copiedInstance.groups[0].count === 10, "group was copied" );
  36. ok( copiedInstance.groups[0].instances === instanceMock1, "group was copied" );
  37. ok( copiedInstance.groups[1].start === 10, "group was copied" );
  38. ok( copiedInstance.groups[1].count === 5, "group was copied" );
  39. ok( copiedInstance.groups[1].instances === instanceMock2, "group was copied" );
  40. });