@@ -95,7 +95,7 @@ export function main() {
9595 assertLastStatus ( players [ 2 ] , 'restart' , true ) ;
9696 } ) ;
9797
98- it ( 'should finish all the players' , ( ) => {
98+ it ( 'should not destroy the inner the players when finished ' , ( ) => {
9999 var group = new AnimationGroupPlayer ( players ) ;
100100
101101 var completed = false ;
@@ -113,55 +113,36 @@ export function main() {
113113
114114 group . finish ( ) ;
115115
116- assertLastStatus ( players [ 0 ] , 'finish' , true , - 1 ) ;
117- assertLastStatus ( players [ 1 ] , 'finish' , true , - 1 ) ;
118- assertLastStatus ( players [ 2 ] , 'finish' , true , - 1 ) ;
119-
120- assertLastStatus ( players [ 0 ] , 'destroy' , true ) ;
121- assertLastStatus ( players [ 1 ] , 'destroy' , true ) ;
122- assertLastStatus ( players [ 2 ] , 'destroy' , true ) ;
116+ assertLastStatus ( players [ 0 ] , 'finish' , true ) ;
117+ assertLastStatus ( players [ 1 ] , 'finish' , true ) ;
118+ assertLastStatus ( players [ 2 ] , 'finish' , true ) ;
123119
124120 expect ( completed ) . toBeTruthy ( ) ;
125121 } ) ;
126122
127- it ( 'should call destroy automatically when finished if no parent player is present' , ( ) => {
128- var group = new AnimationGroupPlayer ( players ) ;
123+ it ( 'should not call destroy automatically when finished even if a parent player finishes' ,
124+ ( ) => {
125+ var group = new AnimationGroupPlayer ( players ) ;
126+ var parent = new AnimationGroupPlayer ( [ group , new MockAnimationPlayer ( ) ] ) ;
129127
130- group . play ( ) ;
128+ group . play ( ) ;
131129
132- assertLastStatus ( players [ 0 ] , 'destroy' , false ) ;
133- assertLastStatus ( players [ 1 ] , 'destroy' , false ) ;
134- assertLastStatus ( players [ 2 ] , 'destroy' , false ) ;
130+ assertLastStatus ( players [ 0 ] , 'destroy' , false ) ;
131+ assertLastStatus ( players [ 1 ] , 'destroy' , false ) ;
132+ assertLastStatus ( players [ 2 ] , 'destroy' , false ) ;
135133
136- group . finish ( ) ;
134+ group . finish ( ) ;
137135
138- assertLastStatus ( players [ 0 ] , 'destroy' , true ) ;
139- assertLastStatus ( players [ 1 ] , 'destroy' , true ) ;
140- assertLastStatus ( players [ 2 ] , 'destroy' , true ) ;
141- } ) ;
136+ assertLastStatus ( players [ 0 ] , 'destroy' , false ) ;
137+ assertLastStatus ( players [ 1 ] , 'destroy' , false ) ;
138+ assertLastStatus ( players [ 2 ] , 'destroy' , false ) ;
142139
143- it ( 'should not call destroy automatically when finished if a parent player is present' , ( ) => {
144- var group = new AnimationGroupPlayer ( players ) ;
145- var parent = new AnimationGroupPlayer ( [ group , new MockAnimationPlayer ( ) ] ) ;
146-
147- group . play ( ) ;
148-
149- assertLastStatus ( players [ 0 ] , 'destroy' , false ) ;
150- assertLastStatus ( players [ 1 ] , 'destroy' , false ) ;
151- assertLastStatus ( players [ 2 ] , 'destroy' , false ) ;
152-
153- group . finish ( ) ;
140+ parent . finish ( ) ;
154141
155- assertLastStatus ( players [ 0 ] , 'destroy' , false ) ;
156- assertLastStatus ( players [ 1 ] , 'destroy' , false ) ;
157- assertLastStatus ( players [ 2 ] , 'destroy' , false ) ;
158-
159- parent . finish ( ) ;
160-
161- assertLastStatus ( players [ 0 ] , 'destroy' , true ) ;
162- assertLastStatus ( players [ 1 ] , 'destroy' , true ) ;
163- assertLastStatus ( players [ 2 ] , 'destroy' , true ) ;
164- } ) ;
142+ assertLastStatus ( players [ 0 ] , 'destroy' , false ) ;
143+ assertLastStatus ( players [ 1 ] , 'destroy' , false ) ;
144+ assertLastStatus ( players [ 2 ] , 'destroy' , false ) ;
145+ } ) ;
165146
166147 it ( 'should function without any players' , ( ) => {
167148 var group = new AnimationGroupPlayer ( [ ] ) ;
@@ -193,5 +174,31 @@ export function main() {
193174 flushMicrotasks ( ) ;
194175 expect ( completed ) . toEqual ( true ) ;
195176 } ) ) ;
177+
178+ it ( 'should not allow the player to be destroyed if it already has been destroyed unless reset' ,
179+ fakeAsync ( ( ) => {
180+ var p1 = new MockAnimationPlayer ( ) ;
181+ var p2 = new MockAnimationPlayer ( ) ;
182+ var innerPlayers = [ p1 , p2 ] ;
183+
184+ var groupPlayer = new AnimationGroupPlayer ( innerPlayers ) ;
185+ expect ( p1 . log [ p1 . log . length - 1 ] ) . not . toContain ( 'destroy' ) ;
186+ expect ( p2 . log [ p2 . log . length - 1 ] ) . not . toContain ( 'destroy' ) ;
187+
188+ groupPlayer . destroy ( ) ;
189+ expect ( p1 . log [ p1 . log . length - 1 ] ) . toContain ( 'destroy' ) ;
190+ expect ( p2 . log [ p2 . log . length - 1 ] ) . toContain ( 'destroy' ) ;
191+
192+ p1 . log = p2 . log = [ ] ;
193+
194+ groupPlayer . destroy ( ) ;
195+ expect ( p1 . log [ p1 . log . length - 1 ] ) . not . toContain ( 'destroy' ) ;
196+ expect ( p2 . log [ p2 . log . length - 1 ] ) . not . toContain ( 'destroy' ) ;
197+
198+ groupPlayer . reset ( ) ;
199+ groupPlayer . destroy ( ) ;
200+ expect ( p1 . log [ p1 . log . length - 1 ] ) . toContain ( 'destroy' ) ;
201+ expect ( p2 . log [ p2 . log . length - 1 ] ) . toContain ( 'destroy' ) ;
202+ } ) ) ;
196203 } ) ;
197204}
0 commit comments