packages feed

hemokit-0.6.1: test/Tests.hs

{-# LANGUAGE OverloadedStrings #-}

module Main (main) where

import           Data.Maybe
import qualified Data.Vector as V
import           Test.Hspec
import           Test.HUnit

import Hemokit


_SERIAL :: SerialNumber
_SERIAL = fromJust $ makeSerialNumber "SN201211154288GM"


main :: IO ()
main = hspec $ do

  describe "decrypt" $ do

    it "decrypts 0123456789abcdef0123456789abcdef" $ do

      let b32      = "0123456789abcdef0123456789abcdef"
          expected = "\SUBp\176Ei\155%\183\237\145\185\166:\247eQ\SUBp\176Ei\155%\183\237\145\185\166:\247eQ"

      emotivRawDataBytes (decrypt _SERIAL Consumer b32) @?= expected


  describe "decrypting and parsing" $ do

    let encrypted = "S\a\205\165\195\182\244\DC4\NAKo\255K\\\247\146>tB\144q\165-\192\221\CANSa\150V,@\180"
        decrypted = decrypt _SERIAL Consumer encrypted
        rawData_expected = makeEmotivRawData "P}::\199\183\221\193|!\250h\205\NUL\NUL\NUL\STX\ENQX\r\162E|\218)\ETB\155\US\224gi9"
        packet_expected = EmotivPacket
          { packetCounter = 80
          , packetBattery = Nothing
          , packetGyroX   = -1
          , packetGyroY   = 8
          , packetSensors = V.fromList [8014,9132,7903,7617,7944,8102,9012,8277,8246,8773,7990,8849,7788,8160]
          , packetQuality = Just (FC6, 0)
          }

    it "decrypts a valid packet" $ decrypted             @?= rawData_expected
    it "parses a valid packet"   $ parsePacket decrypted @?= packet_expected