implemented isValid for Word16

This commit is contained in:
Jonathan Lamothe 2024-06-30 21:11:38 -04:00
parent af26fcedd8
commit c494a25587
2 changed files with 20 additions and 3 deletions

View File

@ -47,7 +47,14 @@ instance Hamming Word16 where
, ( 0x0001, 0xfffe ) , ( 0x0001, 0xfffe )
] ]
isValid = undefined isValid code = not $ any (\mask -> oddParity $ code .&. mask)
[ 0xaaaa
, 0xcccc
, 0xf0f0
, 0xff00
, 0xffff
]
correctErrors = undefined correctErrors = undefined
setCheckBit :: (Num a, Bits a) => a -> (a, a) -> a setCheckBit :: (Num a, Bits a) => a -> (a, a) -> a

View File

@ -47,8 +47,18 @@ setCheckBitsSpec = describe "setCheckBits" $ mapM_
] ]
isValidSpec :: Spec isValidSpec :: Spec
isValidSpec = describe "isValid" $ isValidSpec = describe "isValid" $ mapM_
return () ( \(desc, code, expected) -> context desc $ let
actual = isValid code
in it ("should be " ++ show expected) $
actual `shouldBe` expected
)
[ ( "all zeroes", 0, True )
, ( "all ones", 0xffff, True )
, ( "valid", withChkBits, True )
, ( "no check bits", noChkBits, False )
, ( "bad check bits", badChkBits, False )
]
correctErrorsSpec :: Spec correctErrorsSpec :: Spec
correctErrorsSpec = describe "correctErrors" $ correctErrorsSpec = describe "correctErrors" $