@@ -7,8 +7,10 @@ var degToRad = require('index').THREE.Math.degToRad;
77 * parameters. That info is mostly lost when converting a Geometry to a BufferGeometry.
88 */
99suite ( 'geometry' , function ( ) {
10+ let el ;
11+
1012 setup ( function ( done ) {
11- var el = this . el = helpers . entityFactory ( ) ;
13+ el = helpers . entityFactory ( ) ;
1214 el . setAttribute ( 'geometry' , 'buffer: false; primitive: box;' ) ;
1315 el . addEventListener ( 'loaded' , function ( ) {
1416 done ( ) ;
@@ -17,31 +19,29 @@ suite('geometry', function () {
1719
1820 suite ( 'update' , function ( ) {
1921 test ( 'allows empty geometry' , function ( ) {
20- this . el . setAttribute ( 'geometry' , '' ) ;
22+ el . setAttribute ( 'geometry' , '' ) ;
2123 } ) ;
2224
2325 test ( 'creates geometry' , function ( ) {
24- var mesh = this . el . getObject3D ( 'mesh' ) ;
26+ var mesh = el . getObject3D ( 'mesh' ) ;
2527 assert . ok ( mesh . geometry ) ;
2628 assert . equal ( mesh . geometry . type , 'BoxGeometry' ) ;
2729 } ) ;
2830
2931 test ( 'updates geometry' , function ( ) {
30- var mesh = this . el . getObject3D ( 'mesh' ) ;
31- this . el . setAttribute ( 'geometry' , 'buffer: false; primitive: box; width: 5' ) ;
32+ var mesh = el . getObject3D ( 'mesh' ) ;
33+ el . setAttribute ( 'geometry' , 'buffer: false; primitive: box; width: 5' ) ;
3234 assert . equal ( mesh . geometry . parameters . width , 5 ) ;
3335 } ) ;
3436
3537 test ( 'updates geometry for segment-related attribute' , function ( ) {
36- var el = this . el ;
3738 var mesh = el . getObject3D ( 'mesh' ) ;
3839 el . setAttribute ( 'geometry' , 'buffer: false; primitive: sphere' ) ;
3940 el . setAttribute ( 'geometry' , 'buffer: false; primitive: sphere; segmentsWidth: 8' ) ;
4041 assert . equal ( mesh . geometry . parameters . widthSegments , 8 ) ;
4142 } ) ;
4243
4344 test ( 'can change type of geometry' , function ( ) {
44- var el = this . el ;
4545 var mesh = el . getObject3D ( 'mesh' ) ;
4646 el . setAttribute ( 'geometry' , 'buffer: false; primitive: sphere' ) ;
4747 assert . equal ( mesh . geometry . type , 'SphereGeometry' ) ;
@@ -50,7 +50,6 @@ suite('geometry', function () {
5050 } ) ;
5151
5252 test ( 'disposes geometry' , function ( ) {
53- var el = this . el ;
5453 var geometry = el . getObject3D ( 'mesh' ) . geometry ;
5554 var disposeSpy = this . sinon . spy ( geometry , 'dispose' ) ;
5655 assert . notOk ( disposeSpy . called ) ;
@@ -61,22 +60,21 @@ suite('geometry', function () {
6160
6261 suite ( 'remove' , function ( ) {
6362 test ( 'removes geometry' , function ( ) {
64- var mesh = this . el . getObject3D ( 'mesh' ) ;
65- this . el . removeAttribute ( 'geometry' ) ;
63+ var mesh = el . getObject3D ( 'mesh' ) ;
64+ el . removeAttribute ( 'geometry' ) ;
6665 assert . equal ( mesh . geometry . type , 'Geometry' ) ;
6766 } ) ;
6867
6968 test ( 'disposes geometry' , function ( ) {
70- var geometry = this . el . getObject3D ( 'mesh' ) . geometry ;
69+ var geometry = el . getObject3D ( 'mesh' ) . geometry ;
7170 var disposeSpy = this . sinon . spy ( geometry , 'dispose' ) ;
72- this . el . removeAttribute ( 'geometry' ) ;
71+ el . removeAttribute ( 'geometry' ) ;
7372 assert . ok ( disposeSpy . called ) ;
7473 } ) ;
7574 } ) ;
7675
7776 suite ( 'buffer' , function ( ) {
7877 test ( 'uses BufferGeometry' , function ( ) {
79- var el = this . el ;
8078 assert . notEqual ( el . getObject3D ( 'mesh' ) . geometry . type , 'BufferGeometry' ) ;
8179 el . setAttribute ( 'geometry' , 'buffer' , true ) ;
8280 assert . equal ( el . getObject3D ( 'mesh' ) . geometry . type , 'BufferGeometry' ) ;
@@ -85,16 +83,16 @@ suite('geometry', function () {
8583} ) ;
8684
8785suite ( 'standard geometries' , function ( ) {
86+ let el ;
8887 setup ( function ( done ) {
89- var el = this . el = helpers . entityFactory ( ) ;
88+ el = helpers . entityFactory ( ) ;
9089 el . setAttribute ( 'geometry' , 'primitive: box' ) ;
9190 el . addEventListener ( 'loaded' , function ( ) {
9291 done ( ) ;
9392 } ) ;
9493 } ) ;
9594
9695 test ( 'circle' , function ( ) {
97- var el = this . el ;
9896 var geometry ;
9997 el . setAttribute ( 'geometry' , {
10098 buffer : false , primitive : 'circle' , radius : 5 , segments : 4 , thetaStart : 0 , thetaLength : 350
@@ -109,7 +107,6 @@ suite('standard geometries', function () {
109107 } ) ;
110108
111109 test ( 'cylinder' , function ( ) {
112- var el = this . el ;
113110 var geometry ;
114111 el . setAttribute ( 'geometry' , {
115112 buffer : false ,
@@ -136,7 +133,6 @@ suite('standard geometries', function () {
136133 } ) ;
137134
138135 test ( 'cone' , function ( ) {
139- var el = this . el ;
140136 var geometry ;
141137 el . setAttribute ( 'geometry' , {
142138 buffer : false ,
@@ -163,7 +159,6 @@ suite('standard geometries', function () {
163159 } ) ;
164160
165161 test ( 'icosahedron' , function ( ) {
166- var el = this . el ;
167162 var geometry ;
168163 el . setAttribute ( 'geometry' , {
169164 buffer : false , primitive : 'icosahedron' , detail : 0 , radius : 5 } ) ;
@@ -175,7 +170,6 @@ suite('standard geometries', function () {
175170 } ) ;
176171
177172 test ( 'plane' , function ( ) {
178- var el = this . el ;
179173 var geometry ;
180174 el . setAttribute ( 'geometry' , { buffer : false , primitive : 'plane' , width : 1 , height : 2 } ) ;
181175
@@ -186,7 +180,6 @@ suite('standard geometries', function () {
186180 } ) ;
187181
188182 test ( 'ring' , function ( ) {
189- var el = this . el ;
190183 var geometry ;
191184 el . setAttribute ( 'geometry' , {
192185 buffer : false , primitive : 'ring' , radiusInner : 1 , radiusOuter : 2 , segmentsTheta : 3 } ) ;
@@ -199,7 +192,6 @@ suite('standard geometries', function () {
199192 } ) ;
200193
201194 test ( 'sphere' , function ( ) {
202- var el = this . el ;
203195 var geometry ;
204196 el . setAttribute ( 'geometry' , {
205197 buffer : false ,
@@ -224,7 +216,6 @@ suite('standard geometries', function () {
224216 } ) ;
225217
226218 test ( 'torus' , function ( ) {
227- var el = this . el ;
228219 var geometry ;
229220 el . setAttribute ( 'geometry' , {
230221 buffer : false ,
@@ -246,7 +237,6 @@ suite('standard geometries', function () {
246237 } ) ;
247238
248239 test ( 'torus knot' , function ( ) {
249- var el = this . el ;
250240 var geometry ;
251241 el . setAttribute ( 'geometry' , {
252242 buffer : false ,
@@ -270,7 +260,6 @@ suite('standard geometries', function () {
270260 } ) ;
271261
272262 test ( 'triangle' , function ( ) {
273- var el = this . el ;
274263 var geometry ;
275264 el . setAttribute ( 'geometry' , {
276265 buffer : false ,
@@ -294,4 +283,18 @@ suite('standard geometries', function () {
294283 assert . equal ( vertices [ 2 ] . y , 8 ) ;
295284 assert . equal ( vertices [ 2 ] . z , 9 ) ;
296285 } ) ;
286+
287+ test ( 'retains data on detach and reattach' , function ( done ) {
288+ helpers . elFactory ( ) . then ( el => {
289+ el . setAttribute ( 'geometry' , 'primitive' , 'plane' ) ;
290+ el . sceneEl . removeChild ( el ) ;
291+ setTimeout ( ( ) => {
292+ el . sceneEl . appendChild ( el ) ;
293+ setTimeout ( ( ) => {
294+ assert . equal ( el . components . geometry . data . primitive , 'plane' ) ;
295+ done ( ) ;
296+ } ) ;
297+ } ) ;
298+ } ) ;
299+ } ) ;
297300} ) ;
0 commit comments