1
16
17 import org.as2lib.core.BasicClass;
18 import org.as2lib.env.reflect.ClassInfo;
19 import org.as2lib.test.speed.TestResultLayout;
20 import org.as2lib.test.speed.TestSuiteResult;
21 import org.as2lib.test.speed.MethodInvocation;
22 import org.as2lib.test.speed.ConfigurableTestSuiteResult;
23 import org.as2lib.test.speed.SimpleTestSuiteResult;
24 import org.as2lib.test.speed.layout.MethodLayout;
25
26
32 class org.as2lib.test.speed.layout.ClassLayout extends BasicClass implements TestResultLayout {
33
34
35 private var result:ConfigurableTestSuiteResult;
36
37
38 private var methodInvocations:Array;
39
40
43 public function ClassLayout(Void) {
44 }
45
46
53 public function layOut(testSuiteResult:TestSuiteResult):TestSuiteResult {
54 this.result = new SimpleTestSuiteResult(testSuiteResult.getName());
55 this.methodInvocations = testSuiteResult.getAllMethodInvocations();
56 for (var i:Number = 0; i < this.methodInvocations.length; i++) {
57 var methodInvocation:MethodInvocation = this.methodInvocations[i];
58 i -= addMethodInvocations(ClassInfo(methodInvocation.getMethod().getDeclaringType()));
59 }
60 this.result.sort(SimpleTestSuiteResult.TIME, true);
61 return this.result;
62 }
63
64
71 private function addMethodInvocations(clazz:ClassInfo):Number {
72 var count:Number = 0;
73 var classResult:ConfigurableTestSuiteResult = new SimpleTestSuiteResult(clazz.getFullName());
74 for (var i:Number = 0; i < this.methodInvocations.length; i++) {
75 var methodInvocation:MethodInvocation = this.methodInvocations[i];
76 if (methodInvocation.getMethod().getDeclaringType() == clazz) {
77 classResult.addTestResult(methodInvocation);
78 this.methodInvocations.splice(i, 1);
79 i--;
80 count++;
81 }
82 }
83 this.result.addTestResult((new MethodLayout()).layOut(classResult));
84 return count;
85 }
86
87 }