Add util tests

This commit is contained in:
Tim Schaub 2014-05-30 06:36:26 -06:00
parent 969862624b
commit e3cfce22fc
3 changed files with 111 additions and 1 deletions

View file

@ -41,6 +41,7 @@
"devDependencies": { "devDependencies": {
"glob": "~3.2.9", "glob": "~3.2.9",
"mocha": "~1.18.2", "mocha": "~1.18.2",
"jshint": "~2.4.4" "jshint": "~2.4.4",
"chai": "~1.9.1"
} }
} }

12
test/helper.js Normal file
View file

@ -0,0 +1,12 @@
var chai = require('chai');
/** @type {boolean} */
chai.config.includeStack = true;
/**
* Chai's assert function configured to include stacks on failure.
* @type {function}
*/
exports.assert = chai.assert;

97
test/lib/util.spec.js Normal file
View file

@ -0,0 +1,97 @@
var path = require('path');
var assert = require('../helper').assert;
var util = require('../../lib/util');
describe('util', function() {
var files;
beforeEach(function() {
files = [
path.join('a1', 'b1', 'c2', 'd2.txt'),
path.join('a1', 'b2', 'c2', 'd1.txt'),
path.join('a2.txt'),
path.join('a1', 'b1', 'c1', 'd1.txt'),
path.join('a1', 'b1', 'c2', 'd1.txt'),
path.join('a1', 'b1.txt'),
path.join('a2', 'b1', 'c2.txt'),
path.join('a1', 'b1', 'c2', 'd3.txt'),
path.join('a1', 'b2', 'c1', 'd1.txt'),
path.join('a1.txt'),
path.join('a2', 'b1', 'c1.txt'),
path.join('a2', 'b1.txt')
].slice();
});
describe('byShortPath', function() {
it('sorts an array of filepaths, shortest first', function() {
files.sort(util.byShortPath);
var expected = [
path.join('a1.txt'),
path.join('a2.txt'),
path.join('a1', 'b1.txt'),
path.join('a2', 'b1.txt'),
path.join('a2', 'b1', 'c1.txt'),
path.join('a2', 'b1', 'c2.txt'),
path.join('a1', 'b1', 'c1', 'd1.txt'),
path.join('a1', 'b1', 'c2', 'd1.txt'),
path.join('a1', 'b1', 'c2', 'd2.txt'),
path.join('a1', 'b1', 'c2', 'd3.txt'),
path.join('a1', 'b2', 'c1', 'd1.txt'),
path.join('a1', 'b2', 'c2', 'd1.txt')
];
assert.deepEqual(files, expected);
});
});
describe('uniqueDirs', function() {
it('gets a list of unique directory paths', function() {
// not comparing order here, so we sort both
var got = util.uniqueDirs(files).sort();
var expected = [
'.',
'a1',
'a2',
path.join('a1', 'b1'),
path.join('a1', 'b1', 'c1'),
path.join('a1', 'b1', 'c2'),
path.join('a1', 'b2'),
path.join('a1', 'b2', 'c1'),
path.join('a1', 'b2', 'c2'),
path.join('a2', 'b1')
].sort();
assert.deepEqual(got, expected);
});
});
describe('dirsToCreate', function() {
it('gets a sorted list of directories to create', function() {
var got = util.dirsToCreate(files);
var expected = [
'.',
'a1',
'a2',
path.join('a1', 'b1'),
path.join('a1', 'b2'),
path.join('a2', 'b1'),
path.join('a1', 'b1', 'c1'),
path.join('a1', 'b1', 'c2'),
path.join('a1', 'b2', 'c1'),
path.join('a1', 'b2', 'c2')
];
assert.deepEqual(got, expected);
});
});
});