Permalink
| /*! | |
| * 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); | |
| }); | |
| }); | |
| }); | |
| }); |