rtcm-0.2.39: test/Test/Data/RTCM3/Ephemerides.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS -fno-warn-orphans #-}
-- |
-- Module: Test.Data.RTCM3.Ephemerides
-- Copyright: (c) 2017 Swift Navigation
-- License: BSD3
-- Maintainer: Swift Navigation <dev@swiftnav.com>
--
-- Test Ephemerides module for RTCM3.
module Test.Data.RTCM3.Ephemerides
( tests
) where
import BasicPrelude
import Data.Binary
import Data.RTCM3
import Test.Data.RTCM3.Test
import Test.Tasty
import Test.Tasty.QuickCheck
instance Arbitrary GpsEphemerisHeader where
arbitrary = do
_gpsEphemerisHeader_num <- arbitraryWord 12
_gpsEphemerisHeader_sat <- arbitraryWord 6
pure GpsEphemerisHeader {..}
instance Arbitrary GpsEphemeris where
arbitrary = do
_gpsEphemeris_wn <- arbitraryWord 10
_gpsEphemeris_svAccuracy <- arbitraryWord 4
_gpsEphemeris_codeOnL2 <- arbitraryWord 2
_gpsEphemeris_idot <- arbitraryInt 14
_gpsEphemeris_iode <- arbitraryWord 8
_gpsEphemeris_toc <- arbitraryWord 16
_gpsEphemeris_af2 <- arbitraryInt 8
_gpsEphemeris_af1 <- arbitraryInt 16
_gpsEphemeris_af0 <- arbitraryInt 22
_gpsEphemeris_iodc <- arbitraryWord 10
_gpsEphemeris_c_rs <- arbitraryInt 16
_gpsEphemeris_dn <- arbitraryInt 16
_gpsEphemeris_m0 <- arbitraryInt 32
_gpsEphemeris_c_uc <- arbitraryInt 16
_gpsEphemeris_ecc <- arbitraryWord 32
_gpsEphemeris_c_us <- arbitraryInt 16
_gpsEphemeris_sqrta <- arbitraryWord 32
_gpsEphemeris_toe <- arbitraryWord 16
_gpsEphemeris_c_ic <- arbitraryInt 16
_gpsEphemeris_omega0 <- arbitraryInt 32
_gpsEphemeris_c_is <- arbitraryInt 16
_gpsEphemeris_i0 <- arbitraryInt 32
_gpsEphemeris_c_rc <- arbitraryInt 16
_gpsEphemeris_w <- arbitraryInt 32
_gpsEphemeris_omegadot <- arbitraryInt 24
_gpsEphemeris_tgd <- arbitraryInt 8
_gpsEphemeris_svHealth <- arbitraryWord 6
_gpsEphemeris_l2pFlag <- arbitrary
_gpsEphemeris_fitInterval <- arbitrary
pure GpsEphemeris {..}
instance Arbitrary Msg1019 where
arbitrary = do
_msg1019_header <- arbitrary
_msg1019_ephemeris <- arbitrary
pure Msg1019 {..}
instance Arbitrary GlonassEphemerisHeader where
arbitrary = do
_glonassEphemerisHeader_num <- arbitraryWord 12
_glonassEphemerisHeader_sat <- arbitraryWord 6
_glonassEphemerisHeader_channel <- arbitraryWord 5
pure GlonassEphemerisHeader{..}
instance Arbitrary GlonassEphemeris where
arbitrary = do
_glonassEphemeris_almanacHealth <- arbitrary
_glonassEphemeris_healthAvailability <- arbitrary
_glonassEphemeris_p1 <- arbitraryWord 2
_glonassEphemeris_tk <- arbitraryWord 12
_glonassEphemeris_bn_msb <- arbitrary
_glonassEphemeris_p2 <- arbitrary
_glonassEphemeris_tb <- arbitraryWord 7
_glonassEphemeris_xndot <- arbitraryInt 24
_glonassEphemeris_xn <- arbitraryInt 27
_glonassEphemeris_xndotdot <- arbitraryInt 5
_glonassEphemeris_yndot <- arbitraryInt 24
_glonassEphemeris_yn <- arbitraryInt 27
_glonassEphemeris_yndotdot <- arbitraryInt 5
_glonassEphemeris_zndot <- arbitraryInt 24
_glonassEphemeris_zn <- arbitraryInt 27
_glonassEphemeris_zndotdot <- arbitraryInt 5
_glonassEphemeris_p3 <- arbitrary
_glonassEphemeris_gammaN <- arbitraryInt 11
_glonassEphemeris_mp <- arbitraryWord 2
_glonassEphemeris_mi3 <- arbitrary
_glonassEphemeris_tauN <- arbitraryInt 22
_glonassEphemeris_mdeltatau <- arbitraryInt 5
_glonassEphemeris_en <- arbitraryWord 5
_glonassEphemeris_mp4 <- arbitrary
_glonassEphemeris_mft <- arbitraryWord 4
_glonassEphemeris_mnt <- arbitraryWord 11
_glonassEphemeris_mM <- arbitraryWord 2
_glonassEphemeris_additional <- arbitrary
_glonassEphemeris_nA <- arbitraryWord 11
_glonassEphemeris_tauC <- arbitraryInt 32
_glonassEphemeris_mn4 <- arbitraryWord 5
_glonassEphemeris_mTauGps <- arbitraryInt 22
_glonassEphemeris_mln5 <- arbitrary
_glonassEphemeris_reserved <- arbitraryWord 7
pure GlonassEphemeris{..}
instance Arbitrary Msg1020 where
arbitrary = do
_msg1020_header <- arbitrary
_msg1020_ephemeris <- arbitrary
pure Msg1020 {..}
instance Arbitrary GalEphemerisHeader where
arbitrary = do
_galEphemerisHeader_num <- arbitraryWord 12
_galEphemerisHeader_sat <- arbitraryWord 6
pure GalEphemerisHeader {..}
instance Arbitrary GalEphemerisFnav where
arbitrary = do
_galEphemerisFnav_wn <- arbitraryWord 12
_galEphemerisFnav_iodnav <- arbitraryWord 10
_galEphemerisFnav_sisa <- arbitraryWord 8
_galEphemerisFnav_idot <- arbitraryInt 14
_galEphemerisFnav_toc <- arbitraryWord 14
_galEphemerisFnav_af2 <- arbitraryInt 6
_galEphemerisFnav_af1 <- arbitraryInt 21
_galEphemerisFnav_af0 <- arbitraryInt 31
_galEphemerisFnav_c_rs <- arbitraryInt 16
_galEphemerisFnav_dn <- arbitraryInt 16
_galEphemerisFnav_m0 <- arbitraryInt 32
_galEphemerisFnav_c_uc <- arbitraryInt 16
_galEphemerisFnav_ecc <- arbitraryWord 32
_galEphemerisFnav_c_us <- arbitraryInt 16
_galEphemerisFnav_sqrta <- arbitraryWord 32
_galEphemerisFnav_toe <- arbitraryWord 14
_galEphemerisFnav_c_ic <- arbitraryInt 16
_galEphemerisFnav_omega0 <- arbitraryInt 32
_galEphemerisFnav_c_is <- arbitraryInt 16
_galEphemerisFnav_i0 <- arbitraryInt 32
_galEphemerisFnav_c_rc <- arbitraryInt 16
_galEphemerisFnav_w <- arbitraryInt 32
_galEphemerisFnav_omegadot <- arbitraryInt 24
_galEphemerisFnav_bgdE5a <- arbitraryInt 10
_galEphemerisFnav_nav_health <- arbitraryWord 2
_galEphemerisFnav_validity <- arbitraryWord 1
_galEphemerisFnav_reserved <- arbitraryWord 7
pure GalEphemerisFnav {..}
instance Arbitrary GalEphemerisInav where
arbitrary = do
_galEphemerisInav_wn <- arbitraryWord 12
_galEphemerisInav_iodnav <- arbitraryWord 10
_galEphemerisInav_sisa <- arbitraryWord 8
_galEphemerisInav_idot <- arbitraryInt 14
_galEphemerisInav_toc <- arbitraryWord 14
_galEphemerisInav_af2 <- arbitraryInt 6
_galEphemerisInav_af1 <- arbitraryInt 21
_galEphemerisInav_af0 <- arbitraryInt 31
_galEphemerisInav_c_rs <- arbitraryInt 16
_galEphemerisInav_dn <- arbitraryInt 16
_galEphemerisInav_m0 <- arbitraryInt 32
_galEphemerisInav_c_uc <- arbitraryInt 16
_galEphemerisInav_ecc <- arbitraryWord 32
_galEphemerisInav_c_us <- arbitraryInt 16
_galEphemerisInav_sqrta <- arbitraryWord 32
_galEphemerisInav_toe <- arbitraryWord 14
_galEphemerisInav_c_ic <- arbitraryInt 16
_galEphemerisInav_omega0 <- arbitraryInt 32
_galEphemerisInav_c_is <- arbitraryInt 16
_galEphemerisInav_i0 <- arbitraryInt 32
_galEphemerisInav_c_rc <- arbitraryInt 16
_galEphemerisInav_w <- arbitraryInt 32
_galEphemerisInav_omegadot <- arbitraryInt 24
_galEphemerisInav_bgdE5a <- arbitraryInt 10
_galEphemerisInav_bgdE5b <- arbitraryInt 10
_galEphemerisInav_E5b_health <- arbitraryWord 2
_galEphemerisInav_E5b_validity <- arbitraryWord 1
_galEphemerisInav_E1b_health <- arbitraryWord 2
_galEphemerisInav_E1b_validity <- arbitraryWord 1
_galEphemerisInav_reserved <- arbitraryWord 2
pure GalEphemerisInav {..}
instance Arbitrary Msg1045 where
arbitrary = do
_msg1045_header <- arbitrary
_msg1045_ephemeris <- arbitrary
pure Msg1045 {..}
instance Arbitrary Msg1046 where
arbitrary = do
_msg1046_header <- arbitrary
_msg1046_ephemeris <- arbitrary
pure Msg1046 {..}
testMsg1019 :: TestTree
testMsg1019 =
testProperty "Roundtrip Msg1019" $ \m ->
decode (encode m) == (m :: Msg1019)
testMsg1020 :: TestTree
testMsg1020 =
testProperty "Roundtrip Msg1020" $ \m ->
decode (encode m) == (m :: Msg1020)
testMsg1045 :: TestTree
testMsg1045 =
testProperty "Roundtrip Msg1045" $ \m ->
decode (encode m) == (m :: Msg1045)
testMsg1046 :: TestTree
testMsg1046 =
testProperty "Roundtrip Msg1046" $ \m ->
decode (encode m) == (m :: Msg1046)
tests :: TestTree
tests =
testGroup "Ephemeris tests"
[ testMsg1019
, testMsg1020
, testMsg1045
, testMsg1046
]