Revision 0047d4e2
b/htools/Ganeti/HTools/QC.hs | ||
---|---|---|
279 | 279 |
instance Arbitrary Types.DiskTemplate where |
280 | 280 |
arbitrary = elements [minBound..maxBound] |
281 | 281 |
|
282 |
instance Arbitrary Types.FailMode where |
|
283 |
arbitrary = elements [minBound..maxBound] |
|
284 |
|
|
285 |
instance Arbitrary a => Arbitrary (Types.OpResult a) where |
|
286 |
arbitrary = arbitrary >>= \c -> |
|
287 |
case c of |
|
288 |
False -> liftM Types.OpFail arbitrary |
|
289 |
True -> liftM Types.OpGood arbitrary |
|
290 |
|
|
282 | 291 |
-- * Actual tests |
283 | 292 |
|
284 | 293 |
-- ** Utils tests |
... | ... | |
1045 | 1054 |
|
1046 | 1055 |
-- ** Types tests |
1047 | 1056 |
|
1048 |
prop_AllocPolicy_serialisation apol = |
|
1049 |
case Types.apolFromString (Types.apolToString apol) of |
|
1050 |
Types.Ok p -> printTestCase ("invalid deserialisation " ++ show p) $ |
|
1051 |
p == apol |
|
1052 |
Types.Bad s -> printTestCase ("failed to deserialise: " ++ s) False |
|
1053 |
|
|
1054 |
prop_DiskTemplate_serialisation dt = |
|
1055 |
case Types.dtFromString (Types.dtToString dt) of |
|
1056 |
Types.Ok p -> printTestCase ("invalid deserialisation " ++ show p) $ |
|
1057 |
p == dt |
|
1058 |
Types.Bad s -> printTestCase ("failed to deserialise: " ++ s) False |
|
1057 |
prop_Types_AllocPolicy_serialisation apol = |
|
1058 |
case J.readJSON (J.showJSON apol) of |
|
1059 |
J.Ok p -> printTestCase ("invalid deserialisation " ++ show p) $ |
|
1060 |
p == apol |
|
1061 |
J.Error s -> printTestCase ("failed to deserialise: " ++ s) False |
|
1062 |
where _types = apol::Types.AllocPolicy |
|
1063 |
|
|
1064 |
prop_Types_DiskTemplate_serialisation dt = |
|
1065 |
case J.readJSON (J.showJSON dt) of |
|
1066 |
J.Ok p -> printTestCase ("invalid deserialisation " ++ show p) $ |
|
1067 |
p == dt |
|
1068 |
J.Error s -> printTestCase ("failed to deserialise: " ++ s) |
|
1069 |
False |
|
1070 |
where _types = dt::Types.DiskTemplate |
|
1071 |
|
|
1072 |
prop_Types_opToResult op = |
|
1073 |
case op of |
|
1074 |
Types.OpFail _ -> Types.isBad r |
|
1075 |
Types.OpGood v -> case r of |
|
1076 |
Types.Bad _ -> False |
|
1077 |
Types.Ok v' -> v == v' |
|
1078 |
where r = Types.opToResult op |
|
1079 |
_types = op::Types.OpResult Int |
|
1080 |
|
|
1081 |
prop_Types_eitherToResult ei = |
|
1082 |
case ei of |
|
1083 |
Left _ -> Types.isBad r |
|
1084 |
Right v -> case r of |
|
1085 |
Types.Bad _ -> False |
|
1086 |
Types.Ok v' -> v == v' |
|
1087 |
where r = Types.eitherToResult ei |
|
1088 |
_types = ei::Either String Int |
|
1059 | 1089 |
|
1060 | 1090 |
testTypes = |
1061 |
[ run prop_AllocPolicy_serialisation |
|
1062 |
, run prop_DiskTemplate_serialisation |
|
1091 |
[ run prop_Types_AllocPolicy_serialisation |
|
1092 |
, run prop_Types_DiskTemplate_serialisation |
|
1093 |
, run prop_Types_opToResult |
|
1094 |
, run prop_Types_eitherToResult |
|
1063 | 1095 |
] |
Also available in: Unified diff