Sha256: 058cbf348fed0c6e8334149bbee2bb635c7469fe4834c1014dcab3bcb6f2a62a

Contents?: true

Size: 1.58 KB

Versions: 322

Compression:

Stored size: 1.58 KB

Contents

module RunLengthEncodingPropertyChecks exposing (propertyTests)

import ElmTest
import Check exposing (suite, claim, that, is, for, quickCheck)
import Check.Producer as P
import Check.Test
import RunLengthEncoding exposing (decode, encode)
import String as S
import Char


{-
   Currently disabled until elm-check is updated to support Elm 0.17

   Welcome! This is a property based test which will generate a bunch of random
   test cases in an attempt to find edge cases in your solution. If all goes well,
   any code that passes the regular tests should be fine here as well. If it goes
   less well, this should hopefully narrow the failure down to a useful test case.

   Good luck!
-}


claims : Check.Claim
claims =
    suite "List Reverse"
        [ claim "Encoding and decoding yields the original string"
            `that` (\input -> decode (encode (S.concat input)))
            `is` S.concat
            `for` inputProducer
        ]


inputProducer : P.Producer (List String)
inputProducer =
    P.tuple ( P.rangeInt 0 1001, upperCaseLetter )
        |> P.convert (\( n, c ) -> S.repeat n (S.fromChar c))
            (\s ->
                ( S.length s
                , S.toList s |> List.head |> crashIfNothing
                )
            )
        |> P.list


upperCaseLetter : P.Producer Char
upperCaseLetter =
    P.filter Char.isUpper P.upperCaseChar


crashIfNothing : Maybe a -> a
crashIfNothing a =
    case a of
        Just a ->
            a

        Nothing ->
            Debug.crash "Nothing!"


propertyTests : ElmTest.Test
propertyTests =
    Check.Test.evidenceToTest (quickCheck claims)

Version data entries

322 entries across 322 versions & 1 rubygems

Version Path
trackler-2.2.1.104 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.103 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.102 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.101 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.100 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.99 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.98 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.97 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.96 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.95 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.94 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.93 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.92 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.91 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.90 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.89 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.88 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.87 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.86 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm
trackler-2.2.1.85 tracks/elm/exercises/run-length-encoding/RunLengthEncodingPropertyChecks.elm