packages feed

natskell-0.0.0.1: test/Unit/NuidSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module NuidSpec (spec) where

import qualified Data.ByteString       as BS
import qualified Data.ByteString.Char8 as BC
import           Nuid
import           System.Random         (mkStdGen)
import           Test.Hspec

spec :: Spec
spec = describe "NUID generation" $ do
  it "returns base62 tokens with the expected length" $ do
    let nuid0 = newNuid (mkStdGen 1)
        (token, _) = nextNuid nuid0
    BS.length token `shouldBe` 22
    BC.all (`BC.elem` base62Alphabet) token `shouldBe` True

base62Alphabet :: BC.ByteString
base62Alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"