packages feed

astro-0.4.1.2: test/Data/Astro/Planet/PlanetMechanicsTest.hs

module Data.Astro.Planet.PlanetMechanicsTest
(
  tests
)

where


import Test.Framework (testGroup)
import Test.Framework.Providers.HUnit
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Test.HUnit
import Test.HUnit.Approx
import Test.QuickCheck


import Data.Astro.TypesTest (testDecimalDegrees)
import Data.Astro.CoordinateTest (testEC1)

import Data.Astro.Types (DecimalDegrees(..), DecimalHours(..), fromDMS)
import Data.Astro.Time.JulianDate (JulianDate(..))
import Data.Astro.Time.Epoch (j2010)
import Data.Astro.Coordinate (EquatorialCoordinates1(..))
import Data.Astro.Planet.PlanetDetails (Planet(..), j2010PlanetDetails)
import Data.Astro.Planet.PlanetMechanics

nov222003 = JD 2452965.5
jupiterDetails = j2010PlanetDetails Jupiter
earthDetails = j2010PlanetDetails Earth
mercuryDetails = j2010PlanetDetails Mercury
sunPositionOnNov222003 = EC1 {e1Declination = DD (-19.99330355916915), e1RightAscension = DH 15.803416251173122}

tests = [testGroup "mechanics" [
            testDecimalDegrees "jupiter mean anomaly"
                0.0000001
                137.8097641
                (planetMeanAnomaly jupiterDetails nov222003)
            , testDecimalDegrees "jupiter true anomaly"
                0.0000001
                141.5736000
                (planetTrueAnomaly1 jupiterDetails nov222003)
            , testDecimalDegrees "planetHeliocentricLongitude"
                0.0000001
                114.6633
                (planetHeliocentricLongitude jupiterDetails 100)
            , testDecimalDegrees "planetHeliocentricLatitude"
                0.0000001
                1.1220101
                (planetHeliocentricLatitude jupiterDetails 160)
            , testCase "planetHeliocentricRadiusVector" $ assertApproxEqual ""
                0.0000001
                5.4403612
                (planetHeliocentricRadiusVector jupiterDetails 160)
            , testDecimalDegrees "planetProjectedLongitude"
                0.0000001
                159.9935029
                (planetProjectedLongitude jupiterDetails 160)
            , testCase "planetProjectedRadiusVector" $ assertApproxEqual ""
                0.0000001
                5.4387668
                (planetProjectedRadiusVector jupiterDetails 1.22 5.44)
            , testDecimalDegrees "planetEclipticLongitude: Jupiter"
                0.0000001
                169.793671
                (planetEclipticLongitude jupiterDetails 160 5.43 59 0.988)
            , testDecimalDegrees "planetEclipticLongitude: Mercury"
                0.000001
                253.929762
                (planetEclipticLongitude mercuryDetails 287.824406 0.448159 59.274748 0.987847)
            , testDecimalDegrees "planetEclipticLatitude: Jupiter"
                0.0000001
                1.1861236
                (planetEclipticLatitude 1.22 160 5.43 59 0.988 170)
            , testDecimalDegrees "planetEclipticLatitude: Mercury"
                0.000001
                (-2.044058)
                (planetEclipticLatitude (-6.035842) 287.824406 0.448159 59.274748 0.987847 253.929762)
            , testEC1 "planetPosition1: Jupiter"
                0.0000001
                (EC1 (DD 6.3569686) (DH 11.1871664))
                (planetPosition1 jupiterDetails earthDetails nov222003)
            , testEC1 "planetPosition1: Mercury"
                0.0000001
                (EC1 (DD (-24.5023748)) (DH 16.8200600))
                (planetPosition1 mercuryDetails earthDetails nov222003)
            , testEC1 "planetPosition"
                0.0000001
                (planetPosition1 jupiterDetails earthDetails nov222003)
                (planetPosition planetTrueAnomaly1 jupiterDetails earthDetails nov222003)
             , testDecimalDegrees "pertubations: Jupiter"
                0.0000001
                0.0371214
                (planetPertubations Jupiter nov222003)
             , testDecimalDegrees "pertubations: Saturn"
                0.0000001
                0.1317895  -- not sure if this is the right result
                (planetPertubations Saturn nov222003)
             , testDecimalDegrees "pertubations: Mars"
                0.0000001
                0
                (planetPertubations Mars nov222003)
             , testCase "planetDistance1" $ assertApproxEqual ""
                0.0000001
                5.6033062
                (planetDistance1 jupiterDetails earthDetails nov222003)
             , testDecimalDegrees "planetAngularDiameter"
                0.0000001
                (fromDMS 0 0 35.1114)
                (planetAngularDiameter jupiterDetails 5.6033062)
            ]
         , testGroup "planetPhase" [
             testCase "Jupiter" $ assertApproxEqual ""
                0.0000001
                0.9922919
                (planetPhase1 jupiterDetails earthDetails nov222003)
             , testCase "Mercury" $ assertApproxEqual ""
                0.0000001
                0.9141158
                (planetPhase1 mercuryDetails earthDetails nov222003)
             ]
         , testGroup "planetBrightLimbPositionAngle" [
             testDecimalDegrees "Jupiter"
                0.0000001
                113.2029600
                (planetBrightLimbPositionAngle (EC1 (DD 6.3569686) (DH 11.1871664)) sunPositionOnNov222003)
             , testDecimalDegrees "Mercury"
                0.0000001
                284.7106531
                (planetBrightLimbPositionAngle (EC1 (-24.502375) 16.820060) sunPositionOnNov222003)
             ]
        ]