OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <!-- | 2 <!-- |
3 Copyright 2016 The Chromium Authors. All rights reserved. | 3 Copyright 2016 The Chromium Authors. All rights reserved. |
4 Use of this source code is governed by a BSD-style license that can be | 4 Use of this source code is governed by a BSD-style license that can be |
5 found in the LICENSE file. | 5 found in the LICENSE file. |
6 --> | 6 --> |
7 | 7 |
8 <link rel="import" href="/tracing/value/diagnostics/generic.html"> | 8 <link rel="import" href="/tracing/value/diagnostics/generic.html"> |
9 <link rel="import" href="/tracing/value/histogram.html"> | 9 <link rel="import" href="/tracing/value/histogram.html"> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 | 40 |
41 test('significance', function() { | 41 test('significance', function() { |
42 assert.strictEqual( | 42 assert.strictEqual( |
43 new tr.v.Histogram(unitlessNumber).getDifferenceSignificance( | 43 new tr.v.Histogram(unitlessNumber).getDifferenceSignificance( |
44 new tr.v.Histogram(unitlessNumber)), tr.v.Significance.DONT_CARE); | 44 new tr.v.Histogram(unitlessNumber)), tr.v.Significance.DONT_CARE); |
45 | 45 |
46 var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 10); | 46 var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 10); |
47 var numericA = new tr.v.Histogram(unitlessNumber_sIB, boundaries); | 47 var numericA = new tr.v.Histogram(unitlessNumber_sIB, boundaries); |
48 var numericB = new tr.v.Histogram(unitlessNumber_sIB, boundaries); | 48 var numericB = new tr.v.Histogram(unitlessNumber_sIB, boundaries); |
49 for (var i = 0; i < 100; ++i) { | 49 for (var i = 0; i < 100; ++i) { |
50 numericA.add(i); | 50 numericA.addSample(i); |
51 numericB.add(i * 0.85); | 51 numericB.addSample(i * 0.85); |
52 } | 52 } |
53 | 53 |
54 assert.strictEqual(numericA.getDifferenceSignificance(numericB), | 54 assert.strictEqual(numericA.getDifferenceSignificance(numericB), |
55 tr.v.Significance.INSIGNIFICANT); | 55 tr.v.Significance.INSIGNIFICANT); |
56 assert.strictEqual(numericB.getDifferenceSignificance(numericA), | 56 assert.strictEqual(numericB.getDifferenceSignificance(numericA), |
57 tr.v.Significance.INSIGNIFICANT); | 57 tr.v.Significance.INSIGNIFICANT); |
58 assert.strictEqual(numericA.getDifferenceSignificance(numericB, 0.1), | 58 assert.strictEqual(numericA.getDifferenceSignificance(numericB, 0.1), |
59 tr.v.Significance.SIGNIFICANT); | 59 tr.v.Significance.SIGNIFICANT); |
60 assert.strictEqual(numericB.getDifferenceSignificance(numericA, 0.1), | 60 assert.strictEqual(numericB.getDifferenceSignificance(numericA, 0.1), |
61 tr.v.Significance.SIGNIFICANT); | 61 tr.v.Significance.SIGNIFICANT); |
62 }); | 62 }); |
63 | 63 |
64 test('numericBasic', function() { | 64 test('numericBasic', function() { |
65 var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 65 var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
66 assert.equal(n.getBinForValue(250).range.min, 200); | 66 assert.equal(n.getBinForValue(250).range.min, 200); |
67 assert.equal(n.getBinForValue(250).range.max, 300); | 67 assert.equal(n.getBinForValue(250).range.max, 300); |
68 | 68 |
69 var dm0 = new tr.v.d.DiagnosticMap(); | 69 n.addSample(-1, {foo: new tr.v.d.Generic('a')}); |
70 var dm1 = new tr.v.d.DiagnosticMap(); | 70 n.addSample(0, {foo: new tr.v.d.Generic('b')}); |
71 var dm2 = new tr.v.d.DiagnosticMap(); | 71 n.addSample(0, {foo: new tr.v.d.Generic('c')}); |
72 var dm3 = new tr.v.d.DiagnosticMap(); | 72 n.addSample(500, {foo: new tr.v.d.Generic('c')}); |
73 var dm4 = new tr.v.d.DiagnosticMap(); | 73 n.addSample(999, {foo: new tr.v.d.Generic('d')}); |
74 var dm5 = new tr.v.d.DiagnosticMap(); | 74 n.addSample(1000, {foo: new tr.v.d.Generic('d')}); |
75 dm0.set('foo', new tr.v.d.Generic('a')); | |
76 dm1.set('foo', new tr.v.d.Generic('b')); | |
77 dm2.set('foo', new tr.v.d.Generic('c')); | |
78 dm3.set('foo', new tr.v.d.Generic('c')); | |
79 dm4.set('foo', new tr.v.d.Generic('d')); | |
80 dm5.set('foo', new tr.v.d.Generic('d')); | |
81 | |
82 n.add(-1, dm0); | |
83 n.add(0, dm1); | |
84 n.add(0, dm2); | |
85 n.add(500, dm3); | |
86 n.add(999, dm4); | |
87 n.add(1000, dm5); | |
88 assert.equal(n.underflowBin.count, 1); | 75 assert.equal(n.underflowBin.count, 1); |
89 | 76 |
90 assert.equal(n.getBinForValue(0).count, 2); | 77 assert.equal(n.getBinForValue(0).count, 2); |
91 assert.deepEqual( | 78 assert.deepEqual( |
92 n.getBinForValue(0).diagnosticMaps.map(dm => dm.get('foo').value), | 79 n.getBinForValue(0).diagnosticMaps.map(dm => dm.get('foo').value), |
93 ['b', 'c']); | 80 ['b', 'c']); |
94 | 81 |
95 assert.equal(n.getBinForValue(500).count, 1); | 82 assert.equal(n.getBinForValue(500).count, 1); |
96 assert.equal(n.getBinForValue(999).count, 1); | 83 assert.equal(n.getBinForValue(999).count, 1); |
97 | 84 |
98 assert.equal(n.overflowBin.count, 1); | 85 assert.equal(n.overflowBin.count, 1); |
99 assert.equal(n.numValues, 6); | 86 assert.equal(n.numValues, 6); |
100 assert.closeTo(n.average, 416.3, 0.1); | 87 assert.closeTo(n.average, 416.3, 0.1); |
101 }); | 88 }); |
102 | 89 |
103 test('numericNans', function() { | 90 test('numericNans', function() { |
104 var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 91 var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
105 | 92 |
106 var dm0 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('b')}); | 93 n.addSample(undefined, {foo: new tr.v.d.Generic('b')}); |
107 var dm1 = tr.v.d.DiagnosticMap.fromObject({'foo': new tr.v.d.Generic('c')}); | 94 n.addSample(NaN, {'foo': new tr.v.d.Generic('c')}); |
108 | 95 n.addSample(undefined); |
109 n.add(undefined, dm0); | 96 n.addSample(NaN); |
110 n.add(NaN, dm1); | |
111 n.add(undefined); | |
112 n.add(NaN); | |
113 | 97 |
114 assert.equal(n.numNans, 4); | 98 assert.equal(n.numNans, 4); |
115 assert.deepEqual(n.nanDiagnosticMaps.map(dm => dm.get('foo').value), | 99 assert.deepEqual(n.nanDiagnosticMaps.map(dm => dm.get('foo').value), |
116 ['b', 'c']); | 100 ['b', 'c']); |
117 | 101 |
118 var n2 = n.clone(); | 102 var n2 = n.clone(); |
119 assert.instanceOf(n2.nanDiagnosticMaps[0], tr.v.d.DiagnosticMap); | 103 assert.instanceOf(n2.nanDiagnosticMaps[0], tr.v.d.DiagnosticMap); |
120 assert.instanceOf(n2.nanDiagnosticMaps[0].get('foo'), tr.v.d.Generic); | 104 assert.instanceOf(n2.nanDiagnosticMaps[0].get('foo'), tr.v.d.Generic); |
121 }); | 105 }); |
122 | 106 |
123 test('addHistogramsValid', function() { | 107 test('addHistogramsValid', function() { |
124 var n0 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 108 var n0 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
125 var n1 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 109 var n1 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
126 | 110 |
127 var dm0 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('a0')}); | 111 n0.addSample(-1, {foo: new tr.v.d.Generic('a0')}); |
128 var dm1 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('b0')}); | 112 n0.addSample(0, {foo: new tr.v.d.Generic('b0')}); |
129 var dm2 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('c0')}); | 113 n0.addSample(0, {foo: new tr.v.d.Generic('c0')}); |
130 var dm3 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('c0')}); | 114 n0.addSample(500, {foo: new tr.v.d.Generic('c0')}); |
131 var dm4 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('d0')}); | 115 n0.addSample(1000, {foo: new tr.v.d.Generic('d0')}); |
132 var dm5 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('e0')}); | 116 n0.addSample(NaN, {foo: new tr.v.d.Generic('e0')}); |
133 var dm6 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('a1')}); | |
134 var dm7 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('b1')}); | |
135 var dm8 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('c1')}); | |
136 var dm9 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('d1')}); | |
137 var dm10 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('d1')}); | |
138 var dm11 = tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('e1')}); | |
139 | 117 |
140 n0.add(-1, dm0); | 118 n1.addSample(-1, {foo: new tr.v.d.Generic('a1')}); |
141 n0.add(0, dm1); | 119 n1.addSample(0, {foo: new tr.v.d.Generic('b1')}); |
142 n0.add(0, dm2); | 120 n1.addSample(0, {foo: new tr.v.d.Generic('c1')}); |
143 n0.add(500, dm3); | 121 n1.addSample(999, {foo: new tr.v.d.Generic('d1')}); |
144 n0.add(1000, dm4); | 122 n1.addSample(1000, {foo: new tr.v.d.Generic('d1')}); |
145 n0.add(NaN, dm5); | 123 n1.addSample(NaN, {foo: new tr.v.d.Generic('e1')}); |
146 | |
147 n1.add(-1, dm6); | |
148 n1.add(0, dm7); | |
149 n1.add(0, dm8); | |
150 n1.add(999, dm9); | |
151 n1.add(1000, dm10); | |
152 n1.add(NaN, dm11); | |
153 | 124 |
154 n0.addNumeric(n1); | 125 n0.addNumeric(n1); |
155 | 126 |
156 assert.equal(n0.numNans, 2); | 127 assert.equal(n0.numNans, 2); |
157 assert.deepEqual(n0.nanDiagnosticMaps.map(dmd => dmd.get('foo').value), | 128 assert.deepEqual(n0.nanDiagnosticMaps.map(dmd => dmd.get('foo').value), |
158 ['e0', 'e1']); | 129 ['e0', 'e1']); |
159 | 130 |
160 assert.equal(n0.underflowBin.count, 2); | 131 assert.equal(n0.underflowBin.count, 2); |
161 assert.deepEqual( | 132 assert.deepEqual( |
162 n0.underflowBin.diagnosticMaps.map(dmd => dmd.get('foo').value), | 133 n0.underflowBin.diagnosticMaps.map(dmd => dmd.get('foo').value), |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 tr.v.HistogramBinBoundaries.createLinear(0, 1001, 10)); | 172 tr.v.HistogramBinBoundaries.createLinear(0, 1001, 10)); |
202 var n2 = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs, | 173 var n2 = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs, |
203 tr.v.HistogramBinBoundaries.createLinear(0, 1000, 11)); | 174 tr.v.HistogramBinBoundaries.createLinear(0, 1000, 11)); |
204 | 175 |
205 assert.throws(n0.addNumeric.bind(n0, n1), Error); | 176 assert.throws(n0.addNumeric.bind(n0, n1), Error); |
206 assert.throws(n0.addNumeric.bind(n0, n2), Error); | 177 assert.throws(n0.addNumeric.bind(n0, n2), Error); |
207 }); | 178 }); |
208 | 179 |
209 test('addNumericWithNonDiagnosticMapThrows', function() { | 180 test('addNumericWithNonDiagnosticMapThrows', function() { |
210 var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 181 var n = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
211 assert.throws(n.add.bind(42, 'foo'), Error); | 182 assert.throws(n.addSample.bind(42, 'foo'), Error); |
212 }); | 183 }); |
213 | 184 |
214 test('numericPercentile', function() { | 185 test('numericPercentile', function() { |
215 function check(array, min, max, bins, precision) { | 186 function check(array, min, max, bins, precision) { |
216 var boundaries = tr.v.HistogramBinBoundaries.createLinear(min, max, bins); | 187 var boundaries = tr.v.HistogramBinBoundaries.createLinear(min, max, bins); |
217 var n = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs, boundaries); | 188 var n = new tr.v.Histogram(tr.v.Unit.byName.timeDurationInMs, boundaries); |
218 array.forEach((x) => n.add( | 189 array.forEach((x) => n.addSample(x, {foo: new tr.v.d.Generic('x')})); |
219 x, tr.v.d.DiagnosticMap.fromObject({foo: new tr.v.d.Generic('x')}))); | |
220 [0.25, 0.5, 0.75, 0.8, 0.95, 0.99].forEach(function(percent) { | 190 [0.25, 0.5, 0.75, 0.8, 0.95, 0.99].forEach(function(percent) { |
221 var expected = tr.b.Statistics.percentile(array, percent); | 191 var expected = tr.b.Statistics.percentile(array, percent); |
222 var actual = n.getApproximatePercentile(percent); | 192 var actual = n.getApproximatePercentile(percent); |
223 assert.closeTo(expected, actual, precision); | 193 assert.closeTo(expected, actual, precision); |
224 }); | 194 }); |
225 } | 195 } |
226 check([1, 2, 5, 7], 0.5, 10.5, 10, 1e-3); | 196 check([1, 2, 5, 7], 0.5, 10.5, 10, 1e-3); |
227 check([3, 3, 4, 4], 0.5, 10.5, 10, 1e-3); | 197 check([3, 3, 4, 4], 0.5, 10.5, 10, 1e-3); |
228 check([1, 10], 0.5, 10.5, 10, 1e-3); | 198 check([1, 10], 0.5, 10.5, 10, 1e-3); |
229 check([1, 2, 3, 4, 5], 0.5, 10.5, 10, 1e-3); | 199 check([1, 2, 3, 4, 5], 0.5, 10.5, 10, 1e-3); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 var b1 = new tr.v.HistogramBinBoundaries(8); | 305 var b1 = new tr.v.HistogramBinBoundaries(8); |
336 assert.throws(() => b1.addExponentialBins(20, 0 /* must be > 0 */)); | 306 assert.throws(() => b1.addExponentialBins(20, 0 /* must be > 0 */)); |
337 assert.throws(() => b1.addExponentialBins(5 /* must be > 8 */, 3)); | 307 assert.throws(() => b1.addExponentialBins(5 /* must be > 8 */, 3)); |
338 assert.throws(() => b1.addExponentialBins(8 /* must be > 8 */, 3)); | 308 assert.throws(() => b1.addExponentialBins(8 /* must be > 8 */, 3)); |
339 }); | 309 }); |
340 | 310 |
341 test('getSummarizedScalarNumericsWithNames', function() { | 311 test('getSummarizedScalarNumericsWithNames', function() { |
342 var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100); | 312 var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100); |
343 var n = new tr.v.Histogram(unitlessNumber, boundaries); | 313 var n = new tr.v.Histogram(unitlessNumber, boundaries); |
344 | 314 |
345 n.add(50); | 315 n.addSample(50); |
346 n.add(60); | 316 n.addSample(60); |
347 n.add(70); | 317 n.addSample(70); |
348 | 318 |
349 n.customizeSummaryOptions({ | 319 n.customizeSummaryOptions({ |
350 count: true, | 320 count: true, |
351 min: true, | 321 min: true, |
352 max: true, | 322 max: true, |
353 sum: true, | 323 sum: true, |
354 avg: true, | 324 avg: true, |
355 std: true, | 325 std: true, |
356 percentile: [0.5, 1] | 326 percentile: [0.5, 1] |
357 }); | 327 }); |
(...skipping 11 matching lines...) Expand all Loading... |
369 assert.strictEqual(values.avg.value, 60); | 339 assert.strictEqual(values.avg.value, 60); |
370 assert.strictEqual(values.std.value, 10); | 340 assert.strictEqual(values.std.value, 10); |
371 assert.closeTo(values.pct_050.value, 60, 1); | 341 assert.closeTo(values.pct_050.value, 60, 1); |
372 assert.closeTo(values.pct_100.value, 70, 1); | 342 assert.closeTo(values.pct_100.value, 70, 1); |
373 }); | 343 }); |
374 | 344 |
375 test('getSummarizedScalarNumericsWithNamesNoSummaryOptions', function() { | 345 test('getSummarizedScalarNumericsWithNamesNoSummaryOptions', function() { |
376 var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100); | 346 var boundaries = tr.v.HistogramBinBoundaries.createLinear(0, 100, 100); |
377 var n = new tr.v.Histogram(unitlessNumber, boundaries); | 347 var n = new tr.v.Histogram(unitlessNumber, boundaries); |
378 | 348 |
379 n.add(50); | 349 n.addSample(50); |
380 n.add(60); | 350 n.addSample(60); |
381 n.add(70); | 351 n.addSample(70); |
382 | 352 |
383 n.customizeSummaryOptions({ | 353 n.customizeSummaryOptions({ |
384 count: false, | 354 count: false, |
385 min: false, | 355 min: false, |
386 max: false, | 356 max: false, |
387 sum: false, | 357 sum: false, |
388 avg: false, | 358 avg: false, |
389 std: false, | 359 std: false, |
390 percentile: [] | 360 percentile: [] |
391 }); | 361 }); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
433 var n1 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 403 var n1 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
434 // maxNumSampleValues defaults to numBins * 10, which, including the | 404 // maxNumSampleValues defaults to numBins * 10, which, including the |
435 // underflowBin and overflowBin plus this builder's 10 central bins, | 405 // underflowBin and overflowBin plus this builder's 10 central bins, |
436 // is 12 * 10. | 406 // is 12 * 10. |
437 assert.strictEqual(n0.maxNumSampleValues, 120); | 407 assert.strictEqual(n0.maxNumSampleValues, 120); |
438 assert.strictEqual(n1.maxNumSampleValues, 120); | 408 assert.strictEqual(n1.maxNumSampleValues, 120); |
439 var values0 = []; | 409 var values0 = []; |
440 var values1 = []; | 410 var values1 = []; |
441 for (var i = 0; i < 10; ++i) { | 411 for (var i = 0; i < 10; ++i) { |
442 values0.push(i); | 412 values0.push(i); |
443 n0.add(i); | 413 n0.addSample(i); |
444 } | 414 } |
445 for (var i = 10; i < 20; ++i) { | 415 for (var i = 10; i < 20; ++i) { |
446 values1.push(i); | 416 values1.push(i); |
447 n1.add(i); | 417 n1.addSample(i); |
448 } | 418 } |
449 assert.deepEqual(n0.sampleValues, values0); | 419 assert.deepEqual(n0.sampleValues, values0); |
450 assert.deepEqual(n1.sampleValues, values1); | 420 assert.deepEqual(n1.sampleValues, values1); |
451 n0.addNumeric(n1); | 421 n0.addNumeric(n1); |
452 assert.deepEqual(n0.sampleValues, values0.concat(values1)); | 422 assert.deepEqual(n0.sampleValues, values0.concat(values1)); |
453 var n2 = n0.clone(); | 423 var n2 = n0.clone(); |
454 assert.deepEqual(n2.sampleValues, values0.concat(values1)); | 424 assert.deepEqual(n2.sampleValues, values0.concat(values1)); |
455 | 425 |
456 for (var i = 0; i < 200; ++i) | 426 for (var i = 0; i < 200; ++i) |
457 n0.add(i); | 427 n0.addSample(i); |
458 assert.strictEqual(n0.sampleValues.length, n0.maxNumSampleValues); | 428 assert.strictEqual(n0.sampleValues.length, n0.maxNumSampleValues); |
459 | 429 |
460 var n3 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); | 430 var n3 = new tr.v.Histogram(unitlessNumber, TEST_BOUNDARIES); |
461 n3.maxNumSampleValues = 10; | 431 n3.maxNumSampleValues = 10; |
462 for (var i = 0; i < 100; ++i) | 432 for (var i = 0; i < 100; ++i) |
463 n3.add(i); | 433 n3.addSample(i); |
464 assert.strictEqual(n3.sampleValues.length, 10); | 434 assert.strictEqual(n3.sampleValues.length, 10); |
465 }); | 435 }); |
466 | 436 |
467 test('mergeScalarNumerics', function() { | 437 test('mergeScalarNumerics', function() { |
468 var scalarA = new tr.v.ScalarNumeric(tr.v.Unit.byName.timeDurationInMs, 10); | 438 var scalarA = new tr.v.ScalarNumeric(tr.v.Unit.byName.timeDurationInMs, 10); |
469 var scalarB = new tr.v.ScalarNumeric(tr.v.Unit.byName.timeDurationInMs, 20); | 439 var scalarB = new tr.v.ScalarNumeric(tr.v.Unit.byName.timeDurationInMs, 20); |
470 | 440 |
471 var numeric = scalarA.merge(scalarB); | 441 var numeric = scalarA.merge(scalarB); |
472 assert.instanceOf(numeric, tr.v.Histogram); | 442 assert.instanceOf(numeric, tr.v.Histogram); |
473 assert.strictEqual(numeric.maxNumSampleValues, 1000); | 443 assert.strictEqual(numeric.maxNumSampleValues, 1000); |
(...skipping 15 matching lines...) Expand all Loading... |
489 scalarB.value = 'i am also not a number'; | 459 scalarB.value = 'i am also not a number'; |
490 numeric = scalarA.merge(scalarB); | 460 numeric = scalarA.merge(scalarB); |
491 assert.instanceOf(numeric, tr.v.Histogram); | 461 assert.instanceOf(numeric, tr.v.Histogram); |
492 assert.strictEqual(numeric.maxNumSampleValues, 1000); | 462 assert.strictEqual(numeric.maxNumSampleValues, 1000); |
493 assert.strictEqual(numeric.numValues, 0); | 463 assert.strictEqual(numeric.numValues, 0); |
494 assert.strictEqual(numeric.numNans, 2); | 464 assert.strictEqual(numeric.numNans, 2); |
495 assert.lengthOf(numeric.sampleValues, 2); | 465 assert.lengthOf(numeric.sampleValues, 2); |
496 assert.lengthOf(numeric.allBins, 4); | 466 assert.lengthOf(numeric.allBins, 4); |
497 }); | 467 }); |
498 }); | 468 }); |
499 | |
500 </script> | 469 </script> |
OLD | NEW |