Sha256: bccb0f28fda368f90f6fb29a7ea36d54a34174fd1ff96061fa86fba1b1b5cae6

Contents?: true

Size: 1.19 KB

Versions: 2

Compression:

Stored size: 1.19 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
  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

2 entries across 2 versions & 1 rubygems

Version Path
MonkeyEngine-2.0.2 lib/MonkeyAction/monkey_action_type.rb
MonkeyEngine-2.0.1 lib/MonkeyAction/monkey_action_type.rb