| /*! | 
|  * hex-color-regex <https://github.com/regexps/hex-color-regex> | 
|  * | 
|  * Copyright (c) 2015 Charlike Mike Reagent <@tunnckoCore> (http://www.tunnckocore.tk) | 
|  * Released under the MIT license. | 
|  */ | 
|   | 
| /* jshint asi:true */ | 
|   | 
| 'use strict' | 
|   | 
| var test = require('mukla') | 
| var hexColorRegex = require('./index') | 
|   | 
| var sixDigits = { | 
|   pass: [ | 
|     '#afebe3', | 
|     '#AFEBE3', | 
|     '#3cb371', | 
|     '#3CB371', | 
|     '#556b2f', | 
|     '#556B2F', | 
|     '#708090', | 
|     '#7b68ee', | 
|     '#7B68EE', | 
|     '#eeeeee', | 
|     '#ffffff', | 
|     '#123fff}', | 
|     '#111111' | 
|   ], | 
|   fail: [ | 
|     'afebe3', | 
|     'AFEBE3', | 
|     '3cb371', | 
|     'ABC371', | 
|     '556b2f', | 
|     '5A6B2F', | 
|     '708090', | 
|     '7b68ee', | 
|     '7B68EE', | 
|     'eeeeee', | 
|     'ffffff', | 
|     '111111', | 
|     'afebef', | 
|     '3c537f', | 
|     '556B2f', | 
|     '708135', | 
|     'EE3EF1', | 
|     '7f68ZY', | 
|     '#7f68ZY', | 
|     '#7z68ZY', | 
|     '#GR68', | 
|     '#Z68', | 
|     '#666EFR' | 
|   ] | 
| } | 
|   | 
| var threeDigits = { | 
|   pass: [ | 
|     '#afe', | 
|     '#AF3', | 
|     '#3cb', | 
|     '#3CB', | 
|     '#b2f', | 
|     '#5B2', | 
|     '#708', | 
|     '#68e', | 
|     '#7AF', | 
|     '#777', | 
|     '#FFF', | 
|     '#fff', | 
|     '#f3f}', | 
|     '#111' | 
|   ], | 
|   fail: [ | 
|     'fff', | 
|     '4zy', | 
|     '4g1', | 
|     '111', | 
|     'Ge3', | 
|     'zY1', | 
|     '#ggg', | 
|     '#4zy', | 
|     '#4g1', | 
|     '#Ge3', | 
|     '#zY1' | 
|   ] | 
| } | 
|   | 
| var fourDigits = { | 
|   pass: ['#afe0', '#AF31', '#3cba', '#3CBA', '#b2ff', '#5B2F'], | 
|   fail: ['afe0', 'AF31', '#3cbg', '#3CBy', '#b2fz'] | 
| } | 
|   | 
| var eightDigits = { | 
|   pass: ['#afebe300', '#AFEBE3AA', '#3cb371ff', '#3CB371CC', '#556b2f55'], | 
|   fail: ['afebe300', 'AFEBE3AA', '#3cb371fg', '#3CB371xy', '#556b2fz9'] | 
| } | 
|   | 
| test('hex-color-regex:', function() { | 
|   test('in no strict mode', function() { | 
|     test('six digit hex', function() { | 
|       test('should be `true`', function() { | 
|         sixDigits.pass.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), true) | 
|           }) | 
|         }) | 
|         test('when `foo #ae3f4c bar` value', function() { | 
|           test.equal(hexColorRegex().test('foo #ae3f4c bar'), true) | 
|         }) | 
|       }) | 
|       test('should be `false`', function() { | 
|         sixDigits.fail.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), false) | 
|           }) | 
|         }) | 
|       }) | 
|     }) | 
|     test('three digit hex', function() { | 
|       test('should be `true`', function() { | 
|         threeDigits.pass.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), true) | 
|           }) | 
|         }) | 
|         test('when `foo #e4f bar` value', function() { | 
|           test.equal(hexColorRegex().test('foo #e4f bar'), true) | 
|         }) | 
|       }) | 
|       test('should be `false`', function() { | 
|         threeDigits.fail.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), false) | 
|           }) | 
|         }) | 
|       }) | 
|     }) | 
|     test('eight digit alpha channel hex', function() { | 
|       test('should be `true`', function() { | 
|         eightDigits.pass.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), true) | 
|           }) | 
|         }) | 
|         test('when `foo #ae3f4c bar` value', function() { | 
|           test.equal(hexColorRegex().test('foo #ae3f4c00 bar'), true) | 
|         }) | 
|       }) | 
|       test('should be `false`', function() { | 
|         eightDigits.fail.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), false) | 
|           }) | 
|         }) | 
|       }) | 
|     }) | 
|     test('four digit alpha channel hex', function() { | 
|       test('should be `true`', function() { | 
|         fourDigits.pass.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), true) | 
|           }) | 
|         }) | 
|         test('when `foo #ae3f4c bar` value', function() { | 
|           test.equal(hexColorRegex().test('foo #ae3f bar'), true) | 
|         }) | 
|       }) | 
|       test('should be `false`', function() { | 
|         fourDigits.fail.forEach(function(hex) { | 
|           test('when `' + hex + '` value', function() { | 
|             test.equal(hexColorRegex().test(hex), false) | 
|           }) | 
|         }) | 
|       }) | 
|     }) | 
|     test('using regex().exec(hex)', function() { | 
|       sixDigits.pass.forEach(function(hex) { | 
|         var hexed = hex.replace('}', '') | 
|         test('should match `' + hexed + '` when `' + hex + '` hex', function() { | 
|           var actual = hexColorRegex().exec(hex)[0] | 
|           var expected = hexed | 
|   | 
|           test.equal(actual, expected) | 
|         }) | 
|       }) | 
|       test('should match `#ae3f4c` when `foo #ae3f4c bar` string', function() { | 
|         var actual = hexColorRegex().exec('foo #ae3f4c bar')[0] | 
|         var expected = '#ae3f4c' | 
|   | 
|         test.equal(actual, expected) | 
|       }) | 
|       threeDigits.pass.forEach(function(hex) { | 
|         var hexed = hex.replace('}', '') | 
|         test('should match `' + hexed + '` when `' + hex + '` hex', function() { | 
|           var actual = hexColorRegex().exec(hex)[0] | 
|           var expected = hexed | 
|   | 
|           test.equal(actual, expected) | 
|         }) | 
|       }) | 
|       test('should match `#e7f` when `foo #e7f bar` string', function() { | 
|         var actual = hexColorRegex().exec('foo #e7f bar')[0] | 
|         var expected = '#e7f' | 
|   | 
|         test.equal(actual, expected) | 
|       }) | 
|       eightDigits.pass.forEach(function(hex) { | 
|         var hexed = hex.replace('}', '') | 
|         test('should match `' + hexed + '` when `' + hex + '` hex', function() { | 
|           var actual = hexColorRegex().exec(hex)[0] | 
|           var expected = hexed | 
|   | 
|           test.equal(actual, expected) | 
|         }) | 
|       }) | 
|       test('should match `#ae3f4c00` when `foo #ae3f4c00 bar` string', function() { | 
|         var actual = hexColorRegex().exec('foo #ae3f4c00 bar')[0] | 
|         var expected = '#ae3f4c00' | 
|   | 
|         test.equal(actual, expected) | 
|       }) | 
|       fourDigits.pass.forEach(function(hex) { | 
|         var hexed = hex.replace('}', '') | 
|         test('should match `' + hexed + '` when `' + hex + '` hex', function() { | 
|           var actual = hexColorRegex().exec(hex)[0] | 
|           var expected = hexed | 
|   | 
|           test.equal(actual, expected) | 
|         }) | 
|       }) | 
|       test('should match `#e7f0` when `foo #e7f0 bar` string', function() { | 
|         var actual = hexColorRegex().exec('foo #e7f0 bar')[0] | 
|         var expected = '#e7f0' | 
|   | 
|         test.equal(actual, expected) | 
|       }) | 
|     }) | 
|   }) | 
|   test('in strict mode', function() { | 
|     test('six digit hex `#123fff}` should return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('#123fff}'), false) | 
|     }) | 
|     test('string contain six digit hex `foo #ae3f4c bar` return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('foo #ae3f4c bar'), false) | 
|     }) | 
|     test('three digit hex `#f3f}` should return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('#f3f}'), false) | 
|     }) | 
|     test('string contain three digit hex `foo #e7f bar` return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('foo #e7f bar'), false) | 
|     }) | 
|     test('eight digit alpha channel hex `#123fff00}` should return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('#123fff00}'), false) | 
|     }) | 
|     test('string contain eight digit alpha channel hex `foo #ae3f4cff bar` return false', function() { | 
|       test.equal( | 
|         hexColorRegex({ strict: true }).test('foo #ae3f4cff bar'), | 
|         false | 
|       ) | 
|     }) | 
|     test('four digit alpha channel hex `#f3f0}` should return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('#f3f0}'), false) | 
|     }) | 
|     test('string contain four digit alpha channel hex `foo #e7ff bar` return false', function() { | 
|       test.equal(hexColorRegex({ strict: true }).test('foo #e7ff bar'), false) | 
|     }) | 
|     test('should not match when `foo #ae3f4c bar` string', function() { | 
|       var actual = hexColorRegex({ strict: true }).exec('foo #ae3f4c bar') | 
|       var expected = null | 
|   | 
|       test.equal(actual, expected) | 
|     }) | 
|     test('should not match when `foo #e7f bar` string', function() { | 
|       var actual = hexColorRegex({ strict: true }).exec('foo #e7f bar') | 
|       var expected = null | 
|   | 
|       test.equal(actual, expected) | 
|     }) | 
|     test('should not match when `foo #ae3f4cff bar` string', function() { | 
|       var actual = hexColorRegex({ strict: true }).exec('foo #ae3f4cff bar') | 
|       var expected = null | 
|   | 
|       test.equal(actual, expected) | 
|     }) | 
|     test('should not match when `foo #e7ff bar` string', function() { | 
|       var actual = hexColorRegex({ strict: true }).exec('foo #e7ff bar') | 
|       var expected = null | 
|   | 
|       test.equal(actual, expected) | 
|     }) | 
|   }) | 
| }) |