Sha256: 4a74be436916f55e5756e017acc1d63fcd76ab74b3e84492aea8ce68ffabb2aa

Contents?: true

Size: 1.79 KB

Versions: 23

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 }

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

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

    describe '.capture' do
      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

23 entries across 23 versions & 1 rubygems

Version Path
vedeu-0.5.0 test/lib/vedeu/input/input_test.rb
vedeu-0.4.65 test/lib/vedeu/input/input_test.rb
vedeu-0.4.64 test/lib/vedeu/input/input_test.rb
vedeu-0.4.63 test/lib/vedeu/input/input_test.rb
vedeu-0.4.62 test/lib/vedeu/input/input_test.rb
vedeu-0.4.61 test/lib/vedeu/input/input_test.rb
vedeu-0.4.60 test/lib/vedeu/input/input_test.rb
vedeu-0.4.59 test/lib/vedeu/input/input_test.rb
vedeu-0.4.58 test/lib/vedeu/input/input_test.rb
vedeu-0.4.57 test/lib/vedeu/input/input_test.rb
vedeu-0.4.56 test/lib/vedeu/input/input_test.rb
vedeu-0.4.55 test/lib/vedeu/input/input_test.rb
vedeu-0.4.54 test/lib/vedeu/input/input_test.rb
vedeu-0.4.53 test/lib/vedeu/input/input_test.rb
vedeu-0.4.52 test/lib/vedeu/input/input_test.rb
vedeu-0.4.51 test/lib/vedeu/input/input_test.rb
vedeu-0.4.50 test/lib/vedeu/input/input_test.rb
vedeu-0.4.49 test/lib/vedeu/input/input_test.rb
vedeu-0.4.48 test/lib/vedeu/input/input_test.rb
vedeu-0.4.47 test/lib/vedeu/input/input_test.rb