Sha256: 043e1b84b8b25ab5c93fb164a6d2489a8e461bddb8579c26239c268d06976faf

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

# frozen_string_literal: true

require_relative 'monkey_action'
require 'MonkeyEngine/exceptions'

# Monkey action:  type (as in keyboard)
# The monkey typed something on the keyboard.
class MonkeyActionType < MonkeyAction
  attr_reader :keyboard_input

  WEIGHT = 5.0

  def initialize(monkey, keyboard_input)
    raise MonkeyEngine::Exceptions::NilArgumentException, "keyboard_input '#{keyboard_input}' cannot be nil"  \
      if keyboard_input.nil?

    unless keyboard_input.is_a?(KeyboardInput)
      raise MonkeyEngine::Exceptions::InvalidArgumentTypeException,
            "keyboard_input '#{keyboard_input}' is not a valid argument type"
    end

    @keyboard_input = keyboard_input

    super monkey, @keyboard_input.input, WEIGHT

    validate

    self
  end

  protected

  def validate
    raise MonkeyEngine::Exceptions::NilArgumentException, "Value '#{value}' cannot be nil"  \
      if @value.nil?

    unless @value.is_a?(Array)
      raise MonkeyEngine::Exceptions::InvalidArgumentTypeException,
            "Value '#{value}' is not a valid argument type (#{value.class.name})"
    end

    raise MonkeyEngine::Exceptions::InvalidArgumentValueException, "Value '#{value}' cannot be empty"  \
      if @value.empty?
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
MonkeyEngine-2.0.0 lib/MonkeyAction/monkey_action_type.rb