require 'test_helper' module Vedeu describe Colour do let(:described) { Vedeu::Colour } let(:instance) { described.new(attributes) } let(:attributes) { { background: '', foreground: '' } } describe '#initialize' do it { instance.must_be_instance_of(described) } it { instance.instance_variable_get('@attributes').must_equal(attributes) } end describe '#background' do subject { instance.background } it { subject.must_be_instance_of(String) } context 'with a background' do let(:attributes) { { background: '#000000' } } it { subject.must_equal("\e[48;2;0;0;0m") } end context 'without a background' do let(:attributes) { {} } it { subject.must_equal('') } end end describe '#foreground' do subject { instance.foreground } it { subject.must_be_instance_of(String) } context 'with a foreground' do let(:attributes) { { foreground: '#ff0000' } } it { subject.must_equal("\e[38;2;255;0;0m") } end context 'without a foreground' do let(:attributes) { {} } it { subject.must_equal('') } end end describe '#to_s' do subject { instance.to_s } it { subject.must_be_instance_of(String) } context 'with both background and foreground' do let(:attributes) { { foreground: '#ff0000', background: '#000000' } } it { subject.must_equal("\e[38;2;255;0;0m\e[48;2;0;0;0m") } end context 'when the foreground is missing' do let(:attributes) { { background: '#000000' } } it { subject.must_equal("\e[48;2;0;0;0m") } end context 'when the background is missing' do let(:attributes) { { foreground: '#ff0000', } } it { subject.must_equal("\e[38;2;255;0;0m") } end context 'when both are missing' do let(:attributes) { {} } it { subject.must_equal('') } end end end # Colour end # Vedeu