[
    {
        "name": "Test.Extra",
        "comment": " Write concise test for JSON decoders\n\n@docs DecoderExpectation, describeDecoder, testDecoder\n",
        "unions": [
            {
                "name": "DecoderExpectation",
                "comment": " Expectation for a decoder result.\n\n* `FailsToDecode` - expect the decoder to fail, the failure message can be anything\n* `FailsToDecodeWith String` - expect the decoder to fail with a specific message\n* `DecodesTo a` - expect the decoder to succeed, decoding to the provided value\n",
                "args": [
                    "a"
                ],
                "cases": [
                    [
                        "FailsToDecode",
                        []
                    ],
                    [
                        "FailsToDecodeWith",
                        [
                            "String"
                        ]
                    ],
                    [
                        "DecodesTo",
                        [
                            "a"
                        ]
                    ]
                ]
            }
        ],
        "aliases": [],
        "values": [
            {
                "name": "describeDecoder",
                "comment": " Exercise a decoder over a list of input/expectation pairs.\n\nFor example\n\n```elm\ndescribeDecoder \"int\"\n  Json.Decode.int\n  [ ( \"\", FailsToDecode )\n  , ( \"foo\", FailsToDecode )\n  , ( \"1\", DecodesTo 1 )\n  , ( \"1.5\", FailsToDecode )\n  ]\n```\n",
                "type": "String -> Decoder a -> List ( String, DecoderExpectation a ) -> Test"
            },
            {
                "name": "testDecoder",
                "comment": " Exercise a decoder with a JSON encoded string.\n\nFor example\n\n```elm\ntestDecoder Json.Decode.string\n  \"\\\"foo\\\"\"\n  (DecodesTo \"foo\")\n```\n",
                "type": "Decoder a -> ( String, DecoderExpectation a ) -> Test"
            }
        ],
        "binops": []
    },
    {
        "name": "Fuzz.Extra",
        "comment": " Extends [Fuzz](http://package.elm-lang.org/packages/elm-community/elm-test/latest/Fuzz) with more `Fuzzer`s\n\n@docs eitherOr, union\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "eitherOr",
                "comment": " Combine two fuzzers.\n\n    fuzzMaybeInt : Fuzzer (Maybe Int)\n    fuzzMaybeInt =\n        Fuzz.Extra.eitherOr\n            (Fuzz.constant Nothing)\n            (Fuzz.int |> Fuzz.map Just)\n",
                "type": "Fuzzer a -> Fuzzer a -> Fuzzer a"
            },
            {
                "name": "union",
                "comment": " Create a fuzzer for a union type.\n\n    type Age\n        = Baby\n        | Teen\n        | Adult\n\n\n    shrinkAge : Shrinker Age\n    shrinkAge a =\n        case a of\n            Baby ->\n                Teen ::: Adult ::: empty\n\n            Teen ->\n                Adult ::: empty\n\n            Adult ->\n                empty\n\n\n    fuzzAge : Fuzzer Age\n    fuzzAge =\n        Fuzz.Extra.union [ Baby, Teen, Adult ] Baby shrinkAge\n",
                "type": "List a -> a -> Shrinker a -> Fuzzer a"
            }
        ],
        "binops": []
    },
    {
        "name": "Expect.Extra",
        "comment": " Extends Expect library with more `Expectation`s.\n\n@docs contain, member\n",
        "unions": [],
        "aliases": [],
        "values": [
            {
                "name": "contain",
                "comment": " Alias of `member`.\n\nReads better with bdd style tests.\n\n    expect [0, 1, 2] to contain 1\n\n    -- Passes because [0, 1, 2] contains 1\n",
                "type": "a -> List a -> Expectation"
            },
            {
                "name": "member",
                "comment": " Passes if value is a member of list.\n\n    member 1 [0, 1, 2]\n\n    -- Passes because 1 is a member of [0, 1, 2]\n",
                "type": "a -> List a -> Expectation"
            }
        ],
        "binops": []
    }
]