X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FOctet.hs;h=7faf1d7851c18ac864147c2b5220c568ffe1a5b4;hb=9200fe5fcab505e5a331514a6ee687c6f78011b1;hp=ceeb4b8ff2ddd9e3c047ab78924f7f7b206d6ef8;hpb=4520812e6f264cdeba984d180f20a8f8c6b6d645;p=hath.git diff --git a/src/Octet.hs b/src/Octet.hs index ceeb4b8..7faf1d7 100644 --- a/src/Octet.hs +++ b/src/Octet.hs @@ -38,22 +38,20 @@ instance Arbitrary Octet where a8 <- arbitrary :: Gen Bit return (Octet a1 a2 a3 a4 a5 a6 a7 a8) - coarbitrary _ = variant 0 - instance Maskable Octet where - apply_mask _ Maskbits.None = Octet.None - apply_mask Octet.None _ = Octet.None - apply_mask oct mask + apply_mask _ Maskbits.None _ = Octet.None + apply_mask Octet.None _ _ = Octet.None + apply_mask oct mask bit | mask == Eight = oct - | mask == Seven = oct { b8 = B.Zero } - | mask == Six = oct { b8 = B.Zero, b7 = B.Zero } - | mask == Five = oct { b8 = B.Zero, b7 = B.Zero, b6 = B.Zero } - | mask == Four = oct { b8 = B.Zero, b7 = B.Zero, b6 = B.Zero, b5 = B.Zero } - | mask == Three = oct { b8 = B.Zero, b7 = B.Zero, b6 = B.Zero, b5 = B.Zero, b4 = B.Zero } - | mask == Two = oct { b8 = B.Zero, b7 = B.Zero, b6 = B.Zero, b5 = B.Zero, b4 = B.Zero, b3 = B.Zero } - | mask == Maskbits.One = oct { b8 = B.Zero, b7 = B.Zero, b6 = B.Zero, b5 = B.Zero, b4 = B.Zero, b3 = B.Zero, b2 = B.Zero } - | mask == Maskbits.Zero = min_octet + | mask == Seven = oct { b8 = bit } + | mask == Six = oct { b8 = bit, b7 = bit } + | mask == Five = oct { b8 = bit, b7 = bit, b6 = bit } + | mask == Four = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit } + | mask == Three = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit } + | mask == Two = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit, b3 = bit } + | mask == Maskbits.One = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit, b3 = bit, b2 = bit } + | mask == Maskbits.Zero = oct { b8 = bit, b7 = bit, b6 = bit, b5 = bit, b4 = bit, b3 = bit, b2 = bit, b1 = bit } | otherwise = Octet.None @@ -116,7 +114,7 @@ test_octet_from_int1 = test_octet_mask1 :: Test test_octet_mask1 = - TestCase $ assertEqual "The network bits of 255/4 should equal 240" oct2 (apply_mask oct1 Four) + TestCase $ assertEqual "The network bits of 255/4 should equal 240" oct2 (apply_mask oct1 Four B.Zero) where oct1 = octet_from_int 255 oct2 = octet_from_int 240 @@ -124,7 +122,7 @@ test_octet_mask1 = test_octet_mask2 :: Test test_octet_mask2 = - TestCase $ assertEqual "The network bits of 255/1 should equal 128" oct2 (apply_mask oct1 Maskbits.One) + TestCase $ assertEqual "The network bits of 255/1 should equal 128" oct2 (apply_mask oct1 Maskbits.One B.Zero) where oct1 = octet_from_int 255 oct2 = octet_from_int 128