mercury-api-0.1.0.0: tests/unit.hs
{-# LANGUAGE OverloadedStrings #-}
import qualified Data.ByteString as B ( ByteString )
import Data.Monoid ((<>))
import qualified Data.Text as T ( Text )
import Test.HUnit ( Assertion, Test(..), runTestTT, assertEqual )
import qualified System.Hardware.MercuryApi as TMR
helloWorld :: B.ByteString
helloWorld = "Hello, World!"
defacedBadFacade :: T.Text
defacedBadFacade = "DefacedBadFacade"
defacedBadFacadeBin :: B.ByteString
defacedBadFacadeBin = "\222\250\206\219\173\250\202\222"
-- http://www.adafruit.com/datasheets/CSN-A2%20User%20Manual.pdf
phrase :: B.ByteString
phrase = "thoroughly remove the uncommon words of anguish"
testDataHelpers :: Assertion
testDataHelpers = do
assertEqual "TMR.packBytesIntoWords helloWorld"
[18533,27756,28460,8279,28530,27748,8448]
(TMR.packBytesIntoWords helloWorld)
assertEqual "TMR.passwordToWords 0xbeadead1"
[0xbead, 0xead1]
(TMR.passwordToWords 0xbeadead1)
testHex :: Assertion
testHex = do
assertEqual "TMR.bytesToHex defacedBadFacadeBin"
"DEFACEDBADFACADE"
(TMR.bytesToHex defacedBadFacadeBin)
assertEqual "TMR.bytesToHexWithSpaces defacedBadFacadeBin"
"de fa ce db ad fa ca de"
(TMR.bytesToHexWithSpaces defacedBadFacadeBin)
assertEqual "TMR.hexToBytes defacedBadFacade"
(Just defacedBadFacadeBin)
(TMR.hexToBytes defacedBadFacade)
assertEqual "TMR.hexToBytes $ \"0x\" <> defacedBadFacade"
(Just defacedBadFacadeBin)
(TMR.hexToBytes $ "0x" <> defacedBadFacade)
assertEqual "TMR.hexToBytes \"XXYYZZ\""
Nothing
(TMR.hexToBytes "XXYYZZ")
assertEqual "TMR.hexToBytes \"0dd\""
Nothing
(TMR.hexToBytes "0dd")
testTimestamp :: Assertion
testTimestamp = do
assertEqual "TMR.displayTimestamp 0"
"1970-01-01T00:00:00.000Z"
(TMR.displayTimestamp 0)
assertEqual "TMR.displayTimestamp 123456789"
"1970-01-02T10:17:36.789Z"
(TMR.displayTimestamp 123456789)
assertEqual "TMR.displayTimestamp 1513728000000"
"2017-12-20T00:00:00.000Z"
(TMR.displayTimestamp 1513728000000)
testData :: Assertion
testData = do
assertEqual "TMR.displayData phrase"
[ "74 68 6f 72 6f 75 67 68 6c 79 20 72 65 6d 6f 76 |thoroughly remov|"
, "65 20 74 68 65 20 75 6e 63 6f 6d 6d 6f 6e 20 77 |e the uncommon w|"
, "6f 72 64 73 20 6f 66 20 61 6e 67 75 69 73 68 |ords of anguish|"
]
(TMR.displayData phrase)
tests :: Test
tests = TestList
[ TestLabel "testDataHelpers" (TestCase testDataHelpers)
, TestLabel "testHex" (TestCase testHex)
, TestLabel "testTimestamp" (TestCase testTimestamp)
, TestLabel "testData" (TestCase testData)
]
main = runTestTT tests