packages feed

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

module Data.Units.NonSI.LengthSpec where

import Test.Hspec

import Data.Units.NonSI.Length
import Data.Units.SI

import Data.Units.Core.ConvertProp

spec :: Spec
spec = do
  describe "Length" $ do
    toFromSpec @Foot    @Double
    fromToAssert @Double (Meter 1) (Foot $ 1 / (1200 / 3937))
    fromToAssert @Double (Foot 1) (Meter $ 1200 / 3937)

    toFromSpec @Twip    @Double
    fromToAssert @Double (Meter 1) (Twip $ 1 / (1200 / 3937 / 17280))
    fromToAssert @Double (Twip 1) (Meter $ 1200 / 3937 / 17280)

    toFromSpec @Thou    @Double
    fromToAssert @Double (Meter 1) (Thou $ 1 / (1200 / 3937 / 12000))
    fromToAssert @Double (Thou 1) (Meter $ 1200 / 3937 / 12000)

    toFromSpec @Barleycorn    @Double
    fromToAssert @Double (Meter 1) (Barleycorn $ 1 / (1200 / 3937 / 36))
    fromToAssert @Double (Barleycorn 1) (Meter $ 1200 / 3937 / 36)

    toFromSpec @Inch    @Double
    fromToAssert @Double (Meter 1) (Inch $ 1 / (1200 / 3937 / 12))
    fromToAssert @Double (Inch 1) (Meter $ 1200 / 3937 / 12)

    toFromSpec @Hand    @Double
    fromToAssert @Double (Meter 1) (Hand $ 1 / (1200 / 3937 / 3))
    fromToAssert @Double (Hand 1) (Meter $ 1200 / 3937 / 3)

    toFromSpec @Yard    @Double
    fromToAssert @Double (Meter 1) (Yard $ 1 / (1200 / 3937 * 3))
    fromToAssert @Double (Yard 1) (Meter $ 1200 / 3937 * 3)

    toFromSpec @Chain    @Double
    fromToAssert @Double (Meter 1) (Chain $ 1 / (1200 / 3937 * 66))
    fromToAssert @Double (Chain 1) (Meter $ 1200 / 3937 * 66)

    toFromSpec @Furlong    @Double
    fromToAssert @Double (Meter 1) (Furlong $ 1 / (1200 / 3937 * 660))
    fromToAssert @Double (Furlong 1) (Meter $ 1200 / 3937 * 660)

    toFromSpec @Mile    @Double
    fromToAssert @Double (Meter 1) (Mile $ 1 / (1200 / 3937 * 5280))
    fromToAssert @Double (Mile 1) (Meter $ 1200 / 3937 * 5280)

    toFromSpec @League    @Double
    fromToAssert @Double (Meter 1) (League $ 1 / (1200 / 3937 * 15840))
    fromToAssert @Double (League 1) (Meter $ 1200 / 3937 * 15840)

    toFromSpec @Fathom    @Double
    fromToAssert @Double (Meter 1) (Fathom $ 1 / (1200 / 3937 * 6.0761))
    fromToAssert @Double (Fathom 1) (Meter $ 1200 / 3937 * 6.0761)

    toFromSpec @Cable    @Double
    fromToAssert @Double (Meter 1) (Cable $ 1 / (1200 / 3937 * 607.61))
    fromToAssert @Double (Cable 1) (Meter $ 1200 / 3937 * 607.61)

    toFromSpec @NauticalMile    @Double
    fromToAssert @Double (Meter 1) (NauticalMile $ 1 / (1200 / 3937 * 60761 / 10))
    fromToAssert @Double (NauticalMile 1) (Meter $ 1200 / 3937 * 60761 / 10)

    toFromSpec @Link    @Double
    fromToAssert @Double (Meter 1) (Link $ 1 / (1200 / 3937 * 66 / 100))
    fromToAssert @Double (Link 1) (Meter $ 1200 / 3937 * 66 / 100)

    toFromSpec @Rod    @Double
    fromToAssert @Double (Meter 1) (Rod $ 1 / (1200 / 3937 * 66 / 4))
    fromToAssert @Double (Rod 1) (Meter $ 1200 / 3937 * 66 / 4)

    toFromSpec @Thou    @Double
    fromToAssert @Double (Meter 1) (Thou $ 1 / (1200 / 3937 / 12000))
    fromToAssert @Double (Thou 1) (Meter $ 1200 / 3937 / 12000)

    toFromSpec @Barleycorn    @Double
    fromToAssert @Double (Meter 1) (Barleycorn $ 1 / (1200 / 3937 / 36))
    fromToAssert @Double (Barleycorn 1) (Meter $ 1200 / 3937 / 36)

    toFromSpec @Inch    @Double
    fromToAssert @Double (Meter 1) (Inch $ 1 / (1200 / 3937 / 12))
    fromToAssert @Double (Inch 1) (Meter $ 1200 / 3937 / 12)

    toFromSpec @Hand    @Double
    fromToAssert @Double (Meter 1) (Hand $ 1 / (1200 / 3937 / 3))
    fromToAssert @Double (Hand 1) (Meter $ 1200 / 3937 / 3)

    toFromSpec @Yard    @Double
    fromToAssert @Double (Meter 1) (Yard $ 1 / (1200 / 3937 * 3))
    fromToAssert @Double (Yard 1) (Meter $ 1200 / 3937 * 3)

    toFromSpec @Chain    @Double
    fromToAssert @Double (Meter 1) (Chain $ 1 / (1200 / 3937 * 66))
    fromToAssert @Double (Chain 1) (Meter $ 1200 / 3937 * 66)

    toFromSpec @Furlong    @Double
    fromToAssert @Double (Meter 1) (Furlong $ 1 / (1200 / 3937 * 660))
    fromToAssert @Double (Furlong 1) (Meter $ 1200 / 3937 * 660)

    toFromSpec @Mile    @Double
    fromToAssert @Double (Meter 1) (Mile $ 1 / (1200 / 3937 * 5280))
    fromToAssert @Double (Mile 1) (Meter $ 1200 / 3937 * 5280)

    toFromSpec @League    @Double
    fromToAssert @Double (Meter 1) (League $ 1 / (1200 / 3937 * 15840))
    fromToAssert @Double (League 1) (Meter $ 1200 / 3937 * 15840)

    toFromSpec @Fathom    @Double
    fromToAssert @Double (Meter 1) (Fathom $ 1 / (1200 / 3937 * 6.0761))
    fromToAssert @Double (Fathom 1) (Meter $ 1200 / 3937 * 6.0761)

    toFromSpec @Cable    @Double
    fromToAssert @Double (Meter 1) (Cable $ 1 / (1200 / 3937 * 607.61))
    fromToAssert @Double (Cable 1) (Meter $ 1200 / 3937 * 607.61)

    toFromSpec @NauticalMile    @Double
    fromToAssert @Double (Meter 1) (NauticalMile $ 1 / (1200 / 3937 * 60761 / 10))
    fromToAssert @Double (NauticalMile 1) (Meter $ 1200 / 3937 * 60761 / 10)

    toFromSpec @Link    @Double
    fromToAssert @Double (Meter 1) (Link $ 1 / (1200 / 3937 * 66 / 100))
    fromToAssert @Double (Link 1) (Meter $ 1200 / 3937 * 66 / 100)

    toFromSpec @Rod    @Double
    fromToAssert @Double (Meter 1) (Rod $ 1 / (1200 / 3937 * 66 / 4))
    fromToAssert @Double (Rod 1) (Meter $ 1200 / 3937 * 66 / 4)