packages feed

mdoc-0.1.0.2: test/Mdoc/Gen/FlagSpec.hs

-- |
--
-- Module      : Mdoc.Gen.FlagSpec
-- Copyright   : (c) 2026 Patrick Brisbin
-- License     : AGPL-3
-- Maintainer  : pbrisbin@gmail.com
-- Stability   : experimental
-- Portability : POSIX
module Mdoc.Gen.FlagSpec
  ( spec
  ) where

import Mdoc.Prelude

import Data.List (sort)
import Mdoc.Gen.Flag
import Test.Hspec

spec :: Spec
spec = do
  describe "Ord" $ do
    it "sorts short before long, capital-then-lower together" $ do
      let
        unsorted =
          [ Flag 'q' []
          , Flag 'e' []
          , Flag 'n' []
          , Flag 'G' []
          , Flag 'b' []
          , Flag 'A' []
          , Flag 'I' []
          , Flag 's' []
          , GNUFlag "binary-files" []
          , Flag 'B' []
          , GNUFlag "line-buffered" []
          , Flag 'L' []
          , Flag 'F' []
          , GNUFlag "null" []
          , Flag 'w' []
          , Flag 'o' []
          , Flag 'Z' []
          , Flag 'x' []
          , Flag 'E' []
          , Flag 'v' []
          , GNUFlag "label" []
          , Flag 'h' []
          , Flag 'c' []
          , Flag 'U' []
          , Flag 'H' []
          , Flag 'l' []
          , Flag 'V' []
          , Flag 'f' []
          , Flag 'C' [GNUFlag "context" []]
          , Flag 'i' []
          , Flag 'a' []
          , Flag 'm' []
          , Flag 'R' []
          ]
        sorted =
          [ Flag 'A' []
          , Flag 'a' []
          , Flag 'B' []
          , Flag 'b' []
          , Flag 'C' [GNUFlag "context" []]
          , Flag 'c' []
          , Flag 'E' []
          , Flag 'e' []
          , Flag 'F' []
          , Flag 'f' []
          , Flag 'G' []
          , Flag 'H' []
          , Flag 'h' []
          , Flag 'I' []
          , Flag 'i' []
          , Flag 'L' []
          , Flag 'l' []
          , Flag 'm' []
          , Flag 'n' []
          , Flag 'o' []
          , Flag 'q' []
          , Flag 'R' []
          , Flag 's' []
          , Flag 'U' []
          , Flag 'V' []
          , Flag 'v' []
          , Flag 'w' []
          , Flag 'x' []
          , Flag 'Z' []
          , GNUFlag "binary-files" []
          , GNUFlag "label" []
          , GNUFlag "line-buffered" []
          , GNUFlag "null" []
          ]

      sort unsorted `shouldBe` sorted