packages feed

network-can-0.1.0.0: test/SLCANSpec.hs

module SLCANSpec where

import Test.Hspec (Spec, describe, it, shouldBe)
import Test.Hspec.QuickCheck (prop)
import Samples

import Network.SLCAN.Types (SLCANMessage(..))
import qualified Network.SLCAN.Builder
import qualified Network.SLCAN.Parser

spec :: Spec
spec = do
  describe "SLCAN" $ do
    it "roundtrips samples" $ do
      mapM_
        (\x ->
          (   Network.SLCAN.Parser.parseSLCANMessage
          <$> Network.SLCAN.Builder.buildSLCANMessage
          ) (SLCANMessage_Data x)
          `shouldBe` pure (SLCANMessage_Data x)
        ) samples

    prop "roundtrips" $ \x ->
      Network.SLCAN.Parser.parseSLCANMessage
        (Network.SLCAN.Builder.buildSLCANMessage x)
      `shouldBe`
        pure x