packages feed

poppy-1.0.0: test/Poppy/GroupSpec.hs

module Poppy.GroupSpec
  ( groupSpec,
  )
where

import Poppy.Internal.Group (groupByKey)
import Test.Hspec (Spec, describe, it, shouldBe)

groupSpec :: Spec
groupSpec =
  describe "Poppy.Internal.Group.groupByKey" $ do
    it "preserves first-seen key order rather than sorted key order" $ do
      groupByKey id ([3, 1, 3, 2, 1] :: [Int]) `shouldBe` [[3, 3], [1, 1], [2]]

    it "preserves row order within each group" $ do
      groupByKey fst ([('b', 1), ('a', 2), ('b', 3), ('a', 4)] :: [(Char, Int)])
        `shouldBe` [[('b', 1), ('b', 3)], [('a', 2), ('a', 4)]]

    it "returns an empty list for no rows" $ do
      groupByKey id ([] :: [Int]) `shouldBe` []