DEV Community

Discussion on: Daily Challenge Post #20 - Number Check

Collapse
 
kaspermeyer profile image
Kasper Meyer

Ruby 2.6

require "minitest/autorun"
require "prime"

class ArbitraryPropertyNumber
  def initialize number
    @number = number
  end

  def prime?
    Prime.prime?(@number)
  end

  def even?
    @number.even?
  end

  def multiple_of_ten?
    @number % 10 == 0
  end
end

class ArbitraryPropertyNumberValidator
  def initialize number
    @number = number
  end

  def validate
    [number.prime?, number.even?, number.multiple_of_ten?]
  end

  private

    def number
      ArbitraryPropertyNumber.new(@number)
    end
end

class ArbitraryPropertyNumberValidatorTest < MiniTest::Test
  def test_first_element_is_true_when_number_is_prime
    assert_equal [true, false, false], ArbitraryPropertyNumberValidator.new(3).validate
  end

  def test_second_element_is_true_when_number_is_even
    assert_equal [false, true, false], ArbitraryPropertyNumberValidator.new(4).validate
  end

  def test_third_element_is_true_when_number_is_multiple_of_ten
    assert_equal [false, true, true], ArbitraryPropertyNumberValidator.new(20).validate
  end
end