Add first unit tests

This commit is contained in:
Dimitri Lozeve 2017-11-11 14:40:39 +00:00
parent c3e61f6448
commit 323b75630d
3 changed files with 41 additions and 3 deletions

View file

@ -34,9 +34,13 @@ executable orbit-exe
test-suite orbit-test
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
main-is: Tests.hs
build-depends: base
, orbit
, linear
, tasty
, tasty-hunit
, tasty-quickcheck
ghc-options: -threaded -rtsopts -with-rtsopts=-N
default-language: Haskell2010

View file

@ -1,2 +0,0 @@
main :: IO ()
main = putStrLn "Test suite not yet implemented"

36
test/Tests.hs Normal file
View file

@ -0,0 +1,36 @@
module Main where
import Test.Tasty
import Test.Tasty.QuickCheck as QC
import Test.Tasty.HUnit
import Linear.Vector
import Linear.V3
import Linear.Affine
import Linear.Metric
import Lib
main :: IO ()
main = do
defaultMain (testGroup "Orbit tests" [unitTests, propertyChecks])
unitTests :: TestTree
unitTests = testGroup "Unit tests"
[ testCase "bodyDistance sun earth"
$ bodyDistance sun earth @?= astronomicalUnit
, testCase "bodyDistance earth moon"
$ bodyDistance earth moon @?= 384399e3
, testCase "selectOctant sun earth"
$ selectOctant (_bodyPosition sun) earth @?= SED
, testCase "subOctree for an Empty Region"
$ let r = Region (P $ V3 0 0 0) (P $ V3 0 0 0) 1 4
r' = Region (P $ V3 1 1 1) (P $ V3 0 0 0) 1 2
in
subOctree r NEU @?= Empty r'
]
propertyChecks :: TestTree
propertyChecks = testGroup "Property tests (QuickCheck)"
[
]