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