root/as3/BetweenAS3/trunk/tests/fp10/org/libspark/betweenas3/tickers/EnterFrameTickerTest.as

リビジョン 3019, 6.4 kB (コミッタ: yossy, コミット時期: 4 年 前)

BetweenAS3: Merged "Dramatic Before After" branch to trunk.

Line 
1 /*
2  * BetweenAS3
3  *
4  * Licensed under the MIT License
5  *
6  * Copyright (c) 2009 BeInteractive! (www.be-interactive.org) and
7  *                    Spark project  (www.libspark.org)
8  *
9  * Permission is hereby granted, free of charge, to any person obtaining a copy
10  * of this software and associated documentation files (the "Software"), to deal
11  * in the Software without restriction, including without limitation the rights
12  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13  * copies of the Software, and to permit persons to whom the Software is
14  * furnished to do so, subject to the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be included in
17  * all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25  * THE SOFTWARE.
26  *
27  */
28 package org.libspark.betweenas3.tickers
29 {
30         import flash.utils.getTimer;
31         import org.libspark.as3unit.assert.*;
32         import org.libspark.as3unit.test;
33        
34         use namespace test;
35        
36         /**
37          * @author      yossy:beinteractive
38          */
39         public class EnterFrameTickerTest
40         {
41                 test function update():void
42                 {
43                         var l01:MockTickerListener = new MockTickerListener(1);
44                         var l02:MockTickerListener = new MockTickerListener(1);
45                         var l03:MockTickerListener = new MockTickerListener(2);
46                         var l04:MockTickerListener = new MockTickerListener(3);
47                         var l05:MockTickerListener = new MockTickerListener(5);
48                         var l06:MockTickerListener = new MockTickerListener(8);
49                         var l07:MockTickerListener = new MockTickerListener(13);
50                         var l08:MockTickerListener = new MockTickerListener(21);
51                         var l09:MockTickerListener = new MockTickerListener(34);
52                         var l10:MockTickerListener = new MockTickerListener(55);
53                         var l11:MockTickerListener = new MockTickerListener(89);
54                         var l12:MockTickerListener = new MockTickerListener(144);
55                         var l13:MockTickerListener = new MockTickerListener(233);
56                         var l14:MockTickerListener = new MockTickerListener(377);
57                         var l15:MockTickerListener = new MockTickerListener(610);
58                         var l16:MockTickerListener = new MockTickerListener(987);
59                         var l17:MockTickerListener = new MockTickerListener(1597);
60                         var l18:MockTickerListener = new MockTickerListener(2584);
61                         var l19:MockTickerListener = new MockTickerListener(4181);
62                         var l20:MockTickerListener = new MockTickerListener(6765);
63                         var l21:MockTickerListener = new MockTickerListener(10946);
64                         var l22:MockTickerListener = new MockTickerListener(17711);
65                         var l23:MockTickerListener = new MockTickerListener(28657);
66                         var l24:MockTickerListener = new MockTickerListener(46368);
67                        
68                         var ticker:EnterFrameTicker = new EnterFrameTicker();
69                        
70                         ticker.addTickerListener(l01);
71                         ticker.addTickerListener(l02);
72                         ticker.addTickerListener(l03);
73                         ticker.addTickerListener(l04);
74                         ticker.addTickerListener(l05);
75                         ticker.addTickerListener(l06);
76                         ticker.addTickerListener(l07);
77                         ticker.addTickerListener(l08);
78                         ticker.addTickerListener(l09);
79                         ticker.addTickerListener(l10);
80                         ticker.addTickerListener(l11);
81                         ticker.addTickerListener(l12);
82                         ticker.addTickerListener(l13);
83                         ticker.addTickerListener(l14);
84                         ticker.addTickerListener(l15);
85                         ticker.addTickerListener(l16);
86                         ticker.addTickerListener(l17);
87                         ticker.addTickerListener(l18);
88                         ticker.addTickerListener(l19);
89                         ticker.addTickerListener(l20);
90                         ticker.addTickerListener(l21);
91                         ticker.addTickerListener(l22);
92                         ticker.addTickerListener(l23);
93                         ticker.addTickerListener(l24);
94                        
95                         for (var i:uint = 1; i < 50000; ++i) {
96                                 ticker.update(null);
97                         }
98                        
99                         assertEquals(1, l01.c);
100                         assertEquals(1, l02.c);
101                         assertEquals(2, l03.c);
102                         assertEquals(3, l04.c);
103                         assertEquals(5, l05.c);
104                         assertEquals(8, l06.c);
105                         assertEquals(13, l07.c);
106                         assertEquals(21, l08.c);
107                         assertEquals(34, l09.c);
108                         assertEquals(55, l10.c);
109                         assertEquals(89, l11.c);
110                         assertEquals(144, l12.c);
111                         assertEquals(233, l13.c);
112                         assertEquals(377, l14.c);
113                         assertEquals(610, l15.c);
114                         assertEquals(987, l16.c);
115                         assertEquals(1597, l17.c);
116                         assertEquals(2584, l18.c);
117                         assertEquals(4181, l19.c);
118                         assertEquals(6765, l20.c);
119                         assertEquals(10946, l21.c);
120                         assertEquals(17711, l22.c);
121                         assertEquals(28657, l23.c);
122                         assertEquals(46368, l24.c);
123                 }
124                
125                 /**
126                 test function speed():void
127                 {
128                         var i:uint;
129                         var ticker:EnterFrameTicker = new EnterFrameTicker();
130                        
131                         for (i = 0; i < 8000; ++i) {
132                                 ticker.addTickerListener(new MockTickerListener(600));
133                         }
134                        
135                         var t:uint = getTimer();
136                        
137                         for (i = 0; i < 600; ++i) {
138                                 ticker.update(null);
139                         }
140                        
141                         trace('time<' + (getTimer() - t) + '>');
142                 }
143                 /**/
144                
145                 test function addListenerInTick():void
146                 {
147                         var ticker:EnterFrameTicker = new EnterFrameTicker();
148                        
149                         var l3:MockTickerListener = new MockTickerListener(5);
150                         var l2:MockTickerListener = new MockTickerListener(5);
151                         var l1:AddingListenerTickerListener = new AddingListenerTickerListener(5, ticker, l3);
152                        
153                         ticker.addTickerListener(l1);
154                         ticker.addTickerListener(l2);
155                        
156                         ticker.update(null);
157                         ticker.update(null);
158                        
159                         assertEquals(2, l1.c);
160                         assertEquals(2, l2.c);
161                         assertEquals(1, l3.c);
162                 }
163         }
164 }
165
166 import org.libspark.betweenas3.core.ticker.TickerListener;
167 import org.libspark.betweenas3.core.ticker.ITicker;
168
169 internal class MockTickerListener extends TickerListener
170 {
171         public function MockTickerListener(n:uint)
172         {
173                 this.n = n;
174                 this.c = 0;
175         }
176        
177         public var n:uint;
178         public var c:uint;
179        
180         override public function tick(time:Number):Boolean
181         {
182                 return ++c == n;
183         }
184 }
185
186 internal class AddingListenerTickerListener extends MockTickerListener
187 {
188         public function AddingListenerTickerListener(n:uint, ticker:ITicker, listener:TickerListener)
189         {
190                 super(n);
191                
192                 this.ticker = ticker;
193                 this.listener = listener;
194         }
195        
196         public var ticker:ITicker;
197         public var listener:TickerListener;
198        
199         override public function tick(time:Number):Boolean
200         {
201                 if (c == 0) {
202                         ticker.addTickerListener(listener);
203                 }
204                 return super.tick(time);
205         }
206 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。