notes/node_modules/pipetteur/test/hex.js

233 lines
5.9 KiB
JavaScript

var expect = require('unexpected');
var pipetteur = require('../pipetteur');
describe('Hex match', function () {
it('should match a set of valid 6-char hex strings', function (done) {
var hexes = [
'#000000',
'#FFFFFF',
'#ffffff',
'#123456',
'#abcdef',
'#ABCDEF',
'#fedcba',
'#FEDCBA'
];
expect(hexes, 'to be an array whose items satisfy', function (hex) {
var matches = pipetteur(hex);
return expect(matches, 'to satisfy', [
{
line: 1,
column: 1,
index: 0,
match: hex,
color: function (color) {
expect(color, 'to satisfy', {
isColor: true,
});
expect(color.hex(), 'to be', hex.toLowerCase());
}
}
]);
});
done();
});
it('should match a set of valid 3-char hex strings', function (done) {
var hexes = [
'#000',
'#FFF',
'#fff',
'#123',
'#abc',
'#ABC',
'#cba',
'#CBA'
];
expect(hexes, 'to be an array whose items satisfy', function (hex) {
var matches = pipetteur(hex);
return expect(matches, 'to satisfy', [
{
line: 1,
column: 1,
index: 0,
match: hex,
color: {
isColor: true
}
}
]);
});
done();
});
it('should match a set of valid 6-char hex substrings', function (done) {
var hexes = [
{
string: 'foo #000000 bar',
hex: '#000000',
index: 4
},
{
string: 'one, two, #FFFFFF, three',
hex: '#FFFFFF',
index: 10
},
{
string: 'hvid (#ffffff) er pænt',
hex: '#ffffff',
index: 6
},
{
string: '#123456 are numbers',
hex: '#123456',
index: 0
},
{
string: 'alphabet song: #abcdef',
hex: '#abcdef',
index: 15
},
{
string: '#alphab et #ABCDEF gehijkl',
hex: '#ABCDEF',
index: 11
},
{
string: 'background:#fedcba',
hex: '#fedcba',
index: 11
},
{
string: '$color=#FEDCBA',
hex: '#FEDCBA',
index: 7
}
];
expect(hexes, 'to be an array whose items satisfy', function (obj) {
var matches = pipetteur(obj.string);
return expect(matches, 'to satisfy', [
{
line: 1,
column: obj.index + 1,
index: obj.index,
match: obj.hex,
color: {
isColor: true
}
}
]);
});
done();
});
it('should match a set of valid 3-char hex substrings', function (done) {
var hexes = [
{
string: 'foo #000 bar',
hex: '#000',
index: 4
},
{
string: 'one, two, #FFF, three',
hex: '#FFF',
index: 10
},
{
string: 'hvid (#fff) er pænt',
hex: '#fff',
index: 6
},
{
string: '#123 are numbers',
hex: '#123',
index: 0
},
{
string: 'alphabet song: #abc',
hex: '#abc',
index: 15
},
{
string: '#alphab et #ABC gehijkl',
hex: '#ABC',
index: 11
},
{
string: 'background:#fed',
hex: '#fed',
index: 11
},
{
string: '$color=#FED',
hex: '#FED',
index: 7
}
];
expect(hexes, 'to be an array whose items satisfy', function (obj) {
var matches = pipetteur(obj.string);
return expect(matches, 'to satisfy', [
{
line: 1,
column: obj.index + 1,
index: obj.index,
match: obj.hex,
color: {
isColor: true
}
}
]);
});
done();
});
it('should not match non-hex strings', function (done) {
var hexes = [
'#',
'#0',
'#00',
'#0000',
'#00000',
'#0000000'
];
expect(hexes, 'to be an array whose items satisfy', function (hex) {
var matches = pipetteur(hex);
expect(matches, 'to be an empty array');
});
done();
});
it('should match multiple colors in the same string', function (done) {
var strings = [
'#000000 #ffffff',
'#123456 and #234567',
'First: #123, Second: #fff000',
'Unlikely combination: #123#321'
];
expect(strings, 'to be an array whose items satisfy', function (str) {
var matches = pipetteur(str);
expect(matches, 'to have length', 2);
});
done();
});
});