packages feed

coincident-root-loci-0.2: test/Tests/CSM/Projective.hs

-- | 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))

--------------------------------------------------------------------------------