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

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)
})
})
})