[Home]DojoDeveloppement/Mercredi29Fevrier2012

AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne

Participants :


Rétrospective de la dernière fois (c'est-à-dire, du /Mercredi22Fevrier2012) :


Et ce soir...


La production de ce soir...

Tests.hs

module Tests
where
import Test.HUnit

euler17 :: Int -> Int
euler17 n = sum $ map (length . letters) [1..n]

terminals 0 = ""
terminals 1 = "one"
terminals 2 = "two"
terminals 20 = "twenty"
terminals 30 = "thirty"
terminals 100 = "onehundred"

letters n | n > 20 = let units = n `mod` 10 in
  concatMap terminals [n - units, units] ++ if n > 100 then "and" else ""
letters n = terminals n

main = runTestTT $ TestList [
    "The numeral 'one' is three letters long" ~: length "one" ~?= 3,
    "The Euler17 value of 1 is therefore 3" ~: euler17 1 ~?= 3,
    "The Euler17 value of 2 is (not so obviously) 6" ~: euler17 2 ~?= 6,
    "Some terminal cases" ~: TestList [
        terminals 1 ~?= "one",
        terminals 2 ~?= "two",
        terminals 20 ~?= "twenty"
      ],
    "Decomposing larger numbers" ~: TestList [
        letters 21 ~?= "twentyone",
        letters 22 ~?= "twentytwo",
        letters 31 ~?= "thirtyone",
        letters 200 ~?= "twohundred"
      ], 
    "Some large numbers are terminals" ~: TestList [
        letters 30 ~?= "thirty",
        letters 100 ~?= "onehundred"
      ],
    "The British and their andses" ~: TestList [
        letters 101 ~?= "onehundredoneand"
      ]
    ]


AgileFrance | DojoDeveloppement | DernieresNouvelles | Preferences | AideEnLigne
Edit this page | View other revisions
Last edited February 29, 2012 8:36 pm (diff)
Search: