macbeth-lib-0.0.12: test/PlayersSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module PlayersSpec (spec) where
import qualified Macbeth.Fics.Api.Rating as R
import Macbeth.Fics.FicsMessage
import Macbeth.Fics.Api.Player
import Macbeth.Fics.Parsers.Players
import Test.Hspec
import Data.Attoparsec.ByteString.Char8
import qualified Data.ByteString.Char8 as BS
spec :: Spec
spec =
describe "Players" $ do
it "single player, Unregistered" $ parseOnly player' "++++^TeachMATE(U)\n"
`shouldBe` Right (Player R.Guest InvolvedInAGame (UserHandle "TeachMATE" [Unregistered]))
it "single player 2, with space" $ parseOnly player' "1173.kalithkar "
`shouldBe` Right (Player (R.Rating 1173 R.None) InactiveOrBusy (UserHandle "kalithkar" []))
it "single player, Admin & TournamentDirectorOrBot" $ parseOnly player' "----:adminBOT(*)(TD)"
`shouldBe` Right (Player R.Unrated NotOpenForMatch (UserHandle "adminBOT" [Admin,ServiceRepresentative]))
it "players" $ parseOnly players' "\n2985.BigMomma(C) ++++ xcx(U)\n1123^littledul \n\n 1055 players displayed (of 1055). (*) indicates system administrator.\n\ETB"
`shouldBe` Right [Player (R.Rating 2985 R.None) InactiveOrBusy (UserHandle "BigMomma" [Computer]),Player R.Guest NotBusy (UserHandle "xcx" [Unregistered]),Player (R.Rating 1123 R.None) InvolvedInAGame (UserHandle "littledul" [])]
it "check num players in block" $ fmap (\(Players x) -> length x) (parseOnly players "\NAK5\SYN146\SYN\n2985.BigMomma(C) ++++ xcx(U)\n1123^littledul \n\n 1055 players displayed (of 1055). (*) indicates system administrator.\n\ETB")
`shouldBe` Right 3
it "check num players in block 2" $ fmap (\(Players x) -> length x) (parseOnly players "\NAK5\SYN146\SYN\n2985.BigMomma(C) ++++ xcx(U)\n\n 1055 players displayed (of 1055). (*) indicates system administrator.\n\ETB")
`shouldBe` Right 2
it "bughouse partner offer" $ parseOnly partnerOffer "GuestZTCG offers to be your bughouse partner; type \"partner GuestZTCG\" to accept.\n"
`shouldBe` Right (PartnerOffer (UserHandle "GuestZTCG" []))
it "bughouse partner accepted" $ parseOnly partnerAccepted "GuestCCGS agrees to be your partner.\n"
`shouldBe` Right (PartnerAccepted (UserHandle "GuestCCGS" []))
it "bughouse partner declined" $ parseOnly partnerDeclined "GuestCCGS declines the partnership request.\n"
`shouldBe` Right (PartnerDeclined (UserHandle "GuestCCGS" []))
it "bughouse partner not open" $ parseOnly partnerNotOpen "\NAK6\SYN84\SYNzerowin is not open for bughouse.\n\ETB\n"
`shouldBe` Right (PartnerNotOpen (UserHandle "zerowin" []))
it "finger" $ parseOnly finger "\NAK6\SYN37\SYNFinger of raffa:\n\nOn for: 6 mins Idle: 13 secs\n(playing Who knew?\n\ETB\n"
`shouldBe` Right (Finger (UserHandle "raffa" []) "\n\nOn for: 6 mins Idle: 13 secs\n(playing Who knew?\n")
it "history" $ parseOnly history "\NAK6\SYN51\SYN\nHistory for Guffster:\n Opponent Type ECO End Date\n76: - 1337 B 1490 vitaliyS [ br 5 0] B06 Res Wed Feb 10, 18:29 EST 2016\n77: + 1348 W 1466 vitaliyS [ br 5 0] C23 Mat Wed Feb 10, 18:38 EST 2016\n\ETB"
`shouldBe` Right (History (UserHandle "Guffster" []) "\n Opponent Type ECO End Date\n76: - 1337 B 1490 vitaliyS [ br 5 0] B06 Res Wed Feb 10, 18:29 EST 2016\n77: + 1348 W 1466 vitaliyS [ br 5 0] C23 Mat Wed Feb 10, 18:38 EST 2016\n")