module Test.Tasty.Discover.TastyInfo
  ( TastyInfo(..)
  ) where

import Data.Monoid

data TastyInfo = TastyInfo
  { TastyInfo -> Last String
name        :: Last String
  , TastyInfo -> Last String
description :: Last String
  } deriving (TastyInfo -> TastyInfo -> Bool
(TastyInfo -> TastyInfo -> Bool)
-> (TastyInfo -> TastyInfo -> Bool) -> Eq TastyInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TastyInfo -> TastyInfo -> Bool
$c/= :: TastyInfo -> TastyInfo -> Bool
== :: TastyInfo -> TastyInfo -> Bool
$c== :: TastyInfo -> TastyInfo -> Bool
Eq, Int -> TastyInfo -> ShowS
[TastyInfo] -> ShowS
TastyInfo -> String
(Int -> TastyInfo -> ShowS)
-> (TastyInfo -> String)
-> ([TastyInfo] -> ShowS)
-> Show TastyInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TastyInfo] -> ShowS
$cshowList :: [TastyInfo] -> ShowS
show :: TastyInfo -> String
$cshow :: TastyInfo -> String
showsPrec :: Int -> TastyInfo -> ShowS
$cshowsPrec :: Int -> TastyInfo -> ShowS
Show)

instance Semigroup TastyInfo where
  TastyInfo
a <> :: TastyInfo -> TastyInfo -> TastyInfo
<> TastyInfo
b = TastyInfo :: Last String -> Last String -> TastyInfo
TastyInfo
    { name :: Last String
name        = TastyInfo -> Last String
name TastyInfo
a        Last String -> Last String -> Last String
forall a. Semigroup a => a -> a -> a
<> TastyInfo -> Last String
name TastyInfo
b
    , description :: Last String
description = TastyInfo -> Last String
description TastyInfo
a Last String -> Last String -> Last String
forall a. Semigroup a => a -> a -> a
<> TastyInfo -> Last String
description TastyInfo
b
    }

instance Monoid TastyInfo where
  mempty :: TastyInfo
mempty = TastyInfo :: Last String -> Last String -> TastyInfo
TastyInfo
    { name :: Last String
name        = Maybe String -> Last String
forall a. Maybe a -> Last a
Last Maybe String
forall a. Maybe a
Nothing
    , description :: Last String
description = Maybe String -> Last String
forall a. Maybe a -> Last a
Last Maybe String
forall a. Maybe a
Nothing
    }