1// https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/sampler/Sample.html
2package
3{
4    import flash.sampler.*
5    import flash.system.*
6    import flash.utils.*
7    import flash.display.Sprite
8    public class sampleTypes extends Sprite
9    {
10      var b:Boolean = true
11        public function sampleTypes() {
12            flash.sampler.startSampling();
13            for(var i:int=0;i<10000;i++)
14              new Object();
15
16            var cpuSamples:Array=[];
17            var newSamples:Array=[];
18            var delSamples:Array=[];
19            var ids:Array=[]
20
21            var lastTime:Number=0;
22            for each(var s:Sample in getSamples()) {
23
24              assert(s.time > 0); // positive
25              assert(Math.floor(s.time) == s.time, s.time); // integral
26              assert(s.time >= lastTime, s.time + ":" + lastTime); // ascending
27              assert(s.stack == null || s.stack is Array)
28              if(s.stack) {
29                assert(s.stack[0] is StackFrame);
30                assert(s.stack[0].name is String);
31            }
32
33              if(s is NewObjectSample) {
34                var nos = NewObjectSample(s);
35                assert(s.id > 0, s.id);
36                assert(s.type is Class, getQualifiedClassName(s.type));
37                newSamples.push(s);
38                ids[s.id] = "got one";
39              } else if(s is DeleteObjectSample) {
40                var dos = DeleteObjectSample(s);
41                delSamples.push(s);
42                assert(ids[dos.id] == "got one");
43              } else if(s is Sample)
44                cpuSamples.push(s);
45              else {
46                assert(false);
47              }
48              lastTime = s.time;
49            }
50
51            trace(b)
52            trace(newSamples.length > 0)
53            trace(cpuSamples.length > 0)
54            trace(delSamples.length > 0)
55
56        }
57
58        private function assert(e:Boolean, mess:String=null):void {
59          b = e && b;
60          if(true && !e) {
61            if(mess) trace(mess);
62            trace(new Error().getStackTrace());
63          }
64        }
65    }
66}
67