Permalink
Find file
f90acac May 9, 2014
@mickeyreiss @jaridmargolin
91 lines (68 sloc) 2.31 KB
/*!
* test/pattern-matcher.js
*
* Copyright (c) 2014 First Opinion
*/
define([
'proclaim',
'pattern-matcher',
'pattern'
], function (assert, patternMatcher, pattern) {
//
// pattern-matcher.js tests
//
describe('pattern-matcher.js', function () {
// Pattern Strings
var patternStringA = '!{{*}}{{*}}',
patternStringB = '@{{*}}{{*}}';
// Parsed Patterns
var patternA = pattern.parse(patternStringA),
patternB = pattern.parse(patternStringB);
it('Should parse each matcher as a regex', function () {
var myPatternMatcher = patternMatcher([
{ '^abc$': '{{*}}-{{*}}-{{*}}' }
]);
assert.isTrue(myPatternMatcher.matchers[0].test('abc'));
assert.isFalse(myPatternMatcher.matchers[0].test('xyz'));
});
it('Should parse each pattern as a pattern', function () {
var myPatternMatcher = patternMatcher([
{ '^abc$': '{{***}}' }
]);
assert.deepEqual(myPatternMatcher.patterns[0], pattern.parse('{{***}}'));
});
describe('getPattern', function () {
it('Should return the appropriate pattern for the input', function () {
var myPatternMatcher = patternMatcher([
{ '^a': patternStringA },
{ '^b': patternStringB }
]);
assert.deepEqual(myPatternMatcher.getPattern('a'), patternA);
assert.deepEqual(myPatternMatcher.getPattern('abc'), patternA);
assert.deepEqual(myPatternMatcher.getPattern('bac'), patternB);
});
it('Should return the first matching pattern', function () {
var myPatternMatcher = patternMatcher([
{ '^a': patternStringA },
{ '.*': patternStringB }
]);
assert.deepEqual(myPatternMatcher.getPattern('a'), patternA);
assert.deepEqual(myPatternMatcher.getPattern('aa'), patternA);
});
it('Should return the wildcard pattern "*" if no other matches', function () {
var myPatternMatcher = patternMatcher([
{ 'wont-match': patternStringA },
{ '*': patternStringB }
]);
assert.deepEqual(myPatternMatcher.getPattern('a'), patternB);
});
it('Should return null if no pattern matches', function () {
var myPatternMatcher = patternMatcher([
{ 'wont-match': patternStringA },
{ '*': patternStringB }
]);
assert.deepEqual(myPatternMatcher.getPattern('a'), patternB);
});
});
});
});