packages feed

isotope-0.1.0.0: test/Isotope/ParsersSpec.hs

{-# LANGUAGE QuasiQuotes #-}
module Isotope.ParsersSpec (spec) where

import Isotope
import Test.Hspec
import Test.QuickCheck
import Data.Map (fromList)

spec :: Spec
spec = do
    describe "mol" $
      it "QuasiQuoter for molecular formulae should produce the correct value" $
        [mol|C6H6|] `shouldBe` MolecularFormula {getMolecularFormula = fromList [(H,6),(C,6)]}
    describe "emp" $
      it "QuasiQuoter for empirical formulae should produce the correct value" $
        [emp|CH|] `shouldBe` EmpiricalFormula {getEmpiricalFormula = fromList [(H,1),(C,1)]}
    describe "con" $
      it "QuasiQuoter for condensed formulae should produce the correct value" $
        [con|CH3(CH3)2CH3|] `shouldBe` CondensedFormula {getCondensedFormula = [Left (MolecularFormula {getMolecularFormula = fromList [(C,1)]}),Left (MolecularFormula {getMolecularFormula = fromList [(H,3)]}),Right ([MolecularFormula {getMolecularFormula = fromList [(C,1)]},MolecularFormula {getMolecularFormula = fromList [(H,3)]}],2),Left (MolecularFormula {getMolecularFormula = fromList [(C,1)]}),Left (MolecularFormula {getMolecularFormula = fromList [(H,3)]})]}