2017-12-20 11:39:40 +00:00
|
|
|
require 'spec_helper'
|
|
|
|
|
|
|
|
describe Banzai::ColorParser do
|
|
|
|
describe '.parse' do
|
|
|
|
context 'HEX format' do
|
|
|
|
[
|
|
|
|
'#abc', '#ABC',
|
|
|
|
'#d2d2d2', '#D2D2D2',
|
|
|
|
'#123a', '#123A',
|
|
|
|
'#123456aa', '#123456AA'
|
|
|
|
].each do |color|
|
|
|
|
it "parses the valid hex color #{color}" do
|
|
|
|
expect(subject.parse(color)).to eq(color)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[
|
|
|
|
'#', '#1', '#12', '#12g', '#12G',
|
|
|
|
'#12345', '#r2r2r2', '#R2R2R2', '#1234567',
|
|
|
|
'# 123', '# 1234', '# 123456', '# 12345678',
|
|
|
|
'#1 2 3', '#123 4', '#12 34 56', '#123456 78'
|
|
|
|
].each do |color|
|
|
|
|
it "does not parse the invalid hex color #{color}" do
|
|
|
|
expect(subject.parse(color)).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'RGB format' do
|
|
|
|
[
|
|
|
|
'rgb(0,0,0)', 'rgb(255,255,255)',
|
|
|
|
'rgb(0, 0, 0)', 'RGB(0,0,0)',
|
|
|
|
'rgb(0,0,0,0)', 'rgb(0,0,0,0.0)', 'rgb(0,0,0,.0)',
|
|
|
|
'rgb(0,0,0, 0)', 'rgb(0,0,0, 0.0)', 'rgb(0,0,0, .0)',
|
|
|
|
'rgb(0,0,0,1)', 'rgb(0,0,0,1.0)',
|
|
|
|
'rgba(0,0,0)', 'rgba(0,0,0,0)', 'RGBA(0,0,0)',
|
|
|
|
'rgb(0%,0%,0%)', 'rgba(0%,0%,0%,0%)'
|
|
|
|
].each do |color|
|
|
|
|
it "parses the valid rgb color #{color}" do
|
|
|
|
expect(subject.parse(color)).to eq(color)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[
|
|
|
|
'FOOrgb(0,0,0)', 'rgb(0,0,0)BAR',
|
|
|
|
'rgb(0,0,-1)', 'rgb(0,0,-0)', 'rgb(0,0,256)',
|
|
|
|
'rgb(0,0,0,-0.1)', 'rgb(0,0,0,-0.0)', 'rgb(0,0,0,-.1)',
|
|
|
|
'rgb(0,0,0,1.1)', 'rgb(0,0,0,2)',
|
|
|
|
'rgba(0,0,0,)', 'rgba(0,0,0,0.)', 'rgba(0,0,0,1.)',
|
|
|
|
'rgb(0,0,0%)', 'rgb(101%,0%,0%)'
|
|
|
|
].each do |color|
|
|
|
|
it "does not parse the invalid rgb color #{color}" do
|
|
|
|
expect(subject.parse(color)).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
context 'HSL format' do
|
|
|
|
[
|
2019-01-16 12:09:29 +00:00
|
|
|
'hsl(0,0%,0%)', 'hsl(0,100%,100%)',
|
2017-12-20 11:39:40 +00:00
|
|
|
'hsl(540,0%,0%)', 'hsl(-720,0%,0%)',
|
|
|
|
'hsl(0deg,0%,0%)', 'hsl(0DEG,0%,0%)',
|
|
|
|
'hsl(0, 0%, 0%)', 'HSL(0,0%,0%)',
|
|
|
|
'hsl(0,0%,0%,0)', 'hsl(0,0%,0%,0.0)', 'hsl(0,0%,0%,.0)',
|
|
|
|
'hsl(0,0%,0%, 0)', 'hsl(0,0%,0%, 0.0)', 'hsl(0,0%,0%, .0)',
|
|
|
|
'hsl(0,0%,0%,1)', 'hsl(0,0%,0%,1.0)',
|
|
|
|
'hsla(0,0%,0%)', 'hsla(0,0%,0%,0)', 'HSLA(0,0%,0%)',
|
|
|
|
'hsl(1rad,0%,0%)', 'hsl(1.1rad,0%,0%)', 'hsl(.1rad,0%,0%)',
|
|
|
|
'hsl(-1rad,0%,0%)', 'hsl(1RAD,0%,0%)'
|
|
|
|
].each do |color|
|
|
|
|
it "parses the valid hsl color #{color}" do
|
|
|
|
expect(subject.parse(color)).to eq(color)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
[
|
|
|
|
'hsl(+0,0%,0%)', 'hsl(0,0,0%)', 'hsl(0,0%,0)', 'hsl(0 deg,0%,0%)',
|
|
|
|
'hsl(0,-0%,0%)', 'hsl(0,101%,0%)', 'hsl(0,-1%,0%)',
|
|
|
|
'hsl(0,0%,0%,-0.1)', 'hsl(0,0%,0%,-.1)',
|
|
|
|
'hsl(0,0%,0%,1.1)', 'hsl(0,0%,0%,2)',
|
|
|
|
'hsl(0,0%,0%,)', 'hsl(0,0%,0%,0.)', 'hsl(0,0%,0%,1.)',
|
|
|
|
'hsl(deg,0%,0%)', 'hsl(rad,0%,0%)'
|
|
|
|
].each do |color|
|
|
|
|
it "does not parse the invalid hsl color #{color}" do
|
|
|
|
expect(subject.parse(color)).to be_nil
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|