0 | module Test.Chem.Generators
3 | import public Hedgehog
11 | atomicNr : Gen AtomicNr
12 | atomicNr = fromMaybe 1 . refineAtomicNr <$> bits8 (linear 1 118)
16 | massNr = fromMaybe 1 . refineMassNr <$> bits16 (linear 1 511)
19 | abundance : Gen Abundance
21 | fromMaybe 1.0 . refineAbundance <$> double (linear MinAbundanceValue 1.0)
24 | molecularMass : Gen MolecularMass
26 | fromMaybe 1.0 . refineMolecularMass <$> double (linear 0 MaxMolecularMass)
29 | molarMass : Gen MolarMass
31 | fromMaybe 1.0 . refineMolarMass <$> double (linear 0 MaxMolecularMass)
35 | charge = fromMaybe 0 . refineCharge <$> int8 (linearFrom 0 (-
15) 15)
38 | radical : Gen Radical
39 | radical = element [NoRadical, Singlet, Doublet, Triplet]
43 | elem = fromAtomicNr <$> atomicNr
46 | aromElem : Gen AromElem
49 | [ (\e => MkAE e False) <$> elem
63 | formula : Gen Formula
65 | foldMap (uncurry singleton) <$>
66 | list (linear 0 20) [| MkPair elem (nat $
linear 0 20) |]
69 | isotope : Gen Isotope
70 | isotope = [| MkI elem (maybe massNr) |]
73 | aromIsotope : Gen AromIsotope
74 | aromIsotope = [| mkAI aromElem (maybe massNr) |]
76 | mkAI : AromElem -> Maybe MassNr -> AromIsotope
77 | mkAI (MkAE e a) m = MkAI e m a
80 | bondOrder : Gen BondOrder
81 | bondOrder = element [Single,Dbl,Triple]