fetch next

This commit is contained in:
Ben Harris 2018-03-02 17:30:36 -05:00
parent 8b916fbaad
commit a177b61678
2 changed files with 219 additions and 0 deletions

42
ruby/bob/README.md Normal file
View File

@ -0,0 +1,42 @@
# Bob
Bob is a lackadaisical teenager. In conversation, his responses are very limited.
Bob answers 'Sure.' if you ask him a question.
He answers 'Whoa, chill out!' if you yell at him.
He says 'Fine. Be that way!' if you address him without actually saying
anything.
He answers 'Whatever.' to anything else.
* * * *
For installation and learning resources, refer to the
[exercism help page](http://exercism.io/languages/ruby).
For running the tests provided, you will need the Minitest gem. Open a
terminal window and run the following command to install minitest:
gem install minitest
If you would like color output, you can `require 'minitest/pride'` in
the test file, or note the alternative instruction, below, for running
the test file.
Run the tests from the exercise directory using the following command:
ruby bob_test.rb
To include color from the command line:
ruby -r minitest/pride bob_test.rb
## Source
Inspired by the 'Deaf Grandma' exercise in Chris Pine's Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=06](http://pine.fm/LearnToProgram/?Chapter=06)
## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

177
ruby/bob/bob_test.rb Normal file
View File

@ -0,0 +1,177 @@
require 'minitest/autorun'
require_relative 'bob'
# Common test data version: 1.0.0 65756b1
class BobTest < Minitest::Test
def test_stating_something
# skip
remark = "Tom-ay-to, tom-aaaah-to."
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "Tom-ay-to, tom-aaaah-to.", and..}
end
def test_shouting
skip
remark = "WATCH OUT!"
assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "WATCH OUT!", and..}
end
def test_shouting_gibberish
skip
remark = "FCECDFCAAB"
assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "FCECDFCAAB", and..}
end
def test_asking_a_question
skip
remark = "Does this cryogenic chamber make me look fat?"
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "Does this cryogenic chamber make me look fat?", and..}
end
def test_asking_a_numeric_question
skip
remark = "You are, what, like 15?"
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "You are, what, like 15?", and..}
end
def test_asking_gibberish
skip
remark = "fffbbcbeab?"
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "fffbbcbeab?", and..}
end
def test_talking_forcefully
skip
remark = "Let's go make out behind the gym!"
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "Let's go make out behind the gym!", and..}
end
def test_using_acronyms_in_regular_speech
skip
remark = "It's OK if you don't want to go to the DMV."
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "It's OK if you don't want to go to the DMV.", and..}
end
def test_forceful_question
skip
remark = "WHAT THE HELL WERE YOU THINKING?"
assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "WHAT THE HELL WERE YOU THINKING?", and..}
end
def test_shouting_numbers
skip
remark = "1, 2, 3 GO!"
assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "1, 2, 3 GO!", and..}
end
def test_only_numbers
skip
remark = "1, 2, 3"
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "1, 2, 3", and..}
end
def test_question_with_only_numbers
skip
remark = "4?"
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "4?", and..}
end
def test_shouting_with_special_characters
skip
remark = "ZOMG THE %^*@\#$(*^ ZOMBIES ARE COMING!!11!!1!"
assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "ZOMG THE %^*@\#$(*^ ZOMBIES ARE COMING!!11!!1!", and..}
end
def test_shouting_with_no_exclamation_mark
skip
remark = "I HATE YOU"
assert_equal 'Whoa, chill out!', Bob.hey(remark), %q{Bob hears "I HATE YOU", and..}
end
def test_statement_containing_question_mark
skip
remark = "Ending with ? means a question."
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "Ending with ? means a question.", and..}
end
def test_non_letters_with_question
skip
remark = ":) ?"
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears ":) ?", and..}
end
def test_prattling_on
skip
remark = "Wait! Hang on. Are you going to be OK?"
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "Wait! Hang on. Are you going to be OK?", and..}
end
def test_silence
skip
remark = ""
assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears "", and..}
end
def test_prolonged_silence
skip
remark = " "
assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears " ", and..}
end
def test_alternate_silence
skip
remark = "\t\t\t\t\t\t\t\t\t\t"
assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears "\t\t\t\t\t\t\t\t\t\t", and..}
end
def test_multiple_line_question
skip
remark = "\nDoes this cryogenic chamber make me look fat?\nno"
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "\nDoes this cryogenic chamber make me look fat?\nno", and..}
end
def test_starting_with_whitespace
skip
remark = " hmmmmmmm..."
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears " hmmmmmmm...", and..}
end
def test_ending_with_whitespace
skip
remark = "Okay if like my spacebar quite a bit? "
assert_equal 'Sure.', Bob.hey(remark), %q{Bob hears "Okay if like my spacebar quite a bit? ", and..}
end
def test_other_whitespace
skip
remark = "\n\r \t"
assert_equal 'Fine. Be that way!', Bob.hey(remark), %q{Bob hears "\n\r \t", and..}
end
def test_non_question_ending_with_whitespace
skip
remark = "This is a statement ending with whitespace "
assert_equal 'Whatever.', Bob.hey(remark), %q{Bob hears "This is a statement ending with whitespace ", and..}
end
# Problems in exercism evolve over time, as we find better ways to ask
# questions.
# The version number refers to the version of the problem you solved,
# not your solution.
#
# Define a constant named VERSION inside of the top level BookKeeping
# module, which may be placed near the end of your file.
#
# In your file, it will look like this:
#
# module BookKeeping
# VERSION = 1 # Where the version number matches the one in the test.
# end
#
# If you are curious, read more about constants on RubyDoc:
# http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/constants.html
def test_bookkeeping
skip
assert_equal 1, BookKeeping::VERSION
end
end