about_sensei finale for closure to koans exercises

This commit is contained in:
Marc Peabody
2010-10-03 13:32:44 -04:00
parent e5843f64fd
commit d27004c70d
6 changed files with 311 additions and 34 deletions

118
koans/about_sensei.rb Normal file
View File

@@ -0,0 +1,118 @@
require File.expand_path(File.dirname(__FILE__) + '/edgecase')
class Sensei
def observe(step)
# Step Protocol: step.passed? | step.failure | step.koan_file | step.name
# WRITE THIS CODE
end
def pass_count
# WRITE THIS CODE
end
def failed?
# WRITE THIS CODE
end
def instruct
# WRITE THIS CODE
end
end
def student_passes_test
assert true # DO NOT CHANGE YOUR STUDENT'S ANSWER
end
def student_fails_test
assert false # DO NOT CHANGE YOUR STUDENT'S ANSWER
end
class AboutSensei < EdgeCase::Koan
def test_sensei_comments_about_expanded_awareness
you = Sensei.new
student_step = EdgeCase::Koan.new(:student_passes_test, self)
student_meditation = student_step.meditate
observation = you.observe(student_meditation)
assert_equal "AboutSensei#student_passes_test has expanded your awareness.", observation
end
def test_sensei_comments_about_damaged_karma
you = Sensei.new
student_step = EdgeCase::Koan.new(:student_fails_test, self)
student_meditation = student_step.meditate
observation = you.observe(student_meditation)
assert_equal "AboutSensei#student_fails_test has damaged your karma.", observation
end
def test_sensei_counts_passed_steps
you = Sensei.new
student_steps = [EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_fails_test, self)]
student_steps.each do |step|
you.observe step.meditate
end
assert_equal 4, you.pass_count
end
def test_sensei_reports_failed_true
you = Sensei.new
student_steps = [EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_fails_test, self)]
student_steps.each do |step|
you.observe step
end
assert you.failed?
end
def test_sensei_reports_failed_true
you = Sensei.new
student_steps = [EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_passes_test, self)]
student_steps.each do |step|
you.observe step
end
assert ! you.failed?
end
def test_sensei_shows_beginning_progress
you = Sensei.new
student_steps = [EdgeCase::Koan.new(:student_fails_test, self),
EdgeCase::Koan.new(:student_fails_test, self),
EdgeCase::Koan.new(:student_fails_test, self),
EdgeCase::Koan.new(:student_fails_test, self),
EdgeCase::Koan.new(:student_fails_test, self)]
student_steps.each do |step|
you.observe step.meditate
end
instructions = you.instruct
assert_match "You have not yet reached enlightenment", instructions
assert_match "You have passed 0 steps", instructions
end
def test_sensei_shows_partial_progress
you = Sensei.new
student_steps = [EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_passes_test, self),
EdgeCase::Koan.new(:student_fails_test, self),
EdgeCase::Koan.new(:student_fails_test, self)]
student_steps.each do |step|
you.observe step.meditate
end
instructions = you.instruct
assert_match "You have not yet reached enlightenment", instructions
assert_match "You have passed 3 steps", instructions
end
def test_sensei_congratulates_student
you = Sensei.new
# run all of Ruby Koans with you as the sensei
EdgeCase::ThePath.new(you).walk
instructions = you.instruct
assert_match "The student has become the master", instructions
end
end