Revision a4f35477 test/hs/Test/Ganeti/JSON.hs

b/test/hs/Test/Ganeti/JSON.hs
28 28

  
29 29
module Test.Ganeti.JSON (testJSON) where
30 30

  
31
import Data.List
31 32
import Test.QuickCheck
32 33

  
33 34
import qualified Text.JSON as J
......
53 54
    BasicTypes.Bad _ -> passTest
54 55
    BasicTypes.Ok result -> failTest $ "Unexpected parse, got " ++ show result
55 56

  
57
arrayMaybeToJson :: (J.JSON a) => [Maybe a] -> String -> JSON.JSRecord
58
arrayMaybeToJson xs k = [(k, J.JSArray $ map sh xs)]
59
  where
60
    sh x = case x of
61
      Just v -> J.showJSON v
62
      Nothing -> J.JSNull
63

  
64
prop_arrayMaybeFromObj :: String -> [Maybe Int] -> String -> Property
65
prop_arrayMaybeFromObj t xs k =
66
  case JSON.tryArrayMaybeFromObj t (arrayMaybeToJson xs k) k of
67
    BasicTypes.Ok xs' -> xs' ==? xs
68
    BasicTypes.Bad e -> failTest $ "Parsing failing, got: " ++ show e
69

  
70
prop_arrayMaybeFromObjFail :: String -> String -> Property
71
prop_arrayMaybeFromObjFail t k =
72
  case JSON.tryArrayMaybeFromObj t [] k of
73
    BasicTypes.Ok r -> fail $
74
                       "Unexpected result, got: " ++ show (r::[Maybe Int])
75
    BasicTypes.Bad e -> conjoin [ Data.List.isInfixOf t e ==? True
76
                                , Data.List.isInfixOf k e ==? True
77
                                ]
78

  
56 79
testSuite "JSON"
57 80
          [ 'prop_toArray
58 81
          , 'prop_toArrayFail
82
          , 'prop_arrayMaybeFromObj
83
          , 'prop_arrayMaybeFromObjFail
59 84
          ]

Also available in: Unified diff