[{"name":"CommonTests.Dict","comment":"\n\n@docs isDict, isUnorderedDict\n@docs DictAPI\n\n","unions":[],"aliases":[{"name":"DictAPI","comment":" Provide your functions. Typically something like the below example.\n\nNote: you can opt out of testing some functions with `Nothing`, but beware: not\nproviding eg. `toList` will result in almost no tests being actually ran.\n\n    -- Debug.toString\n    { dictToString = Debug.toString\n\n    -- Creation\n    , empty = Just <| OpaqueDict.empty identity\n    , singleton = Just <| OpaqueDict.singleton identity\n    , fromList = Just <| OpaqueDict.fromList identity\n\n    -- Updating\n    , insert = Just OpaqueDict.insert\n    , update = Just OpaqueDict.update\n    , remove = Just OpaqueDict.remove\n    , map = Just OpaqueDict.map\n    , filter = Just OpaqueDict.filter\n    , union = Just OpaqueDict.union\n    , intersect = Just OpaqueDict.intersect\n    , diff = Just OpaqueDict.diff\n\n    -- Querying\n    , size = Just OpaqueDict.size\n    , isEmpty = Just OpaqueDict.isEmpty\n    , member = Just OpaqueDict.member\n    , get = Just OpaqueDict.get\n    , toList = Just OpaqueDict.toList\n    , foldl = Just OpaqueDict.foldl\n    , foldr = Just OpaqueDict.foldr\n    , partition = Just OpaqueDict.partition\n    , keys = Just OpaqueDict.keys\n    , values = Just OpaqueDict.values\n    , merge = Just OpaqueDict.merge\n    }\n\n","args":["d"],"type":"{ dictToString : d -> String.String, empty : Maybe.Maybe d, singleton : Maybe.Maybe (String.String -> Basics.Int -> d), fromList : Maybe.Maybe (List.List ( String.String, Basics.Int ) -> d), insert : Maybe.Maybe (String.String -> Basics.Int -> d -> d), remove : Maybe.Maybe (String.String -> d -> d), update : Maybe.Maybe (String.String -> (Maybe.Maybe Basics.Int -> Maybe.Maybe Basics.Int) -> d -> d), map : Maybe.Maybe ((String.String -> Basics.Int -> Basics.Int) -> d -> d), filter : Maybe.Maybe ((String.String -> Basics.Int -> Basics.Bool) -> d -> d), union : Maybe.Maybe (d -> d -> d), intersect : Maybe.Maybe (d -> d -> d), diff : Maybe.Maybe (d -> d -> d), size : Maybe.Maybe (d -> Basics.Int), isEmpty : Maybe.Maybe (d -> Basics.Bool), member : Maybe.Maybe (String.String -> d -> Basics.Bool), get : Maybe.Maybe (String.String -> d -> Maybe.Maybe Basics.Int), toList : Maybe.Maybe (d -> List.List ( String.String, Basics.Int )), foldl : Maybe.Maybe ((String.String -> Basics.Int -> List.List Basics.Int -> List.List Basics.Int) -> List.List Basics.Int -> d -> List.List Basics.Int), foldr : Maybe.Maybe ((String.String -> Basics.Int -> List.List Basics.Int -> List.List Basics.Int) -> List.List Basics.Int -> d -> List.List Basics.Int), partition : Maybe.Maybe ((String.String -> Basics.Int -> Basics.Bool) -> d -> ( d, d )), keys : Maybe.Maybe (d -> List.List String.String), values : Maybe.Maybe (d -> List.List Basics.Int), merge : Maybe.Maybe ((String.String -> Basics.Int -> List.List Basics.Int -> List.List Basics.Int) -> (String.String -> Basics.Int -> Basics.Int -> List.List Basics.Int -> List.List Basics.Int) -> (String.String -> Basics.Int -> List.List Basics.Int -> List.List Basics.Int) -> d -> d -> List.List Basics.Int -> List.List Basics.Int) }"}],"values":[{"name":"isDict","comment":" Given a record of your Dict functions, this function will run a\ncomprehensive suite of tests against them, comparing them to the elm/core Dict.\n\nIt will:\n\n  - Create the initial Dict using a random constructor (like `empty`, `singleton` or `fromList`)\n  - Run a random sequence of \"updating\" actions on it (like `insert`, `filter`, `diff` etc.)\n  - Query the final Dict using a random function (like `size`, `get`, `partition`, `toList` etc.)\n\nThe process above will run on both _your_ Dict and the `elm/core` Dict in\ntandem. (The same commands will run for both.)\n\nThere should be no visible difference in behaviour: eg. order of items given\nfrom `toList` should be the same.\n\nThis helps prevent subtle surprises when users switch between Dict\nimplementations, like `update key (\\_ -> Nothing)` not removing items from the\nDict (a real bug in one of the 3rd-party Dicts!).\n\n","type":"CommonTests.Dict.DictAPI d -> Test.Test"},{"name":"isUnorderedDict","comment":" Same as `isDict`, but doesn't care about the order of lists gathered from\nquery Dict functions like `keys`, `toList`, `partition` etc.\n\n(Note folds on unordered lists might also behave differently if your combining\nfunction is not commutative, given the order is not guaranteed. As such, this\ntest suite will only check that all items are used in the fold.)\n\n","type":"CommonTests.Dict.DictAPI d -> Test.Test"}],"binops":[]}]