Sha256: 6547eb62c66b1ed5c1832961d6c1e65417d0d34e0a9384d8692e0a6d6799d62b

Contents?: true

Size: 1.79 KB

Versions: 7

Compression:

Stored size: 1.79 KB

Contents

require 'test_helper'

module Vedeu

  describe Input do

    let(:reader)    { Vedeu::Terminal }
    let(:keypress)  { 'a' }
    let(:described) { Vedeu::Input }
    let(:instance)  { described.new(reader) }
    let(:raw_mode)  { true }

    describe '#initialize' do
      it { instance.must_be_instance_of(described) }
      it { instance.instance_variable_get('@reader').must_equal(reader) }
    end

    describe '.capture' do
      before do
        reader.stubs(:raw_mode?).returns(raw_mode)
        Vedeu.stubs(:trigger).returns([false])
      end

      subject { described.capture(reader) }

      context 'when in cooked mode' do
        let(:raw_mode) { false }
        let(:command)  { 'help' }

        before { reader.stubs(:read).returns(command) }

        it 'triggers an event with the command' do
          Vedeu.expects(:trigger).with(:_command_, command)
          subject
        end
      end

      context 'when in raw mode' do
        let(:raw_mode) { true }
        let(:keypress) { 'a' }

        before { reader.stubs(:read).returns(keypress) }

        context 'when the key is not special' do
          it 'triggers an event with the keypress' do
            Vedeu.expects(:trigger).with(:_keypress_, keypress)
            subject
          end
        end

        context 'when the key is special' do
          let(:keypress) { "\e[A" }

          it 'triggers an event with the keypress' do
            Vedeu.expects(:trigger).with(:_keypress_, :up)
            subject
          end

          context 'when the key is an F key' do
            let(:keypress) { "\e[17~" }

            it 'triggers an event with the keypress' do
              Vedeu.expects(:trigger).with(:_keypress_, :f6)
              subject
            end
          end
        end
      end
    end

  end # Input

end # Vedeu

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
vedeu-0.5.13 test/lib/vedeu/input/input_test.rb
vedeu-0.5.12 test/lib/vedeu/input/input_test.rb
vedeu-0.5.11 test/lib/vedeu/input/input_test.rb
vedeu-0.5.10 test/lib/vedeu/input/input_test.rb
vedeu-0.5.9 test/lib/vedeu/input/input_test.rb
vedeu-0.5.8 test/lib/vedeu/input/input_test.rb
vedeu-0.5.7 test/lib/vedeu/input/input_test.rb