]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/IPv4Address.hs
Added Arbitrary instance definitions for the main data types.
[hath.git] / src / IPv4Address.hs
index e91e67325a070abde0a0af82afd2d05a3175bc4d..55602aa8a9616197d6ecf038e6b071eec87e79d3 100644 (file)
@@ -18,6 +18,7 @@ module IPv4Address
 ) where
 
 import Test.HUnit
+import Test.QuickCheck
 
 import qualified Bit as B
 import Maskbits
@@ -43,6 +44,18 @@ instance Show IPv4Address where
           oct4 = (octet4 addr)
 
 
+instance Arbitrary IPv4Address where
+    arbitrary = do
+      oct1 <- arbitrary :: Gen Octet
+      oct2 <- arbitrary :: Gen Octet
+      oct3 <- arbitrary :: Gen Octet
+      oct4 <- arbitrary :: Gen Octet
+      return (IPv4Address oct1 oct2 oct3 oct4)
+
+    coarbitrary _ = variant 0
+
+
+
 -- We don't export our constructor so this function is the only
 -- way to construct an address from octets. As a result, we can
 -- return IPv4Address.None in response to being passed one of more