test/lib/vedeu/cursor/cursor_test.rb in vedeu-0.5.3 vs test/lib/vedeu/cursor/cursor_test.rb in vedeu-0.5.4

- old
+ new

@@ -22,11 +22,27 @@ let(:oy) { 2 } let(:repository) { Vedeu.cursors } let(:visible) { true } let(:x) { 19 } let(:y) { 8 } + let(:border) { Vedeu::Border.new(name: _name, enabled: enabled) } + let(:geometry) { + Vedeu::Geometry.new( + name: _name, + x: 5, + xn: 35, + y: 5, + yn: 10 + ) + } + let(:enabled) { true } + before { + Vedeu.borders.stubs(:by_name).returns(border) + Vedeu.geometries.stubs(:by_name).returns(geometry) + } + describe '#initialize' do subject { instance } it { subject.must_be_instance_of(described) } it { subject.instance_variable_get('@name').must_equal('silver') } @@ -44,19 +60,17 @@ it { instance.must_respond_to(:ox) } it { instance.must_respond_to(:ox=) } it { instance.must_respond_to(:oy) } it { instance.must_respond_to(:oy=) } it { instance.must_respond_to(:state) } - it { instance.must_respond_to(:x) } it { instance.must_respond_to(:x=) } - it { instance.must_respond_to(:y) } it { instance.must_respond_to(:y=) } end describe '#hide' do let(:visible) { true } - let(:hide_cursor) { Vedeu::Escape.new(Vedeu::Esc.hide_cursor) } + let(:hide_cursor) { Vedeu::Escape.new(value: Vedeu::Esc.hide_cursor) } before { Vedeu::Output.stubs(:render). with(hide_cursor).returns(hide_cursor) } @@ -81,11 +95,11 @@ it { subject.must_be_instance_of(Vedeu::Position) } end describe '#show' do let(:visible) { false } - let(:show_cursor) { Vedeu::Escape.new(Vedeu::Esc.show_cursor) } + let(:show_cursor) { Vedeu::Escape.new(value: Vedeu::Esc.show_cursor) } before { Vedeu::Output.stubs(:render). with(show_cursor).returns(show_cursor) } @@ -126,9 +140,113 @@ it 'returns the escape sequence to position and set the visibility ' \ 'of the cursor and returns to that position after yielding the ' \ 'block' do subject.must_equal("\e[8;19H\e[8;19H\e[?25h") + end + end + end + + describe '#x' do + subject { instance.x } + + context 'when x is less than tx' do + let(:x) { -2 } + + it { subject.must_equal(6) } + end + + context 'when x is less than left' do + let(:x) { 2 } + + it { subject.must_equal(6) } + end + + context 'when x is less than bx' do + let(:x) { 5 } + + it { subject.must_equal(6) } + + context 'when border is not enabled' do + let(:enabled) { false } + + it { subject.must_equal(5) } + end + end + + context 'when x is more than txn' do + let(:x) { 47 } + + it { subject.must_equal(34) } + end + + context 'when x is more than right' do + let(:x) { 37 } + + it { subject.must_equal(34) } + end + + context 'when x is more than bxn' do + let(:x) { 35 } + + it { subject.must_equal(34) } + + context 'when border is not enabled' do + let(:enabled) { false } + + it { subject.must_equal(35) } + end + end + end + + describe '#y' do + subject { instance.y } + + context 'when y is less than ty' do + let(:y) { -2 } + + it { subject.must_equal(6) } + end + + context 'when y is less than top' do + let(:y) { 2 } + + it { subject.must_equal(6) } + end + + context 'when y is less than by' do + let(:y) { 5 } + + it { subject.must_equal(6) } + + context 'when border is not enabled' do + let(:enabled) { false } + + it { subject.must_equal(5) } + end + end + + context 'when y is more than tyn' do + let(:y) { 17 } + + it { subject.must_equal(9) } + end + + context 'when y is more than bottom' do + let(:y) { 12 } + + it { subject.must_equal(9) } + end + + context 'when y is more than byn' do + let(:y) { 10 } + + it { subject.must_equal(9) } + + context 'when border is not enabled' do + let(:enabled) { false } + + it { subject.must_equal(10) } end end end end # Cursor