packages feed

clash-prelude-1.10.0: tests/Clash/Tests/Index.hs

module Clash.Tests.Index (tests) where

import Data.Bits (Bits(shiftR))
import Test.Tasty
import Test.Tasty.HUnit

import Clash.Sized.Internal.Index (Index)

import Test.Tasty.HUnit.Extra (expectException)

tests :: TestTree
tests = testGroup "Index"
  [ testGroup "shiftR"
    [ testCase "shiftR 5 0 == 5" $
        shiftR (5 :: Index 128) 0 @?= 5
    , testCase "returns 0 when n == bitSize" $
        shiftR (127 :: Index 128) 7 @?= 0
    , testCase "returns 0 when n > bitSize" $
        shiftR (127 :: Index 128) (7 + 1) @?= 0
    , testCase "returns 0 when n >> bitSize" $
        shiftR (127 :: Index 128) (7 + 1000) @?= 0
    , testCase "undefined when n < 0" $
        expectException (shiftR (1 :: Index 128) (-1))
    ]
  ]