isotope-0.3.3.0: test/Isotope/ParsersSpec.hs
{-# LANGUAGE QuasiQuotes #-}
module Isotope.ParsersSpec (spec) where
import Isotope
import Isotope.Parsers
import Test.Hspec
import Test.QuickCheck
import Data.Map (fromList)
import Text.Megaparsec
spec :: Spec
spec = do
describe "elementSymbol" .
it "Na" $
parse (elementSymbol <* eof) "" "Na" `shouldBe` Right Na
describe "subFormula" .
it "C2" $
parse (subFormula <* eof) "" "C2" `shouldBe` Right (C, 2)
describe "molecularFormula" .
it "CH2O" $
parse (molecularFormula <* eof) "" "CH2O" `shouldBe` Right (MolecularFormula (fromList [(C, 1), (H, 2), (O, 1)]))
describe "condensedFormula" .
it "N(CH3)3" $
parse (condensedFormula <* eof) "" "N(CH3)3" `shouldBe` Right (CondensedFormula {getCondensedFormula = [Left (MolecularFormula {getMolecularFormula = fromList [(N,1)]}),Right (CondensedFormula {getCondensedFormula = [Left (MolecularFormula {getMolecularFormula = fromList [(C,1)]}),Left (MolecularFormula {getMolecularFormula = fromList [(H,3)]})]},3)]})
describe "mol" .
it "QuasiQuoter for MolecularFormula should produce correct value" $
[mol|C6H6|] `shouldBe`
MolecularFormula {getMolecularFormula = fromList [(H,6),(C,6)]}
describe "emp" .
it "QuasiQuoter for EmpiricalFormula should produce correct value" $
[emp|CH|] `shouldBe`
EmpiricalFormula {getEmpiricalFormula = fromList [(H,1),(C,1)]}
describe "ele" .
it "QuasiQuoter for ElementalComposition should produce correct value" $
[ele|C6H6|] `shouldBe`
ElementalComposition {getElementalComposition = fromList [(H,6),(C,6)]}
describe "con" .
it "QuasiQuoter for CondensedFormula 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 (CondensedFormula {getCondensedFormula = [Left (MolecularFormula {getMolecularFormula = fromList [(C,1)]}),Left (MolecularFormula {getMolecularFormula = fromList [(H,3)]})]},2),Left (MolecularFormula {getMolecularFormula = fromList [(C,1)]}),Left (MolecularFormula {getMolecularFormula = fromList [(H,3)]})]}