Sha256: 64a939527c551e233586e27e03bbff19aa39ed82e127ce60acda29f61a338e8a

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

require_relative '../../../test_helper'
require_relative '../../../../lib/vedeu/process/process'
require_relative '../../../support/dummy_command'
require_relative '../../../../lib/vedeu/repository/command_repository'

module Vedeu
  class QuitCommand
    def self.dispatch
      :stop
    end
  end

  class TestCommand
    def self.dispatch
      {
        'Process#evaluate' => 'TestCommand.dispatch'
      }
    end
  end

  class NoResultCommand
    def self.dispatch
    end
  end

  describe Process do
    describe '.evaluate' do
      it 'returns false when there is no input' do
        Queue.reset
        Process.evaluate.must_be_instance_of(FalseClass)
      end

      it 'raises an exception when the result is :stop' do
        CommandRepository.reset
        CommandRepository.create({
          name:     'quit',
          entity:   QuitCommand,
          keypress: 'q'
        })
        Queue.reset
        Queue.enqueue('q')
        proc { Process.evaluate }.must_raise(StopIteration)
      end

      it 'returns an Composition when there is a result' do
        CommandRepository.reset
        CommandRepository.create({
          name:     'test',
          entity:   TestCommand,
          keypress: 't'
        })
        Queue.reset
        Queue.enqueue('t')
        Process.evaluate.must_be_instance_of(Composition)
      end

      it 'returns a NilClass when there is no result' do
        CommandRepository.reset
        CommandRepository.create({
          name:     'no_result',
          entity:   NoResultCommand,
          keypress: 'n'
        })
        Queue.reset
        Queue.enqueue('n')
        Process.evaluate.must_be_instance_of(NilClass)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vedeu-0.0.33 test/lib/vedeu/process/process_test.rb
vedeu-0.0.32 test/lib/vedeu/process/process_test.rb
vedeu-0.0.31 test/lib/vedeu/process/process_test.rb