You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
8.5 KiB
295 lines
8.5 KiB
4 years ago
|
/*!
|
||
|
* 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)
|
||
|
})
|
||
|
})
|
||
|
})
|