[Home]DojoDeveloppement/Lundi15Decembre2008

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne

Participants :

Rétrospective du /Lundi8Decembre2008 :


Au programme ce soir


Le code de la soirée :

Les tests : ScoreBowlingTest.rb

require "test/unit"
require "ScoreBowling"

class ScoreBowlingTest < Test::Unit::TestCase

  def assert_score_equal scoreAttendu, lancers
    assert_equal scoreAttendu, score(lancers)
  end

  def testPouilleux
    assert_score_equal 0,
      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
  end

  def testSansBonus
    assert_score_equal 1,
      [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    assert_score_equal 2,
      [1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    assert_score_equal 3,
      [1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0]
  end

  def testUnSpareAuPremierTour
    assert_score_equal 10 + 5 + 5,
      [1,9,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
    assert_score_equal 10 + 6 + 6,
      [0,0,1,9,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
  end

  def testUnStrikeDansLaPartie
    assert_score_equal 10 + 5 + 5,
      [10,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
  end

  def testRecette
    lancers = [9,0,6,4,5,2,10,7,2,10,10,10,6,4,10,10, 2]
    assert_equal 177, score(lancers)
  end
end


Le code de production : ScoreBowling.rb
NB_TOURS = 10

def strike? lancers, tour
  lancers[tour] == 10
end
  
def spare? lancers, tour
  lancers[tour] + lancers[tour + 1] == 10
end
  
def bonus lancers, tour
  lancers[tour + 2]
end

def bonus? lancers, tour
  strike?(lancers, tour) || spare?(lancers, tour)
end   
    
      
def score lancers
  resultat = 0
  tour = 0
  NB_TOURS.times do |i|
    resultat += lancers[tour] + lancers[tour+1]
    resultat += bonus(lancers, tour) if bonus? (lancers, tour)
    tour += strike?(lancers, tour) ? 1 : 2
  end
  resultat
end

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne
Edit this page | View other revisions
Last edited December 22, 2008 5:43 pm (diff)
Search: