OLD | NEW |
| (Empty) |
1 <!DOCTYPE html> | |
2 <!-- | |
3 Copyright (c) 2016 The Chromium Authors. All rights reserved. | |
4 Use of this source code is governed by a BSD-style license that can be | |
5 found in the LICENSE file. | |
6 --> | |
7 <link rel="import" href="/tracing/base/running_statistics.html"> | |
8 <link rel="import" href="/tracing/base/statistics.html"> | |
9 <script> | |
10 'use strict'; | |
11 | |
12 tr.b.unittest.testSuite(function() { | |
13 var RunningStatistics = tr.b.RunningStatistics; | |
14 var Statistics = tr.b.Statistics; | |
15 | |
16 function run(data) { | |
17 var running = new RunningStatistics(); | |
18 data.forEach(x => running.add(x)); | |
19 return running; | |
20 } | |
21 | |
22 test('sum', function() { | |
23 var data; | |
24 data = []; | |
25 assert.closeTo(Statistics.sum(data), run(data).sum, 1e-6); | |
26 data = [1]; | |
27 assert.closeTo(Statistics.sum(data), run(data).sum, 1e-6); | |
28 data = [1, 2, 3]; | |
29 assert.closeTo(Statistics.sum(data), run(data).sum, 1e-6); | |
30 data = [2, 4, 4, 2]; | |
31 assert.closeTo(Statistics.sum(data), run(data).sum, 1e-6); | |
32 data = [Infinity, Infinity, Infinity, 4, 4, Infinity, 1]; | |
33 assert.equal(Statistics.sum(data), run(data).sum, Infinity); | |
34 data = [-Infinity, -Infinity, 2, -Infinity, 5, -Infinity]; | |
35 assert.equal(Statistics.sum(data), run(data).sum, -Infinity); | |
36 }); | |
37 | |
38 test('min', function() { | |
39 var data; | |
40 data = []; | |
41 assert.equal(Statistics.min(data), run(data).min); | |
42 data = [1]; | |
43 assert.equal(Statistics.min(data), run(data).min); | |
44 data = [1, 2, 3]; | |
45 assert.equal(Statistics.min(data), run(data).min); | |
46 data = [2, 4, 4, 2]; | |
47 assert.equal(Statistics.min(data), run(data).min); | |
48 }); | |
49 | |
50 test('max', function() { | |
51 var data; | |
52 data = []; | |
53 assert.equal(Statistics.max(data), run(data).max); | |
54 data = [1]; | |
55 assert.equal(Statistics.max(data), run(data).max); | |
56 data = [1, 2, 3]; | |
57 assert.equal(Statistics.max(data), run(data).max); | |
58 data = [2, 4, 4, 2]; | |
59 assert.equal(Statistics.max(data), run(data).max); | |
60 }); | |
61 | |
62 test('mean', function() { | |
63 var data; | |
64 data = []; | |
65 assert.equal(Statistics.mean(data), run(data).mean); | |
66 data = [1]; | |
67 assert.equal(Statistics.mean(data), run(data).mean); | |
68 data = [1, 2, 3]; | |
69 assert.closeTo(Statistics.mean(data), run(data).mean, 1e-6); | |
70 data = [2, 4, 4, 2]; | |
71 assert.closeTo(Statistics.mean(data), run(data).mean, 1e-6); | |
72 data = [Infinity, Infinity, Infinity, 4, 4, Infinity, 1]; | |
73 assert.equal(Statistics.mean(data), run(data).mean, Infinity); | |
74 data = [-Infinity, -Infinity, 2, -Infinity, 5, -Infinity]; | |
75 assert.equal(Statistics.mean(data), run(data).mean, -Infinity); | |
76 }); | |
77 | |
78 test('geometricMean', function() { | |
79 var data; | |
80 data = []; | |
81 assert.equal(Statistics.geometricMean(data), run(data).geometricMean); | |
82 data = [-1]; | |
83 assert.equal(Statistics.geometricMean(data), run(data).geometricMean); | |
84 data = [1]; | |
85 assert.equal(Statistics.geometricMean(data), run(data).geometricMean); | |
86 data = [1, 2, 3]; | |
87 assert.closeTo(Statistics.geometricMean(data), | |
88 run(data).geometricMean, 1e-6); | |
89 data = [2, 4, 4, 2]; | |
90 assert.closeTo(Statistics.geometricMean(data), | |
91 run(data).geometricMean, 1e-6); | |
92 }); | |
93 | |
94 test('variance', function() { | |
95 var data; | |
96 data = []; | |
97 assert.equal(Statistics.variance(data), run(data).variance); | |
98 data = [1]; | |
99 assert.equal(Statistics.variance(data), run(data).variance); | |
100 data = [1, 2, 3]; | |
101 assert.closeTo(Statistics.variance(data), run(data).variance, 1e-6); | |
102 data = [2, 4, 4, 2]; | |
103 assert.closeTo(Statistics.variance(data), run(data).variance, 1e-6); | |
104 }); | |
105 | |
106 test('stddev', function() { | |
107 var data; | |
108 data = []; | |
109 assert.equal(Statistics.stddev(data), run(data).stddev); | |
110 data = [1]; | |
111 assert.equal(Statistics.stddev(data), run(data).stddev); | |
112 data = [1, 2, 3]; | |
113 assert.closeTo(Statistics.stddev(data), run(data).stddev, 1e-6); | |
114 data = [2, 4, 4, 2]; | |
115 assert.closeTo(Statistics.stddev(data), run(data).stddev, 1e-6); | |
116 }); | |
117 | |
118 test('merge', function() { | |
119 var data1 = []; | |
120 var data2 = []; | |
121 var data = data1.concat(data2); | |
122 var stats = run(data1).merge(run(data2)); | |
123 assert.equal(Statistics.sum(data), stats.sum); | |
124 assert.equal(Statistics.min(data), stats.min); | |
125 assert.equal(Statistics.max(data), stats.max); | |
126 assert.equal(Statistics.mean(data), stats.mean); | |
127 assert.equal(Statistics.variance(data), stats.variance); | |
128 assert.equal(Statistics.stddev(data), stats.stddev); | |
129 assert.equal(Statistics.geometricMean(data), stats.geometricMean); | |
130 | |
131 data1 = []; | |
132 data2 = [1, 2, 3]; | |
133 data = data1.concat(data2); | |
134 stats = run(data1).merge(run(data2)); | |
135 assert.equal(Statistics.sum(data), stats.sum); | |
136 assert.equal(Statistics.min(data), stats.min); | |
137 assert.equal(Statistics.max(data), stats.max); | |
138 assert.equal(Statistics.mean(data), stats.mean); | |
139 assert.closeTo(Statistics.variance(data), stats.variance, 1e-6); | |
140 assert.closeTo(Statistics.stddev(data), stats.stddev, 1e-6); | |
141 assert.closeTo(Statistics.geometricMean(data), stats.geometricMean, 1e-6); | |
142 | |
143 data1 = [1, 2, 3]; | |
144 data2 = []; | |
145 data = data1.concat(data2); | |
146 stats = run(data1).merge(run(data2)); | |
147 assert.equal(Statistics.sum(data), stats.sum); | |
148 assert.equal(Statistics.min(data), stats.min); | |
149 assert.equal(Statistics.max(data), stats.max); | |
150 assert.equal(Statistics.mean(data), stats.mean); | |
151 assert.closeTo(Statistics.variance(data), stats.variance, 1e-6); | |
152 assert.closeTo(Statistics.stddev(data), stats.stddev, 1e-6); | |
153 assert.closeTo(Statistics.geometricMean(data), stats.geometricMean, 1e-6); | |
154 | |
155 data1 = [1, 2, 3]; | |
156 data2 = [10, 20, 100]; | |
157 data = data1.concat(data2); | |
158 stats = run(data1).merge(run(data2)); | |
159 assert.equal(Statistics.sum(data), stats.sum); | |
160 assert.equal(Statistics.min(data), stats.min); | |
161 assert.equal(Statistics.max(data), stats.max); | |
162 assert.equal(Statistics.mean(data), stats.mean); | |
163 assert.closeTo(Statistics.variance(data), stats.variance, 1e-6); | |
164 assert.closeTo(Statistics.stddev(data), stats.stddev, 1e-6); | |
165 assert.closeTo(Statistics.geometricMean(data), stats.geometricMean, 1e-6); | |
166 | |
167 data1 = [1, 1, 1, 1, 1]; | |
168 data2 = [10, 20, 10, 40]; | |
169 data = data1.concat(data2); | |
170 stats = run(data1).merge(run(data2)); | |
171 assert.equal(Statistics.sum(data), stats.sum); | |
172 assert.equal(Statistics.min(data), stats.min); | |
173 assert.equal(Statistics.max(data), stats.max); | |
174 assert.equal(Statistics.mean(data), stats.mean); | |
175 assert.closeTo(Statistics.variance(data), stats.variance, 1e-6); | |
176 assert.closeTo(Statistics.stddev(data), stats.stddev, 1e-6); | |
177 assert.closeTo(Statistics.geometricMean(data), stats.geometricMean, 1e-6); | |
178 }); | |
179 | |
180 test('serialization', function() { | |
181 var data = [1, 2, 3]; | |
182 var dict = run(data).asDict(); | |
183 var cloneDict = RunningStatistics.fromDict(dict).asDict(); | |
184 for (var field = 0; field < dict.length; ++field) { | |
185 assert.closeTo(dict[field], cloneDict[field], 1e-6); | |
186 } | |
187 | |
188 // You can change this number, but when you do, please explain in your CL | |
189 // description why it changed. | |
190 assert.strictEqual(32, JSON.stringify(dict).length); | |
191 }); | |
192 }); | |
193 </script> | |
OLD | NEW |