From 7022db834d7dff3ae2159f0db2e6a353a76e2ee5 Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Fri, 31 Aug 2012 12:42:04 +0200 Subject: [PATCH] Replace manual arbitrary instances with genArbitrary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There are a few more that could be replaces, once we start using appropriate (new)types. Signed-off-by: Iustin Pop <iustin@google.com> Reviewed-by: RenΓ© Nussbaumer <rn@google.com> --- htest/Test/Ganeti/Confd/Utils.hs | 14 +++-------- htest/Test/Ganeti/HTools/Types.hs | 12 +++------ htest/Test/Ganeti/Jobs.hs | 6 ++--- htest/Test/Ganeti/Luxi.hs | 6 ++--- htest/Test/Ganeti/Objects.hs | 38 ++++++++++------------------- htest/Test/Ganeti/OpCodes.hs | 3 +-- htest/Test/Ganeti/Query/Language.hs | 6 ++--- htest/Test/Ganeti/Ssconf.hs | 3 +-- htest/Test/Ganeti/TestHTools.hs | 6 ++--- 9 files changed, 31 insertions(+), 63 deletions(-) diff --git a/htest/Test/Ganeti/Confd/Utils.hs b/htest/Test/Ganeti/Confd/Utils.hs index 1629f7560..fea3dd9df 100644 --- a/htest/Test/Ganeti/Confd/Utils.hs +++ b/htest/Test/Ganeti/Confd/Utils.hs @@ -41,15 +41,11 @@ import qualified Ganeti.Confd.Utils as Confd.Utils import qualified Ganeti.Constants as C import qualified Ganeti.Hash as Hash -instance Arbitrary Confd.ConfdRequestType where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Confd.ConfdRequestType) -instance Arbitrary Confd.ConfdReqField where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Confd.ConfdReqField) -instance Arbitrary Confd.ConfdReqQ where - arbitrary = Confd.ConfdReqQ <$> arbitrary <*> arbitrary <*> - arbitrary <*> arbitrary +$(genArbitrary ''Confd.ConfdReqQ) instance Arbitrary Confd.ConfdQuery where arbitrary = oneof [ pure Confd.EmptyQuery @@ -57,9 +53,7 @@ instance Arbitrary Confd.ConfdQuery where , Confd.DictQuery <$> arbitrary ] -instance Arbitrary Confd.ConfdRequest where - arbitrary = Confd.ConfdRequest <$> arbitrary <*> arbitrary <*> arbitrary - <*> arbitrary +$(genArbitrary ''Confd.ConfdRequest) -- | Test that signing messages and checking signatures is correct. It -- also tests, indirectly the serialisation of messages so we don't diff --git a/htest/Test/Ganeti/HTools/Types.hs b/htest/Test/Ganeti/HTools/Types.hs index 34759c50b..aebcc4ceb 100644 --- a/htest/Test/Ganeti/HTools/Types.hs +++ b/htest/Test/Ganeti/HTools/Types.hs @@ -56,17 +56,13 @@ allDiskTemplates = [minBound..maxBound] -- * Arbitrary instance -instance Arbitrary Types.AllocPolicy where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Types.AllocPolicy) -instance Arbitrary Types.DiskTemplate where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Types.DiskTemplate) -instance Arbitrary Types.FailMode where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Types.FailMode) -instance Arbitrary Types.EvacMode where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Types.EvacMode) instance Arbitrary a => Arbitrary (Types.OpResult a) where arbitrary = arbitrary >>= \c -> diff --git a/htest/Test/Ganeti/Jobs.hs b/htest/Test/Ganeti/Jobs.hs index b9504f718..b6d954678 100644 --- a/htest/Test/Ganeti/Jobs.hs +++ b/htest/Test/Ganeti/Jobs.hs @@ -37,11 +37,9 @@ import qualified Ganeti.Jobs as Jobs -- * Arbitrary instances -instance Arbitrary Jobs.OpStatus where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Jobs.OpStatus) -instance Arbitrary Jobs.JobStatus where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Jobs.JobStatus) -- * Test cases diff --git a/htest/Test/Ganeti/Luxi.hs b/htest/Test/Ganeti/Luxi.hs index e36889fe7..dea4d5f10 100644 --- a/htest/Test/Ganeti/Luxi.hs +++ b/htest/Test/Ganeti/Luxi.hs @@ -48,11 +48,9 @@ import qualified Ganeti.Luxi as Luxi -- * Luxi tests -instance Arbitrary Luxi.TagObject where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Luxi.TagObject) -instance Arbitrary Luxi.LuxiReq where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Luxi.LuxiReq) instance Arbitrary Luxi.LuxiOp where arbitrary = do diff --git a/htest/Test/Ganeti/Objects.hs b/htest/Test/Ganeti/Objects.hs index 0883e30a4..4d94fdb4f 100644 --- a/htest/Test/Ganeti/Objects.hs +++ b/htest/Test/Ganeti/Objects.hs @@ -45,11 +45,9 @@ import Ganeti.JSON -- * Arbitrary instances -instance Arbitrary Hypervisor where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Hypervisor) -instance Arbitrary PartialNDParams where - arbitrary = PartialNDParams <$> arbitrary <*> arbitrary +$(genArbitrary ''PartialNDParams) instance Arbitrary Node where arbitrary = Node <$> getFQDN <*> getFQDN <*> getFQDN @@ -58,14 +56,11 @@ instance Arbitrary Node where <*> arbitrary <*> arbitrary <*> getFQDN <*> arbitrary <*> (Set.fromList <$> genTags) -instance Arbitrary FileDriver where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''FileDriver) -instance Arbitrary BlockDriver where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''BlockDriver) -instance Arbitrary DiskMode where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''DiskMode) instance Arbitrary DiskLogicalId where arbitrary = oneof [ LIDPlain <$> arbitrary <*> arbitrary @@ -83,26 +78,19 @@ instance Arbitrary Disk where arbitrary = Disk <$> arbitrary <*> (pure []) <*> arbitrary <*> arbitrary <*> arbitrary -instance Arbitrary PartialBeParams where - -- FIXME: we should generate proper values, >=0, etc., but this is - -- hard for partial ones, where all must be wrapped in a 'Maybe' - arbitrary = PartialBeParams <$> arbitrary <*> arbitrary - <*> arbitrary <*> arbitrary +-- FIXME: we should generate proper values, >=0, etc., but this is +-- hard for partial ones, where all must be wrapped in a 'Maybe' +$(genArbitrary ''PartialBeParams) -instance Arbitrary DiskTemplate where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''DiskTemplate) -instance Arbitrary AdminState where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''AdminState) -instance Arbitrary NICMode where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''NICMode) -instance Arbitrary PartialNicParams where - arbitrary = PartialNicParams <$> arbitrary <*> arbitrary +$(genArbitrary ''PartialNicParams) -instance Arbitrary PartialNic where - arbitrary = PartialNic <$> arbitrary <*> arbitrary <*> arbitrary +$(genArbitrary ''PartialNic) instance Arbitrary Instance where arbitrary = diff --git a/htest/Test/Ganeti/OpCodes.hs b/htest/Test/Ganeti/OpCodes.hs index 39396cb86..93abaf183 100644 --- a/htest/Test/Ganeti/OpCodes.hs +++ b/htest/Test/Ganeti/OpCodes.hs @@ -46,8 +46,7 @@ import qualified Ganeti.OpCodes as OpCodes -- * Arbitrary instances -instance Arbitrary OpCodes.ReplaceDisksMode where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''OpCodes.ReplaceDisksMode) instance Arbitrary OpCodes.DiskIndex where arbitrary = choose (0, C.maxDisks - 1) >>= OpCodes.mkDiskIndex diff --git a/htest/Test/Ganeti/Query/Language.hs b/htest/Test/Ganeti/Query/Language.hs index 15ff94ebb..c38fe5ee0 100644 --- a/htest/Test/Ganeti/Query/Language.hs +++ b/htest/Test/Ganeti/Query/Language.hs @@ -72,8 +72,7 @@ genFilter' n = do n'' = max n' 2 -- but we don't want empty or 1-element lists, -- so use this for and/or filter list length -instance Arbitrary Qlang.ItemType where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Qlang.ItemType) instance Arbitrary Qlang.FilterRegex where arbitrary = getName >>= Qlang.mkRegex -- a name should be a good regex @@ -81,8 +80,7 @@ instance Arbitrary Qlang.FilterRegex where -- | Tests that serialisation/deserialisation of filters is -- idempotent. prop_Serialisation :: Property -prop_Serialisation = - forAll genFilter testSerialisation +prop_Serialisation = forAll genFilter testSerialisation prop_FilterRegex_instances :: Qlang.FilterRegex -> Property prop_FilterRegex_instances rex = diff --git a/htest/Test/Ganeti/Ssconf.hs b/htest/Test/Ganeti/Ssconf.hs index 0b8695026..98f66080a 100644 --- a/htest/Test/Ganeti/Ssconf.hs +++ b/htest/Test/Ganeti/Ssconf.hs @@ -38,8 +38,7 @@ import qualified Ganeti.Ssconf as Ssconf -- * Ssconf tests -instance Arbitrary Ssconf.SSKey where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Ssconf.SSKey) prop_filename :: Ssconf.SSKey -> Property prop_filename key = diff --git a/htest/Test/Ganeti/TestHTools.hs b/htest/Test/Ganeti/TestHTools.hs index 07f1cae7e..8dbaceac0 100644 --- a/htest/Test/Ganeti/TestHTools.hs +++ b/htest/Test/Ganeti/TestHTools.hs @@ -28,10 +28,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA module Test.Ganeti.TestHTools where -import Test.QuickCheck - import qualified Data.Map as Map +import Test.Ganeti.TestHelper import Test.Ganeti.TestCommon import qualified Ganeti.Constants as C @@ -120,5 +119,4 @@ setInstanceSmallerThanNode node inst = -- * Arbitrary instances -instance Arbitrary Types.InstanceStatus where - arbitrary = elements [minBound..maxBound] +$(genArbitrary ''Types.InstanceStatus) -- GitLab