packages feed

mdoc-0.2.0.0: test/Mdoc/Data/PositionalSpec.hs

module Mdoc.Data.PositionalSpec
  ( spec
  ) where

import Mdoc.Prelude

import Data.List (sort)
import Mdoc.Data.Positional
import Test.Hspec

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

      sort unsorted `shouldBe` sorted