mirror of
https://github.com/edgecase/ruby_koans.git
synced 2026-04-15 07:23:19 -04:00
about_sensei finale for closure to koans exercises
This commit is contained in:
118
koans/about_sensei.rb
Normal file
118
koans/about_sensei.rb
Normal 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
|
||||
Reference in New Issue
Block a user