summaryrefslogtreecommitdiffstats
path: root/tests/spec/score-leet-matching.js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/spec/score-leet-matching.js')
-rw-r--r--tests/spec/score-leet-matching.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/tests/spec/score-leet-matching.js b/tests/spec/score-leet-matching.js
new file mode 100644
index 0000000..b0b0241
--- /dev/null
+++ b/tests/spec/score-leet-matching.js
@@ -0,0 +1,137 @@
+describe('Dictionary/Password matching', function () {
+
+ // Some common words.
+ var dictionary = {
+ 'genug': 1,
+ 'sonst': 2,
+ 'ganze': 3,
+ // 'scheiße': 4,
+ 'halt': 5,
+ 'sollten': 6,
+ 'zusammen': 7,
+ 'gegen': 8,
+ 'jahre': 9,
+ 'erst': 10,
+ // 'denke': 11,
+ // 'steht': 12,
+ // 'habt': 13,
+ // 'verdammt': 14,
+ // 'moment': 15,
+ // 'ihren': 16,
+ // 'glauben': 17,
+ // 'bringen': 18,
+ // 'niemand': 19
+ };
+
+ var genug = [
+ '63?u6',
+ '63nu6',
+ '6enu6',
+ '6enug',
+ 'g3?u6',
+ 'ge?ug',
+ 'genu6',
+ '6enug',
+ 'genug'
+ ];
+
+ var leet = [
+ 'leet',
+ 'l33t',
+ 'l3et',
+ '1337',
+ 'l337',
+ '|eet',
+ '|3et',
+ '|337'
+ ];
+
+ var password = [
+ 'password',
+ 'p4ssword',
+ 'passw0rd',
+ 'p4ssw0rd',
+ 'pa$$word',
+ 'p4$$w0rd',
+ 'passw9rd',
+ 'p4$$w9rd',
+ 'passwo2d',
+ 'p4$$w92d',
+ 'p4$$w02d'
+ ];
+
+ var dictionary = {
+ 'genug': 8,
+ 'leet': 16,
+ 'password': 32
+ };
+
+ var chars = '1234567890@([<&!|?$+%';
+
+ var charScore = new Score('');
+ for (var char in charScore.leet) {
+ var singleScore = new Score(char);
+ var singleSubs = singleScore.collectLeetSpeakSubstitutions();
+
+ it ('[leet] "' + char + '" has ' + singleScore.leet[char].length + ' substitutions', function() {
+ expect(singleSubs.length).toBe(singleScore.leet[char].length);
+ });
+ }
+
+ for (var firstChar in charScore.leet) {
+ for (var secondChar in charScore.leet) {
+ var string = firstChar + secondChar;
+ var doubleScore = new Score(string);
+ var doubleSubs = doubleScore.collectLeetSpeakSubstitutions();
+
+ it ('[leet] "' + string + '" has ' + (doubleScore.leet[firstChar].length*doubleScore.leet[secondChar].length) + ' substitution', function() {
+ expect(doubleSubs.length).toBe(doubleScore.leet[firstChar].length*doubleScore.leet[secondChar].length);
+ })
+ }
+ }
+
+ for (var i = 0; i < genug.length; i++) {
+ var genugScore = new Score(genug[i]);
+ var genugSubs = genugScore.collectLeetSpeakSubstitutions();
+
+ it('[leet] "' + genug[i] + '" has correct leet speak substitution', function() {
+ expect(genugSubs).toContain('genug');
+ });
+
+ var genugMatches = genugScore.collectLeetSpeakMatches(dictionary);
+
+ it('[leet] "' + genug[i] + '" has leet speak matches.', function() {
+ expect(genugMatches.length).not.toBe(0);
+ });
+ }
+
+ for (var i = 0; i < leet.length; i++) {
+ var leetScore = new Score(leet[i]);
+ var leetSubs = leetScore.collectLeetSpeakSubstitutions();
+
+ it('[leet] "' + leet[i] + '" has correct leet speak substitution', function() {
+ expect(leetSubs).toContain('leet');
+ });
+
+ var leetMatches = leetScore.collectLeetSpeakMatches(dictionary);
+
+ it('[leet] "' + leet[i] + '" has leet speak matches.', function() {
+ expect(leetMatches.length).not.toBe(0);
+ });
+ }
+
+ for (var i = 0; i < password.length; i++) {
+ var passwordScore = new Score(password[i]);
+ var passwordSubs = passwordScore.collectLeetSpeakSubstitutions();
+
+ it('[leet] "' + password[i] + '" has correct leet speak substitution', function() {
+ expect(passwordSubs).toContain('password');
+ });
+
+ var passwordMatches = passwordScore.collectLeetSpeakMatches(dictionary);
+
+ it('[leet] "' + password[i] + '" has leet speak matches.', function() {
+ expect(passwordMatches.length).not.toBe(0);
+ });
+ }
+});