]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/Maskbits.hs
Update for QuickCheck 2.
[hath.git] / src / Maskbits.hs
index fcf57bdb379760ba2349bf2815e13aa62425085b..06314e395f2043c12da778f81405203692e5ded2 100644 (file)
@@ -1,8 +1,11 @@
 module Maskbits
 ( Maskbits(..),
+  decrement,
   maskbits_from_string
 ) where
 
+import Test.QuickCheck
+
 -- A type representing the number of bits in a CIDR netmask.
 data Maskbits = None
               | Zero
@@ -78,6 +81,42 @@ instance Show Maskbits where
     show ThirtyTwo   = "32"
 
 
+instance Arbitrary Maskbits where
+    arbitrary = elements [ Zero,
+                           One,
+                           Two,
+                           Three,
+                           Four,
+                           Five,
+                           Six,
+                           Seven,
+                           Eight,
+                           Nine,
+                           Ten,
+                           Eleven,
+                           Twelve,
+                           Thirteen,
+                           Fourteen,
+                           Fifteen,
+                           Sixteen,
+                           Seventeen,
+                           Eighteen,
+                           Nineteen,
+                           Twenty,
+                           TwentyOne,
+                           TwentyTwo,
+                           TwentyThree,
+                           TwentyFour,
+                           TwentyFive,
+                           TwentySix,
+                           TwentySeven,
+                           TwentyEight,
+                           TwentyNine,
+                           Thirty,
+                           ThirtyOne,
+                           ThirtyTwo ]
+
+
 
 -- There are only 32 bits in an IPv4 address, so there
 -- can't be more bits than that in the mask.
@@ -123,3 +162,41 @@ maskbits_from_string s =
     case (reads s :: [(Int, String)]) of
       []   -> None
       x:_ -> maskbits_from_int (fst x)
+
+
+
+decrement :: Maskbits -> Maskbits
+decrement None = None
+decrement Zero = None
+decrement One = Zero
+decrement Two = One
+decrement Three = Two
+decrement Four = Three
+decrement Five = Four
+decrement Six = Five
+decrement Seven = Six
+decrement Eight = Seven
+decrement Nine = Eight
+decrement Ten = Nine
+decrement Eleven = Ten
+decrement Twelve = Eleven
+decrement Thirteen = Twelve
+decrement Fourteen = Thirteen
+decrement Fifteen = Fourteen
+decrement Sixteen = Fifteen
+decrement Seventeen = Sixteen
+decrement Eighteen = Seventeen
+decrement Nineteen = Eighteen
+decrement Twenty = Nineteen
+decrement TwentyOne = Twenty
+decrement TwentyTwo = TwentyOne
+decrement TwentyThree = TwentyTwo
+decrement TwentyFour = TwentyThree
+decrement TwentyFive = TwentyFour
+decrement TwentySix = TwentyFive
+decrement TwentySeven = TwentySix
+decrement TwentyEight = TwentySeven
+decrement TwentyNine = TwentyEight
+decrement Thirty = TwentyNine
+decrement ThirtyOne = Thirty
+decrement ThirtyTwo = ThirtyOne