packages feed

zxcvbn-hs-0.2.0.0: test/Zxcvbn/Date.hs

{-# LANGUAGE OverloadedStrings #-}

{-|

Copyright:
  This file is part of the package zxcvbn-hs. It is subject to the
  license terms in the LICENSE file found in the top-level directory
  of this distribution and at:

    https://code.devalot.com/sthenauth/zxcvbn-hs

  No part of this package, including this file, may be copied,
  modified, propagated, or distributed except according to the terms
  contained in the LICENSE file.

License: MIT

-}
module Zxcvbn.Date
  ( test
  ) where

--------------------------------------------------------------------------------
import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Time.Calendar as Time
import Test.Tasty
import Test.Tasty.HUnit

--------------------------------------------------------------------------------
import Text.Password.Strength.Internal

--------------------------------------------------------------------------------
test :: TestTree
test = testGroup "Date"
  [ tc "1911"       (@?= Just (2019, 1,  1))
  , tc "19101"      (@?= Just (2019, 10, 1))
  , tc "12151966"   (@?= Just (1966, 12, 15))
  , tc "15121966"   (@?= Just (1966, 12, 15))
  , tc "15021966"   (@?= Just (1966, 2,  15))
  , tc "1999-2-1"   (@?= Just (1999, 2,  1))
  , tc "1999-02-01" (@?= Just (1999, 2,  1))
  ]

  where
    tc :: Text -> (Maybe YMD -> Assertion) -> TestTree
    tc label f = testCase (Text.unpack label) (f (toYMD <$> isDate ref label))

    ref :: Time.Day
    ref = Time.fromGregorian 2019 1 1