mirror of
https://github.com/edgecase/ruby_koans.git
synced 2026-04-15 07:23:19 -04:00
Added src directory
This commit is contained in:
64
src/about_dice_project.rb
Normal file
64
src/about_dice_project.rb
Normal file
@@ -0,0 +1,64 @@
|
||||
require 'edgecase'
|
||||
|
||||
class DiceSet
|
||||
attr_reader :values
|
||||
def roll(n)
|
||||
@values = (1..n).map { rand(6) + 1 }
|
||||
end
|
||||
end
|
||||
|
||||
class AboutDiceSet < EdgeCase::Koan
|
||||
def test_can_create_a_dice_set
|
||||
dice = DiceSet.new
|
||||
assert_not_nil dice
|
||||
end
|
||||
|
||||
def test_rolling_the_dice_returns_a_set_of_integers_between_1_and_6
|
||||
dice = DiceSet.new
|
||||
|
||||
dice.roll(5)
|
||||
assert dice.values.is_a?(Array), "should be an array"
|
||||
assert_equal 5, dice.values.size
|
||||
dice.values.each do |value|
|
||||
assert value >= 1 && value <= 6, "value #{value} must be between 1 and 6"
|
||||
end
|
||||
end
|
||||
|
||||
def test_dice_values_do_not_change_unless_explicitly_rolled
|
||||
dice = DiceSet.new
|
||||
dice.roll(5)
|
||||
first_time = dice.values
|
||||
second_time = dice.values
|
||||
assert_equal first_time, second_time
|
||||
end
|
||||
|
||||
def test_dice_values_should_change_between_rolls
|
||||
dice = DiceSet.new
|
||||
|
||||
dice.roll(5)
|
||||
first_time = dice.values
|
||||
|
||||
dice.roll(5)
|
||||
second_time = dice.values
|
||||
|
||||
assert_not_equal first_time, second_time,
|
||||
"Two rolls should not be equal"
|
||||
|
||||
# THINK ABOUT IT:
|
||||
#
|
||||
# If the rolls are random, then it is possible (although not
|
||||
# likely) that two consecutive rolls are equal. What would be a
|
||||
# better way to test this.
|
||||
end
|
||||
|
||||
def test_you_can_roll_different_numbers_of_dice
|
||||
dice = DiceSet.new
|
||||
|
||||
dice.roll(3)
|
||||
assert_equal 3, dice.values.size
|
||||
|
||||
dice.roll(1)
|
||||
assert_equal 1, dice.values.size
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user