packages feed

unwitch-1.0.0: test/Test/Convert/ComplexSpec.hs

module Test.Convert.ComplexSpec (spec) where

import Test.Hspec
import Data.Complex (Complex((:+)))
import qualified Unwitch.Convert.Complex as Complex

spec :: Spec
spec = describe "Unwitch.Convert.Complex" $ do

  describe "fromReal" $ do
    it "wraps with zero imaginary part" $
      Complex.fromReal (3.0 :: Double) `shouldBe` (3.0 :+ 0.0)
    it "wraps zero" $
      Complex.fromReal (0 :: Int) `shouldBe` (0 :+ 0)

  describe "toReal" $ do
    it "succeeds when imaginary is 0" $
      Complex.toReal (5.0 :+ 0.0 :: Complex Double) `shouldBe` Just 5.0
    it "fails when imaginary is nonzero" $
      Complex.toReal (5.0 :+ 1.0 :: Complex Double) `shouldBe` Nothing

  describe "round-trip" $
    it "toReal . fromReal == Just" $
      Complex.toReal (Complex.fromReal (42.0 :: Double)) `shouldBe` Just 42.0