backfill tests for getters/setters
parent
d19f759165
commit
d7ea77087a
|
@ -3,7 +3,7 @@ module Player exposing
|
||||||
, PlayerId, id, idSorter
|
, PlayerId, id, idSorter
|
||||||
, name
|
, name
|
||||||
, rating, setRating
|
, rating, setRating
|
||||||
, matchesPlayed, setMatchesPlayed, incrementMatchesPlayed
|
, matchesPlayed, setMatchesPlayedTestOnly, incrementMatchesPlayed
|
||||||
, encode
|
, encode
|
||||||
, decoder
|
, decoder
|
||||||
)
|
)
|
||||||
|
@ -18,7 +18,7 @@ module Player exposing
|
||||||
|
|
||||||
@docs rating, setRating
|
@docs rating, setRating
|
||||||
|
|
||||||
@docs matchesPlayed, setMatchesPlayed, incrementMatchesPlayed
|
@docs matchesPlayed, setMatchesPlayedTestOnly, incrementMatchesPlayed
|
||||||
|
|
||||||
@docs encode, decode
|
@docs encode, decode
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ rating (Player player) =
|
||||||
|
|
||||||
setRating : Int -> Player -> Player
|
setRating : Int -> Player -> Player
|
||||||
setRating rating_ (Player player) =
|
setRating rating_ (Player player) =
|
||||||
Player { player | rating = rating_ }
|
Player { player | rating = max 0 rating_ }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -100,8 +100,8 @@ matchesPlayed (Player player) =
|
||||||
player.matches
|
player.matches
|
||||||
|
|
||||||
|
|
||||||
setMatchesPlayed : Int -> Player -> Player
|
setMatchesPlayedTestOnly : Int -> Player -> Player
|
||||||
setMatchesPlayed matches (Player player) =
|
setMatchesPlayedTestOnly matches (Player player) =
|
||||||
Player { player | matches = matches }
|
Player { player | matches = matches }
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
module PlayerTest exposing (..)
|
module PlayerTest exposing (..)
|
||||||
|
|
||||||
|
import Elo
|
||||||
import Expect
|
import Expect
|
||||||
import Fuzz exposing (Fuzzer)
|
import Fuzz exposing (Fuzzer)
|
||||||
import Json.Decode as Decode
|
import Json.Decode as Decode
|
||||||
|
@ -33,13 +34,64 @@ interopTest =
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
nameTest : Test
|
||||||
|
nameTest =
|
||||||
|
describe "name"
|
||||||
|
[ test "you get the same name out as you put in" <|
|
||||||
|
\_ ->
|
||||||
|
Player.init "Babaganoush"
|
||||||
|
|> Player.name
|
||||||
|
|> Expect.equal "Babaganoush"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
matchesTest : Test
|
||||||
|
matchesTest =
|
||||||
|
describe "matches"
|
||||||
|
[ test "you start off having played zero matches" <|
|
||||||
|
\_ ->
|
||||||
|
Player.init "Pita"
|
||||||
|
|> Player.matchesPlayed
|
||||||
|
|> Expect.equal 0
|
||||||
|
, test "when you play a match, you can see it" <|
|
||||||
|
\_ ->
|
||||||
|
Player.init "Pita"
|
||||||
|
|> Player.incrementMatchesPlayed
|
||||||
|
|> Player.matchesPlayed
|
||||||
|
|> Expect.equal 1
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
ratingTest : Test
|
||||||
|
ratingTest =
|
||||||
|
describe "rating"
|
||||||
|
[ test "you start off at the default Elo rating" <|
|
||||||
|
\_ ->
|
||||||
|
Player.init "Shish Taouk"
|
||||||
|
|> Player.rating
|
||||||
|
|> Expect.equal Elo.initialRating
|
||||||
|
, fuzz (Fuzz.intRange 0 (Elo.initialRating * 2)) "your rating can be set to whatever" <|
|
||||||
|
\rating ->
|
||||||
|
Player.init "Shish Taouk"
|
||||||
|
|> Player.setRating rating
|
||||||
|
|> Player.rating
|
||||||
|
|> Expect.equal rating
|
||||||
|
, test "your rating cannot go below zero" <|
|
||||||
|
\_ ->
|
||||||
|
Player.init "Shish Taouk"
|
||||||
|
|> Player.setRating -1
|
||||||
|
|> Player.rating
|
||||||
|
|> Expect.equal 0
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
playerFuzzer : Fuzzer Player
|
playerFuzzer : Fuzzer Player
|
||||||
playerFuzzer =
|
playerFuzzer =
|
||||||
Fuzz.map3
|
Fuzz.map3
|
||||||
(\name rating matches ->
|
(\name rating matches ->
|
||||||
Player.init name
|
Player.init name
|
||||||
|> Player.setRating rating
|
|> Player.setRating rating
|
||||||
|> Player.setMatchesPlayed matches
|
|> Player.setMatchesPlayedTestOnly matches
|
||||||
)
|
)
|
||||||
nameFuzzer
|
nameFuzzer
|
||||||
(Fuzz.intRange 1000 3000)
|
(Fuzz.intRange 1000 3000)
|
||||||
|
|
Reference in New Issue