ac-library-hs-1.5.0.0: test/Tests/Extra/Hld.hs
module Tests.Extra.Hld where
import AtCoder.Extra.Graph qualified as Gr
import AtCoder.Extra.Tree.Hld qualified as Hld
import AtCoder.Extra.Tree.TreeMonoid qualified as Tm
import Data.Monoid (Sum (..))
import Data.Vector.Unboxed qualified as VU
import Test.Tasty
import Test.Tasty.HUnit
unit_one :: TestTree
unit_one = testCase "one" $ do
let hld = Hld.new $ Gr.build @() 1 VU.empty
(@?= 0) $ Hld.lca hld 0 0
(@?= 0) $ Hld.ancestor hld 0 0
(@?= Just 0) $ Hld.jump hld 0 0 0
(@?= 0) $ Hld.lengthBetween hld 0 0
(@?= [0]) $ Hld.path hld 0 0
(@?= [(0, 0)]) $ Hld.pathSegmentsInclusive Hld.WeightsAreOnVertices hld 0 0
(@?= []) $ Hld.pathSegmentsInclusive Hld.WeightsAreOnEdges hld 0 0
(@?= (0, 0)) $ Hld.subtreeSegmentInclusive hld 0
(@?= True) $ Hld.isInSubtree hld 0 0
tm <- Tm.fromVerts hld Tm.Commute (VU.singleton (Sum (1 :: Int)))
(@?= Sum 1) =<< Tm.prod tm 0 0
(@?= Sum 1) =<< Tm.read tm 0
Tm.write tm 0 $ Sum 2
(@?= Sum 2) =<< Tm.exchange tm 0 (Sum 3)
Tm.modify tm (+ (Sum 1)) 0
(@?= Sum 4) =<< Tm.read tm 0
(@?= Sum 4) =<< Tm.prod tm 0 0
tests :: [TestTree]
tests =
[ unit_one
]