mirror of
https://github.com/thangisme/notes.git
synced 2024-11-01 00:37:33 -04:00
233 lines
5.9 KiB
JavaScript
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();
|
|
});
|
|
});
|