module Saturn.Unstable.Extra.OrdSpec where

import qualified Saturn.Unstable.Extra.Ord as Ord
import qualified Test.Hspec as Hspec

spec :: Hspec.Spec
spec :: Spec
spec = forall a. HasCallStack => String -> SpecWith a -> SpecWith a
Hspec.describe String
"Saturn.Unstable.Extra.Ord" forall a b. (a -> b) -> a -> b
$ do
  forall a. HasCallStack => String -> SpecWith a -> SpecWith a
Hspec.describe String
"within" forall a b. (a -> b) -> a -> b
$ do
    forall a.
(HasCallStack, Example a) =>
String -> a -> SpecWith (Arg a)
Hspec.it String
"fails below lower bound" forall a b. (a -> b) -> a -> b
$ do
      Char
'a' forall a. (HasCallStack, Show a) => a -> (a -> Bool) -> Expectation
`Hspec.shouldNotSatisfy` forall a. Ord a => (a, a) -> a -> Bool
Ord.within (Char
'b', Char
'd')

    forall a.
(HasCallStack, Example a) =>
String -> a -> SpecWith (Arg a)
Hspec.it String
"succeeds at lower bound" forall a b. (a -> b) -> a -> b
$ do
      Char
'b' forall a. (HasCallStack, Show a) => a -> (a -> Bool) -> Expectation
`Hspec.shouldSatisfy` forall a. Ord a => (a, a) -> a -> Bool
Ord.within (Char
'b', Char
'd')

    forall a.
(HasCallStack, Example a) =>
String -> a -> SpecWith (Arg a)
Hspec.it String
"succeeds within bounds" forall a b. (a -> b) -> a -> b
$ do
      Char
'c' forall a. (HasCallStack, Show a) => a -> (a -> Bool) -> Expectation
`Hspec.shouldSatisfy` forall a. Ord a => (a, a) -> a -> Bool
Ord.within (Char
'b', Char
'd')

    forall a.
(HasCallStack, Example a) =>
String -> a -> SpecWith (Arg a)
Hspec.it String
"succeeds at upper bound" forall a b. (a -> b) -> a -> b
$ do
      Char
'd' forall a. (HasCallStack, Show a) => a -> (a -> Bool) -> Expectation
`Hspec.shouldSatisfy` forall a. Ord a => (a, a) -> a -> Bool
Ord.within (Char
'b', Char
'd')

    forall a.
(HasCallStack, Example a) =>
String -> a -> SpecWith (Arg a)
Hspec.it String
"fails above upper bound" forall a b. (a -> b) -> a -> b
$ do
      Char
'e' forall a. (HasCallStack, Show a) => a -> (a -> Bool) -> Expectation
`Hspec.shouldNotSatisfy` forall a. Ord a => (a, a) -> a -> Bool
Ord.within (Char
'b', Char
'd')