-- | Tests for the non-equivarant CSM classes
{-# LANGUAGE Rank2Types, GADTs, TypeFamilies #-}
module Tests.CSM.Projective where
--------------------------------------------------------------------------------
import Data.Proxy
import Math.Combinat.Classes
import Math.Combinat.Partitions.Integer
import Math.Combinat.Partitions.Set
import qualified Math.RootLoci.Algebra.FreeMod as ZMod
import Math.RootLoci.Algebra
import Math.RootLoci.Geometry
import Math.RootLoci.Misc
import qualified Math.RootLoci.CSM.Equivariant.Ordered as Ordered
import qualified Math.RootLoci.CSM.Equivariant.Direct as Direct
import Math.RootLoci.Classic
import qualified Math.RootLoci.CSM.Aluffi as Aluffi
import qualified Math.RootLoci.CSM.Projective as Proj
import Tests.Common
import Test.Tasty
import Test.Tasty.HUnit
--------------------------------------------------------------------------------
all_tests = testGroup "non-equivariant CSM classes"
[ testGroup "unordered"
[ testCase "aluffi == recursive (open)" (forAllPart 10 "failed" prop_aluffi_vs_recursive_open )
, testCase "aluffi == recursive (closed)" (forAllPart 10 "failed" prop_aluffi_vs_recursive_closed )
, testCase "aluffi == from equiv (open)" (forAllPart 10 "failed" prop_aluffi_vs_equiv_open )
, testCase "aluffi == from equiv. (closed)" (forAllPart 10 "failed" prop_aluffi_vs_equiv_closed )
, testCase "degree == lowest coeff of CSM" (forAllPart 10 "failed" prop_csm_degree )
]
]
prop_aluffi_vs_recursive_open part = (Proj.openCSM part == Aluffi.aluffiOpenCSM part)
prop_aluffi_vs_recursive_closed part = (Proj.closedCSM part == Aluffi.aluffiClosedCSM part)
prop_aluffi_vs_equiv_open part = (Aluffi.aluffiOpenCSM part == forgetEquiv (spec2' ChernClass $ Direct.directOpenCSM part))
prop_aluffi_vs_equiv_closed part = (Aluffi.aluffiClosedCSM part == forgetEquiv (spec2' ChernClass $ Direct.directClosedCSM part))
prop_csm_degree part = (hilbert part == Proj.lowestCoeff_ (Proj.closedCSM part))
--------------------------------------------------------------------------------