rttc
Version:
Runtime type-checking for JavaScript.
44 lines (36 loc) • 1.93 kB
JavaScript
var assert = require('assert');
var rttc = require('../');
describe('.getPatternFromExemplar()', function() {
it('should return the pattern from single-item array exemplars', function() {
assert.strictEqual(rttc.getPatternFromExemplar(['foo']), 'foo');
assert.strictEqual(rttc.getPatternFromExemplar(['']), '');
assert.strictEqual(rttc.getPatternFromExemplar([2323]), 2323);
assert.strictEqual(rttc.getPatternFromExemplar([0]), 0);
assert.strictEqual(rttc.getPatternFromExemplar([true]), true);
assert.strictEqual(rttc.getPatternFromExemplar([false]), false);
assert.deepEqual(rttc.getPatternFromExemplar([[]]), []);
assert.deepEqual(rttc.getPatternFromExemplar([{}]), {});
assert.deepEqual(rttc.getPatternFromExemplar([{x:30,y:40}]), {x:30,y:40});
assert.deepEqual(rttc.getPatternFromExemplar(['*']), '*');
assert.deepEqual(rttc.getPatternFromExemplar(['->']), '->');
assert.deepEqual(rttc.getPatternFromExemplar(['===']), '===');
// A few deep test cases just to mix things up.
assert.deepEqual(rttc.getPatternFromExemplar([[{x:30,y:40}]]), [{x:30,y:40}]);
assert.deepEqual(rttc.getPatternFromExemplar([['===']]), ['===']);
assert.deepEqual(rttc.getPatternFromExemplar([[[false]]]), [[false]]);
assert.deepEqual(rttc.getPatternFromExemplar([[[{x:30, y:40, otherCoordinates: [{x:100,y:200,z:-300.5}]}]]]), [[{x:30, y:40, otherCoordinates: [{x:100,y:200,z:-300.5}]}]]);
});
it('should return "*" given [] (because [] is really just the same thing as ["*"])', function() {
assert.strictEqual(rttc.getPatternFromExemplar([]), '*');
});
it('should throw if given a multi-item array', function() {
assert.throws(function (){
rttc.getPatternFromExemplar(['a','b','c']);
});
});
it('should throw if given a non-array', function() {
assert.throws(function (){
rttc.getPatternFromExemplar({x:292, y:-49});
});
});
});