| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 | 
var test = require('tap').test;var summary = require('./summary.js');test('testing data method', function (t) {  t.deepEqual(    summary([2, 3, 7, -2, 0, 1, 1]).data(),    [2, 3, 7, -2, 0, 1, 1]  );  t.end();});test('testing sort method', function (t) {  const data = [2, 3, 7, -2, 0, 1, 1];  t.deepEqual(    summary(data, true).sort(),    [2, 3, 7, -2, 0, 1, 1]  );  t.deepEqual(data, [2, 3, 7, -2, 0, 1, 1], 'data shouldn\'t mutate');  t.deepEqual(    summary(data, false).sort(),    [-2, 0, 1, 1, 2, 3, 7]  );  t.deepEqual(data, [2, 3, 7, -2, 0, 1, 1], 'data shouldn\'t mutate');  t.deepEqual(    summary(data).sort(),    [-2, 0, 1, 1, 2, 3, 7]  );  t.deepEqual(data, [2, 3, 7, -2, 0, 1, 1], 'data shouldn\'t mutate');  t.end();});test('testing sort method when cached', function (t) {  const s = summary([2, 3, 7, -2, 0, 1, 1]);  t.deepEqual(s.sort(), [-2, 0, 1, 1, 2, 3, 7]);  t.deepEqual(s.sort(), [-2, 0, 1, 1, 2, 3, 7]);  t.end();});test('testing size method', function (t) {  t.equal(    summary([1, 10]).size(),    2  );  t.end();});test('testing sum method', function (t) {  t.equal(    summary([1, 10]).sum(),    11  );  t.end();});test('testing sum for variable lengths', function (t) {  const data = [];  for (let i = 0; i < 256; i++) {    data.push(i);    t.equal(summary(data).sum(), (i**2 + i) / 2);  }  t.end();});test('testing sum method when cached', function (t) {  const s = summary([1, 10]);  t.equal(s.sum(), 11);  t.equal(s.sum(), 11);  t.end();});test('testing mode method', function (t) {  t.equal(    summary([10, 11, 12, 11, 12, 7, 12]).mode(),    12  );  t.equal(    summary([10, 13, 12, 13, 12, 13, 12]).mode(),    13  );  t.equal(    summary([1, 2, 2, 3, 3, 3, 4]).mode(),    3  );  t.equal(    summary([1, 2, 2, 3, 3, 4]).mode(),    3  );  t.equal(    summary([1, 2, 2, 2, 3, 3, 4]).mode(),    2  );  t.equal(    summary([1, 2, 3]).mode(),    3  );  t.end();});test('testing mode method when cached', function (t) {  const s = summary([1, 2, 3]);  t.equal(s.mode(), 3);  t.equal(s.mode(), 3);  t.end();});test('testing mean method', function (t) {  t.equal(    summary([2, 4]).mean(),    3  );  t.end();});test('testing mean method when cached', function (t) {  const s = summary([2, 4]);  t.equal(s.mean(), 3);  t.equal(s.mean(), 3);  t.end();});test('testing quartile method', function (t) {  var data = summary([    2, 27, 10, 29, 16, 8, 5, 19, 2, 2, 18,28,    7, 28, 28, 25, 19, 14, 18, 21, 25, 29, 7,    3, 21, 3, 24, 18, 12, 25  ]);  t.equal(data.quartile(0.00), 2.00);  t.equal(data.quartile(0.13), 3.00);  t.equal(data.quartile(0.26), 7.00);  t.equal(data.quartile(0.39), 14.0);  t.equal(data.quartile(0.52), 18.0);  t.equal(data.quartile(0.65), 21.0);  t.equal(data.quartile(0.78), 25.0);  t.equal(data.quartile(0.91), 28.0);  t.equal(data.quartile(1.00), 29.0);  // when cached  t.equal(data.quartile(0.00), 2.00);  t.equal(data.quartile(0.13), 3.00);  t.equal(data.quartile(0.26), 7.00);  t.equal(data.quartile(0.39), 14.0);  t.equal(data.quartile(0.52), 18.0);  t.equal(data.quartile(0.65), 21.0);  t.equal(data.quartile(0.78), 25.0);  t.equal(data.quartile(0.91), 28.0);  t.equal(data.quartile(1.00), 29.0);  t.end();});test('testing median method', function (t) {  var data = summary([    2, 27, 10, 29, 16, 8, 5, 19, 2, 2, 18,28,    7, 28, 28, 25, 19, 14, 18, 21, 25, 29, 7,    3, 21, 3, 24, 18, 12, 25  ]);  t.equal(data.median(), 18);  // when cached  t.equal(data.median(), 18);  t.end();});test('testing variance method', function (t) {  t.equal(summary([-2, -1, 0, 1, 2]).variance(), 2.5);  t.end();});test('testing variance method when cached', function (t) {  const s = summary([-2, -1, 0, 1, 2]);  t.equal(s.variance(), 2.5);  t.equal(s.variance(), 2.5);  t.end();});test('testing sd method', function (t) {  t.equal(summary([-2, -1, 0, 1, 2]).sd(), Math.sqrt(2.5));  t.end();});test('testing sd method when cached', function (t) {  const s = summary([-2, -1, 0, 1, 2]);  t.equal(s.sd(), Math.sqrt(2.5));  t.equal(s.sd(), Math.sqrt(2.5));  t.end();});test('testing max method', function (t) {  t.equal(summary([6, 10, 2, 5]).max(), 10);  t.end();});test('testing max method when cached', function (t) {  const s = summary([6, 10, 2, 5]);  t.equal(s.max(), 10);  t.equal(s.max(), 10);  t.end();});test('testing min method', function (t) {  t.equal(summary([6, 10, 2, 5]).min(), 2);  t.end();});test('testing min method when cached', function (t) {  const s = summary([6, 10, 2, 5]);  t.equal(s.min(), 2);  t.equal(s.min(), 2);  t.end();});test('typed array', function (t) {  t.equal(summary(new Int8Array([2, 4])).mean(), 3);  t.end();});test('not array', function (t) {  t.throws(() => summary({ length: 0 }), TypeError);  t.end();});
 |