Skip to content

Commit

Permalink
Update more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tmcw committed Dec 17, 2012
1 parent 670f6dd commit 8081920
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 64 deletions.
56 changes: 29 additions & 27 deletions test/bayes.test.js
Original file line number Original file line Diff line number Diff line change
@@ -1,34 +1,36 @@
var assert = require('assert'); var assert = require('assert');
var ss = require('../'); var ss = require('../');


it('makes an easy call with one training round', function() { describe('bayes', function() {
var bayes = ss.bayesian(); it('makes an easy call with one training round', function() {
bayes.train({ species: 'Cat' }, 'animal'); var bayes = ss.bayesian();
assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 1 }); bayes.train({ species: 'Cat' }, 'animal');
}); assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 1 });
});


it('makes fify-fifty call', function() { it('makes fify-fifty call', function() {
var bayes = ss.bayesian(); var bayes = ss.bayesian();
bayes.train({ species: 'Cat' }, 'animal'); bayes.train({ species: 'Cat' }, 'animal');
bayes.train({ species: 'Cat' }, 'chair'); bayes.train({ species: 'Cat' }, 'chair');
assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 0.5, chair: 0.5 }); assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 0.5, chair: 0.5 });
}); });


it('makes seventy-five/twenty-five call', function() { it('makes seventy-five/twenty-five call', function() {
var bayes = ss.bayesian(); var bayes = ss.bayesian();
bayes.train({ species: 'Cat' }, 'animal'); bayes.train({ species: 'Cat' }, 'animal');
bayes.train({ species: 'Cat' }, 'animal'); bayes.train({ species: 'Cat' }, 'animal');
bayes.train({ species: 'Cat' }, 'animal'); bayes.train({ species: 'Cat' }, 'animal');
bayes.train({ species: 'Cat' }, 'chair'); bayes.train({ species: 'Cat' }, 'chair');
assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 0.75, chair: 0.25 }); assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 0.75, chair: 0.25 });
}); });


it('classifies multiple things', function() { it('classifies multiple things', function() {
var bayes = ss.bayesian(); var bayes = ss.bayesian();
bayes.train({ species: 'Cat' }, 'animal'); bayes.train({ species: 'Cat' }, 'animal');
bayes.train({ species: 'Dog' }, 'animal'); bayes.train({ species: 'Dog' }, 'animal');
bayes.train({ species: 'Dog' }, 'animal'); bayes.train({ species: 'Dog' }, 'animal');
bayes.train({ species: 'Cat' }, 'chair'); bayes.train({ species: 'Cat' }, 'chair');
assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 0.25, chair: 0.25 }); assert.deepEqual(bayes.score({ species: 'Cat' }), { animal: 0.25, chair: 0.25 });
assert.deepEqual(bayes.score({ species: 'Dog' }), { animal: 0.5, chair: 0 }); assert.deepEqual(bayes.score({ species: 'Dog' }), { animal: 0.5, chair: 0 });
});
}); });
18 changes: 14 additions & 4 deletions test/linear_regression.test.js
Original file line number Original file line Diff line number Diff line change
@@ -1,8 +1,18 @@
var assert = require('assert'); var assert = require('assert');
var ss = require('../'); var ss = require('../');


it('correctly generates a line for a 0, 0 to 1, 1 dataset', function() { describe('linear regression', function() {
var l = ss.linear_regression().data([[0, 0], [1, 1]]); it('correctly generates a line for a 0, 0 to 1, 1 dataset', function() {
assert.equal(l.line()(0), 0); var l = ss.linear_regression().data([[0, 0], [1, 1]]);
assert.equal(l.line()(1), 1); assert.equal(l.line()(0), 0);
assert.equal(l.line()(0.5), 0.5);
assert.equal(l.line()(1), 1);
});

it('correctly generates a line for a 0, 0 to 1, 0 dataset', function() {
var l = ss.linear_regression().data([[0, 0], [1, 0]]);
assert.equal(l.line()(0), 0);
assert.equal(l.line()(0.5), 0);
assert.equal(l.line()(1), 0);
});
}); });
12 changes: 10 additions & 2 deletions test/mean.test.js
Original file line number Original file line Diff line number Diff line change
@@ -1,6 +1,14 @@
var assert = require('assert'); var assert = require('assert');
var ss = require('../'); var ss = require('../');


