packages feed

rtcm-0.1.4: test/Test/Data/RTCM3/Antennas.hs

{-# OPTIONS -fno-warn-orphans #-}

-- |
-- Module:      Test.Data.RTCM3.Antennas
-- Copyright:   (c) 2015 Mark Fine
-- License:     BSD3
-- Maintainer:  Mark Fine <mark@swift-nav.com>
--
-- Test Antennas module for RTCM3.

module Test.Data.RTCM3.Antennas
  ( tests
  ) where

import BasicPrelude
import Data.Binary
import Data.RTCM3
import Test.Data.RTCM3.Test
import Test.Tasty
import Test.Tasty.QuickCheck

instance Arbitrary AntennaReference where
  arbitrary = do
    _antennaReference_num          <- arbitraryWord 12
    _antennaReference_station      <- arbitraryWord 12
    _antennaReference_gps          <- arbitrary
    _antennaReference_glonass      <- arbitrary
    _antennaReference_computed     <- arbitrary
    _antennaReference_ecef_x       <- arbitraryInt 38
    _antennaReference_oscillator   <- arbitrary
    _antennaReference_ecef_y       <- arbitraryInt 38
    _antennaReference_quarterCycle <- arbitraryWord 2
    _antennaReference_ecef_z       <- arbitraryInt 38
    return AntennaReference {..}

instance Arbitrary ExtAntennaReference where
  arbitrary = do
    _extAntennaReference_height <- arbitraryWord 16
    return ExtAntennaReference {..}

instance Arbitrary AntennaDescriptor where
  arbitrary = do
    _antennaDescriptor_num         <- arbitraryWord 12
    _antennaDescriptor_station     <- arbitraryWord 12
    _antennaDescriptor_n           <- arbitraryWord 8
    _antennaDescriptor_descriptors <- replicateM (fromIntegral _antennaDescriptor_n) $ arbitraryWord 8
    _antennaDescriptor_setup       <- arbitraryWord 8
    return AntennaDescriptor {..}

instance Arbitrary ExtAntennaDescriptor where
  arbitrary = do
    _extAntennaDescriptor_n <- arbitraryWord 8
    _extAntennaDescriptor_serialNumbers <- replicateM (fromIntegral _extAntennaDescriptor_n) $ arbitraryWord 8
    return ExtAntennaDescriptor {..}

instance Arbitrary ReceiverDescriptor where
  arbitrary = do
    _receiverDescriptor_n                <- arbitraryWord 8
    _receiverDescriptor_descriptors      <- replicateM (fromIntegral _receiverDescriptor_n) $ arbitraryWord 8
    _receiverDescriptor_m                <- arbitraryWord 8
    _receiverDescriptor_firmwareVersions <- replicateM (fromIntegral _receiverDescriptor_m) $ arbitraryWord 8
    _receiverDescriptor_l                <- arbitraryWord 8
    _receiverDescriptor_serialNumbers    <- replicateM (fromIntegral _receiverDescriptor_l) $ arbitraryWord 8
    return ReceiverDescriptor {..}

instance Arbitrary Msg1005 where
  arbitrary = Msg1005 <$> arbitrary

instance Arbitrary Msg1006 where
  arbitrary = Msg1006 <$> arbitrary <*> arbitrary

instance Arbitrary Msg1007 where
  arbitrary = Msg1007 <$> arbitrary

instance Arbitrary Msg1008 where
  arbitrary = Msg1008 <$> arbitrary <*> arbitrary

instance Arbitrary Msg1033 where
  arbitrary = Msg1033 <$> arbitrary <*> arbitrary <*> arbitrary

testMsg1005 :: TestTree
testMsg1005 =
  testProperty "Roundtrip Msg1005" $ \msg ->
    (decode $ encode msg) == (msg :: Msg1005)

testMsg1006 :: TestTree
testMsg1006 =
  testProperty "Roundtrip Msg1006" $ \msg ->
    (decode $ encode msg) == (msg :: Msg1006)

testMsg1007 :: TestTree
testMsg1007 =
  testProperty "Roundtrip Msg1007" $ \msg ->
    (decode $ encode msg) == (msg :: Msg1007)

testMsg1008 :: TestTree
testMsg1008 =
  testProperty "Roundtrip Msg1008" $ \msg ->
    (decode $ encode msg) == (msg :: Msg1008)

testMsg1033 :: TestTree
testMsg1033 =
  testProperty "Roundtrip Msg1033" $ \msg ->
    (decode $ encode msg) == (msg :: Msg1033)

tests :: TestTree
tests =
  testGroup "Antennas tests"
    [ testMsg1005
    , testMsg1006
    , testMsg1007
    , testMsg1008
    , testMsg1033
    ]