Skip to content

Instantly share code, notes, and snippets.

Created March 24, 2012 08:07
Show Gist options
  • Save anonymous/2179894 to your computer and use it in GitHub Desktop.
Save anonymous/2179894 to your computer and use it in GitHub Desktop.
require_relative 'hangman_class'
require 'test/unit'
class TestHangman < Test::Unit::TestCase
def test_startup_value
Hangman.class_eval do
attr_accessor :words, :finish, :limit, :win
end
hangman = Hangman.new
assert(hangman.words.length > 0, "should have more than one in dictionary")
assert_equal(hangman.finish, false)
assert_equal(hangman.limit, 8)
assert_equal(hangman.win, false)
end
def test_exit
Hangman.class_eval do
attr_accessor :word
end
hangman = Hangman.new
hangman.guess("exit")
assert(hangman.finish, "should exit when user type exit")
end
def test_find_one_char
Hangman.class_eval do
attr_accessor :word, :answer
end
hangman = Hangman.new
hangman.start
hangman.word = "powerpuf"
hangman.answer = "________"
hangman.guess("x\n")
assert_equal("________", hangman.answer)
hangman.guess("o\n")
assert_equal("_o______", hangman.answer)
hangman.guess("p\n")
assert_equal("po___p__", hangman.answer)
end
def test_find_one_and_quick
Hangman.class_eval do
attr_accessor :word, :answer, :finish, :win
end
hangman = Hangman.new
hangman.start
hangman.word = "powerpuf"
hangman.answer = "________"
hangman.guess("x\n")
assert_equal("________", hangman.answer)
hangman.guess("o\n")
assert_equal("_o______", hangman.answer)
hangman.guess("p\n")
assert_equal("po___p__", hangman.answer)
hangman.guess("powerpuf\n")
assert( hangman.finish )
assert( hangman.win )
end
def test_cannot_answer
Hangman.class_eval do
attr_accessor :word, :answer, :finish, :win
end
hangman = Hangman.new
hangman.start
hangman.word = "superman"
hangman.answer = "________"
assert_equal(hangman.limit, 8)
hangman.guess("x\n")
assert_equal("________", hangman.answer)
assert_equal(hangman.limit, 7)
hangman.guess("u\n")
assert_equal("_u______", hangman.answer)
assert_equal(hangman.limit, 6)
hangman.guess("p\n")
assert_equal("_up_____", hangman.answer)
assert_equal(hangman.limit, 5)
hangman.guess("z\n")
assert_equal("_up_____", hangman.answer)
assert_equal(hangman.limit, 4)
hangman.guess("p\n")
assert_equal("_up_____", hangman.answer)
assert_equal(hangman.limit, 3)
hangman.guess("u\n")
assert_equal("_up_____", hangman.answer)
assert_equal(hangman.limit, 2)
hangman.guess("s\n")
assert_equal("sup_____", hangman.answer)
assert_equal(hangman.limit, 1)
hangman.guess("p\n")
assert_equal("sup_____", hangman.answer)
assert( hangman.finish )
assert( !hangman.win )
assert_equal(hangman.limit, 0)
end
def test_quick_answer
Hangman.class_eval do
attr_accessor :word, :answer, :win
end
hangman = Hangman.new
hangman.start
hangman.word = "powerpuf"
hangman.answer = "________"
hangman.guess("powerpuf\n")
assert(hangman.finish, "should exit when user type exit")
assert(hangman.win, "should win when user put true answer")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment