@@ -38,6 +38,9 @@ roundTripEq x y = roundTrip (==) x y
3838genericTo :: (Data a, ToJSON a) => a -> a -> Bool
3939genericTo _ v = G.toJSON v == toJSON v
4040
41+genericFrom :: (Eq a, Data a, ToJSON a) => a -> a -> Bool
42+genericFrom _ v = G.fromJSON (toJSON v) == Success v
43+
4144approxEq :: Double -> Double -> Bool
4245approxEq a b = a == b ||
4346 d < maxAbsoluteError ||
@@ -85,7 +88,13 @@ tests = [
8588 testProperty "encodeDouble" encodeDouble
8689 , testProperty "encodeInteger" encodeInteger
8790 ],
88− testGroup "generic" [
91+ testGroup "genericFrom" [
92+ testProperty "Bool" $ genericFrom True
93+ , testProperty "Double" $ genericFrom (1::Double)
94+ , testProperty "Int" $ genericFrom (1::Int)
95+ , testProperty "Foo" $ genericFrom (undefined::Foo)
96+ ],
97+ testGroup "genericTo" [
8998 testProperty "Bool" $ genericTo True
9099 , testProperty "Double" $ genericTo (1::Double)
91100 , testProperty "Int" $ genericTo (1::Int)