require 'test_helper' module Vedeu module Colours describe Foreground do let(:described) { Vedeu::Colours::Foreground } let(:instance) { described.new(colour) } let(:colour) {} before { Vedeu.foreground_colours.reset! } describe '#escape_sequence' do subject { instance.escape_sequence } context 'when the colour is empty' do let(:colour) { '' } it { subject.must_equal('') } end context 'when the colour is named (3-bit / 8 colours)' do { red: "\e[31m", default: "\e[39m", unknown: '', }.map do |colour, result| it "returns the correct escape sequence for #{colour}" do described.new(colour).escape_sequence.must_equal(result) end end end context 'when the colour is numbered (8-bit / 256 colours)' do { 82 => "\e[38;5;82m", -2 => '', 442 => '' }.map do |colour, result| it "returns the correct escape sequence for #{colour}" do described.new(colour).escape_sequence.must_equal(result) end end end context 'when the colour is a CSS value (8-bit / 256 colours)' do before { Configuration.stubs(:colour_mode).returns(8) } { '#afd700' => "\e[38;5;148m", '999999' => '', '#12121' => '', '#h11111' => '', }.map do |colour, result| it "returns the correct escape sequence for #{colour}" do described.new(colour).escape_sequence.must_equal(result) end end end context 'when the colour is a CSS value (24-bit / 16.8mil colours)' do { '#afd700' => "\e[38;2;175;215;0m", '999999' => '', '#12121' => '', '#h11111' => '', }.map do |colour, result| it "returns the correct escape sequence for #{colour}" do described.new(colour).escape_sequence.must_equal(result) end end end end describe '#foreground?' do subject { instance.foreground? } context 'when the colour is empty' do let(:colour) {} it { subject.must_equal(false) } end context 'when the colour is not empty' do let(:colour) { '#afd700' } it { subject.must_equal(true) } end end describe '#to_html' do subject { instance.to_html } context 'when the colour is empty' do let(:colour) {} it { subject.must_equal('') } end context 'when the colour is named (3-bit / 8 colours)' do let(:colour) { :red } it { subject.must_equal('') } end context 'when the colour is numbered (8-bit / 256 colours)' do let(:colour) { 118 } it { subject.must_equal('') } end context 'when the colour is a CSS value' do let(:colour) { '#afd700' } it 'returns the colour as a CSS value' do subject.must_equal('#afd700') end end end end # Foreground end # Colours end # Vedeu