Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / third_party / trace-viewer / third_party / tvcm / src / tvcm / statistics_test.js
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 'use strict';
6
7 tvcm.require('tvcm.statistics');
8
9 tvcm.unittest.testSuite('tvcm.statistics_test', function() {
10   var Statistics = tvcm.Statistics;
11
12   test('sumBasic', function() {
13     assertEquals(6, Statistics.sum([1, 2, 3]));
14   });
15   test('sumWithFunctor', function() {
16     var ctx = {};
17     var ary = [1, 2, 3];
18     assertEquals(12, Statistics.sum(ary, function(x, i) {
19       assertEquals(this, ctx);
20       assertEquals(ary[i], x);
21       return x * 2;
22     }, ctx));
23   });
24
25   test('minMaxWithFunctor', function() {
26     var ctx = {};
27     var ary = [1, 2, 3];
28     function func(x, i) {
29       assertEquals(this, ctx);
30       assertEquals(ary[i], x);
31       return x;
32     }
33     assertEquals(3, Statistics.max(ary, func, ctx));
34     assertEquals(1, Statistics.min(ary, func, ctx));
35
36     var range = Statistics.range(ary, func, ctx);
37     assertFalse(range.isEmpty);
38     assertEquals(1, range.min);
39     assertEquals(3, range.max);
40   });
41
42   test('maxExtrema', function() {
43     assertEquals(-Infinity, Statistics.max([]));
44     assertEquals(Infinity, Statistics.min([]));
45   });
46
47   test('mean', function() {
48     assertEquals(2, Statistics.mean([1, 2, 3]));
49   });
50
51   test('varianceAndStdDev', function() {
52     var ctx = {};
53     var ary = [{x: 2},
54                {x: 4},
55                {x: 4},
56                {x: 2}];
57     var v = Statistics.mean(ary,
58                             function(d) {
59                               assertEquals(ctx, this);
60                               return d.x;
61                             }, ctx);
62     assertEquals(3, v);
63   });
64
65   test('percentile', function() {
66     var ctx = {};
67     var ary = [{x: 0},
68                {x: 1},
69                {x: 2},
70                {x: 3},
71                {x: 4},
72                {x: 5},
73                {x: 6},
74                {x: 7},
75                {x: 8},
76                {x: 9}];
77     function func(d, i) {
78       assertEquals(ctx, this);
79       return d.x;
80     }
81     assertEquals(0, Statistics.percentile(ary, 0, func, ctx));
82     assertEquals(4, Statistics.percentile(ary, .5, func, ctx));
83     assertEquals(6, Statistics.percentile(ary, .75, func, ctx));
84     assertEquals(9, Statistics.percentile(ary, 1, func, ctx));
85   });
86
87 });