it('can get the mean of two numbers', function() { describe('mean', function() {
assert.equal(ss.mean([1, 2]), 1.5); it('can get the mean of two numbers', function() {
assert.equal(ss.mean([1, 2]), 1.5);
});
it('can get the mean of one number', function() {
assert.equal(ss.mean([1]), 1);
});
it('an empty list has no average', function() {
assert.equal(ss.mean([]), null);
});
}); });
30 changes: 15 additions & 15 deletions test/mixin.test.js
Original file line number Original file line Diff line number Diff line change
@@ -1,20 +1,20 @@
var assert = require('assert'); var assert = require('assert');
var ss = require('../'); var ss = require('../');


// Data and results from describe('mixin', function() {
// [Wikipedia](http://en.wikipedia.org/wiki/Quantile#Quantiles_of_a_population) it('can mix in', function() {
it('can mix in', function() { ss.mixin();
ss.mixin(); var even = [2, 4, 6, 8];
var even = [2, 4, 6, 8]; assert.equal(even.sum(), 20);
assert.equal(even.sum(), 20); assert.equal(even.mean(), 5);
assert.equal(even.mean(), 5); assert.equal(even.max(), 8);
assert.equal(even.max(), 8); assert.equal(even.min(), 2);
assert.equal(even.min(), 2); });
});


it('mixins can take arguments', function() { it('mixins can take arguments', function() {
ss.mixin(); ss.mixin();
var even = [2, 4, 6, 8]; var even = [2, 4, 6, 8];
assert.equal(even.quantile(0.2), 2); assert.equal(even.quantile(0.2), 2);
assert.equal(even.quantile(0.8), 8); assert.equal(even.quantile(0.8), 8);
});
}); });
12 changes: 7 additions & 5 deletions test/sum.test.js
Original file line number Original file line Diff line number Diff line change
@@ -1,10 +1,12 @@
var assert = require('assert'); var assert = require('assert');
var ss = require('../'); var ss = require('../');


it('can get the sum of two numbers', function() { describe('sum', function() {
assert.equal(ss.sum([1, 2]), 3); it('can get the sum of two numbers', function() {
}); assert.equal(ss.sum([1, 2]), 3);
});


it('the sum of no numbers is zero', function() { it('the sum of no numbers is zero', function() {
assert.equal(ss.sum([]), 0); assert.equal(ss.sum([]), 0);
});
}); });
8 changes: 5 additions & 3 deletions test/t_test.test.js
Original file line number Original file line Diff line number Diff line change
@@ -1,7 +1,9 @@
var assert = require('assert'); var assert = require('assert');
var ss = require('../'); var ss = require('../');


it('can compare a known value to the mean of samples', function() { describe('t test', function() {
var t = ss.t_test([1, 2, 3, 4, 5, 6], 3.385); it('can compare a known value to the mean of samples', function() {
assert.equal(t, 0.1649415480881466); var t = ss.t_test([1, 2, 3, 4, 5, 6], 3.385);
assert.equal(t, 0.1649415480881466);
});
}); });
18 changes: 10 additions & 8 deletions test/variance.test.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -5,14 +5,16 @@ function rnd(x) {
return Math.round(x * 1000) / 1000; return Math.round(x * 1000) / 1000;
} }


it('can get the variance of a six-sided die', function() { describe('variance', function() {
assert.equal(rnd(ss.variance([1, 2, 3, 4, 5, 6])), 2.917); it('can get the variance of a six-sided die', function() {
}); assert.equal(rnd(ss.variance([1, 2, 3, 4, 5, 6])), 2.917);
});


it('the variance of one number is zero', function() { it('the variance of one number is zero', function() {
assert.equal(rnd(ss.variance([1])), 0); assert.equal(rnd(ss.variance([1])), 0);
}); });


it('the variance of no numbers is null', function() { it('the variance of no numbers is null', function() {
assert.equal(ss.variance([]), null); assert.equal(ss.variance([]), null);
});
}); });

0 comments on commit 8081920

Please sign in to comment.