packages feed

convert-units-0.1: test/Data/Units/NonSI/AreaSpec.hs

module Data.Units.NonSI.AreaSpec where

import Test.Hspec

import Data.Units.Core.ConvertProp
import Data.Units.Core.System
import Data.Units.Imperial.Area
import Data.Units.SI

type SquareMeter = (Meter .^+ 2) Double

spec :: Spec
spec = do
  describe "Area" $ do
    toFromSpec @Acre    @Double
    fromToAssert @Double (1 :: SquareMeter) (Acre $ 1 / ((1200 / 3937)^2 * 43560))
    fromToAssert @Double (Acre 1) ((1200 / 3937)^2 * 43560 :: SquareMeter)

    toFromSpec @Perch    @Double
    fromToAssert @Double (1 :: SquareMeter) (Perch $ 1 / ((1200 / 3937)^2 * 1089 / 4))
    fromToAssert @Double (Perch 1) ((1200 / 3937)^2 * 1089 / 4 :: SquareMeter)

    toFromSpec @Rood    @Double
    fromToAssert @Double (1 :: SquareMeter) (Rood $ 1 / ((1200 / 3937)^2 * 10890))
    fromToAssert @Double (Rood 1) ((1200 / 3937)^2 * 10890 :: SquareMeter)