dumb-cas-0.1.0.0: test/tasty/test.hs
-- |
-- Module : Main
-- Copyright : (c) Justus SagemΓΌller 2017
-- License : GPL v3
--
-- Maintainer : (@) sagemueller $ geo.uni-koeln.de
-- Stability : experimental
-- Portability : portable
--
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE CPP #-}
module Main where
import CAS.Dumb
import Test.Tasty
import Test.Tasty.HUnit
main = defaultMain tests
type Expr = Expression String
tests :: TestTree
tests = testGroup "Tests"
[ testGroup "Explicit transformations"
[ testCase "π + π * π &~: γ+γ :=: γ+γ" $
(π + π * π &~: γ+γ :=: γ+γ) @?= (π * π + π :: Expr)
, testCase "(π+π) * π &~: γ+γ :=: γ+γ" $
((π+π) * π &~: γ+γ :=: γ+γ) @?= ((π+π) * π :: Expr)
, testCase "π*π - π*π &~: γ*γ :=: γ*γ" $
(π*π - π*π &~: γ*γ :=: γ*γ) @?= (π*π - π*π :: Expr)
, testCase "π*π - π*π &~? γ*γ :=: γ*γ" $
(π*π - π*π &~? γ*γ :=: γ*γ) @?= [π*π - π*π, π*π - π*π :: Expr]
, testCase "π + π + π + π &~: γ+γ :=: γ+γ" $
(π + π + π + π &~: γ+γ :=: γ+γ) @?= (π + π + π + π :: Expr)
, testCase "π + π + π + π &~: π+π :=: π+π" $
(π + π + π + π &~: π+π :=: π+π) @?= (π + π + π + π :: Expr)
, testCase "π + π + π + π &~? γ+γ :=: γ+γ" $
(π + π + π + π &~? γ+γ :=: γ+γ) @?= [ π + π + π + π
, π + π + π + π
, π + π + π + π :: Expr]
, testCase "π + π + π &~? π+π :=: ΞΎ" $
(π + π + π &~? π+π :=: ΞΎ ) @?= [ ΞΎ + π :: Expr]
, testCase "π + π + π &~? π+π :=: π+π &~? π+π :=: ΞΎ" $
((π + π + π &~? π+π:=:π+π) >>= (&~? π+π:=:ΞΎ) )
@?= [ ΞΎ+π :: Expr]
, testCase "π*π₯ + π*π₯ + π &~: γ*γ+γ*γ :=: (γ+γ)*γ" $
(π*π₯ + π*π₯ + π &~: γ*γ+γ*γ :=: (γ+γ)*γ) @?= ((π+π)*π₯ + π :: Expr)
, testCase "(π+π)*π₯ + π &~: (γ+γ)*γ :=: γ*γ+γ*γ" $
((π+π)*π₯ + π &~: (γ+γ)*γ :=: γ*γ+γ*γ) @?= (π*π₯ + π*π₯ + π :: Expr)
, testCase "Rename local symbols" $
(map succ%$> π+π) * π₯ @?= ((π+π) * π₯ :: Expr)
]
, testGroup "Show instance"
[ testCase "π+π+π" $
show (π+π+π :: Expr) @?= "π+π+π"
, testCase "π+(π+π)" $
show (π+(π+π) :: Expr) @?= "π+(π+π)"
, testCase "π+π*π" $
show (π+π*π :: Expr) @?= "π+π*π"
, testCase "(π+π)*π" $
show ((π+π)*π :: Expr) @?= "(π+π)*π"
, testCase "abs (π+π)" $
show (abs (π+π) :: Expr) @?= "abs (π+π)"
, testCase "abs 3" $
show (abs 3 :: Expr) @?= "abs 3"
, testCase "π + -3" $
show (π+(-3) :: Expr) @?= "π+( -3)"
, testCase "π / signum Ο" $
show (π/signum Ο :: Expr) @?= "π/signum Ο"
, testCase "logBase 2 32 ** atan pi" $
show (logBase 2 32 ** atan pi :: Expr) @?= "2`logBase`32**atan pi"
, testCase "37.84" $
show (37.84 :: Expr) @?= "37.84"
, testCase "5e-23" $
show (5e-23 :: Expr) @?= "5e-23"
, testCase "-5.3e7" $
show (-5.3e8 :: Expr) @?= " -5.3e8"
]
]