module SymmetryOperationsSymbolsSpec where import Test.Hspec import Text.ParserCombinators.Parsec import Data.Matrix.SymmetryOperationsSymbols import Data.Matrix.SymmetryOperationsSymbols.Parser import Data.Matrix.SymmetryOperationsSymbols.Symbol import Data.Matrix import Data.Matrix.AsXYZ import TestDataOthers import TestDataHex parseSymmetryOperation :: String -> Either String (Symbol,String,String,String) parseSymmetryOperation st = case parse (symmetryElement return) st st of Right a -> Right a Left m -> Left "Parse Error." toMatrix' st = case toMatrix st of Left _ -> Nothing Right a -> Just a toMatrixHex' st = case toMatrixHex st of Left _ -> Nothing Right a -> Just a spec :: Spec spec = do describe "Data.Matrix.SymmetryOperationsSymbols.toMatrix" $ do mapM_ (toMatrixTest toMatrix') $ zip [0..] testDataOthers describe "Data.Matrix.SymmetryOperationsSymbols.toMatrixHex" $ do mapM_ (toMatrixTest toMatrixHex') $ zip [0..] testDataHex describe "Data.Matrix.SymmetryOperationsSymbols.fromMatrix" $ do mapM_ (fromMatrixTest) $ zip [0..] testDataOthers describe "Data.Matrix.SymmetryOperationsSymbols.fromMatrix" $ do mapM_ (fromMatrixTest) $ zip [0..] testDataHex mat34 = submatrix 1 3 1 4 toMatrixTest f (n,(a,b)) = it (show n ++ " : '" ++ b ++ "' -> '" ++ a ++ "'") $ do -- (prettyXYZ <$> f b) `shouldBe` (Just . prettyXYZ . fromXYZ $ a) (mat34 <$> f b) `shouldBe` (Just . mat34 . fromXYZ $ a) fromMatrixTest (n,(a,b)) = it (show n ++ " : '" ++ a ++ "' -> '" ++ b ++ "'") $ do (parseSymmetryOperation =<< (fromMatrix' . fromXYZ $ a)) `shouldBe` (parseSymmetryOperation b)