diff --git a/lib/ruby_warrior/level.rb b/lib/ruby_warrior/level.rb index 5e898495..2621cfba 100644 --- a/lib/ruby_warrior/level.rb +++ b/lib/ruby_warrior/level.rb @@ -44,7 +44,12 @@ def generate_player_files def play(turns = 1000) load_level turns.times do |n| - return if passed? || failed? + if passed? + return true + elsif failed? + return false + end + UI.puts "- turn #{n+1} -" UI.print @floor.character @floor.units.each { |unit| unit.prepare_turn } @@ -52,6 +57,8 @@ def play(turns = 1000) yield if block_given? @time_bonus -= 1 if @time_bonus > 0 end + + return false end def tally_points diff --git a/spec/ruby_warrior/level_spec.rb b/spec/ruby_warrior/level_spec.rb index 7fdf4cd4..42a33272 100644 --- a/spec/ruby_warrior/level_spec.rb +++ b/spec/ruby_warrior/level_spec.rb @@ -114,6 +114,16 @@ @level.stubs(:passed?).returns(true) @level.play(2) end + + it "should return true if the level is passed" do + @level.stubs(:passed?).returns(true) + @level.play(2).should be_true + end + + it "should return false if the level is not passed" do + @level.stubs(:failed?).returns(true) + @level.play(2).should be_false + end it "should yield to block in play method for each turn" do int = 0