module Test.Char exposing (tests) import Basics exposing (..) import Char exposing (..) import List import Test exposing (..) import Expect lower = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] upper = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' ] dec = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ] oct = List.take 8 dec hexLower = List.take 6 lower hexUpper = List.take 6 upper hex = List.append hexLower hexUpper |> List.append dec lowerCodes = List.range 97 (97 + List.length lower - 1) upperCodes = List.range 65 (65 + List.length upper - 1) decCodes = List.range 48 (48 + List.length dec - 1) oneOf : List a -> a -> Bool oneOf = flip List.member tests : Test tests = describe "Char" [ describe "toCode" [ test "a-z" <| \() -> Expect.equal (lowerCodes) (List.map toCode lower) , test "A-Z" <| \() -> Expect.equal (upperCodes) (List.map toCode upper) , test "0-9" <| \() -> Expect.equal (decCodes) (List.map toCode dec) ] , describe "fromCode" [ test "a-z" <| \() -> Expect.equal (lower) (List.map fromCode lowerCodes) , test "A-Z" <| \() -> Expect.equal (upper) (List.map fromCode upperCodes) , test "0-9" <| \() -> Expect.equal (dec) (List.map fromCode decCodes) ] , describe "toLocaleLower" [ test "a-z" <| \() -> Expect.equal (lower) (List.map toLocaleLower lower) , test "A-Z" <| \() -> Expect.equal (lower) (List.map toLocaleLower upper) , test "0-9" <| \() -> Expect.equal (dec) (List.map toLocaleLower dec) ] , describe "toLocaleUpper" [ test "a-z" <| \() -> Expect.equal (upper) (List.map toLocaleUpper lower) , test "A-Z" <| \() -> Expect.equal (upper) (List.map toLocaleUpper upper) , test "0-9" <| \() -> Expect.equal (dec) (List.map toLocaleUpper dec) ] , describe "toLower" [ test "a-z" <| \() -> Expect.equal (lower) (List.map toLower lower) , test "A-Z" <| \() -> Expect.equal (lower) (List.map toLower upper) , test "0-9" <| \() -> Expect.equal (dec) (List.map toLower dec) ] , describe "toUpper" [ test "a-z" <| \() -> Expect.equal (upper) (List.map toUpper lower) , test "A-Z" <| \() -> Expect.equal (upper) (List.map toUpper upper) , test "0-9" <| \() -> Expect.equal (dec) (List.map toUpper dec) ] , describe "isLower" [ test "a-z" <| \() -> Expect.equal (True) (List.all isLower lower) , test "A-Z" <| \() -> Expect.equal (False) (List.any isLower upper) , test "0-9" <| \() -> Expect.equal (False) (List.any isLower dec) ] , describe "isUpper" [ test "a-z" <| \() -> Expect.equal (False) (List.any isUpper lower) , test "A-Z" <| \() -> Expect.equal (True) (List.all isUpper upper) , test "0-9" <| \() -> Expect.equal (False) (List.any isUpper dec) ] , describe "isDigit" [ test "a-z" <| \() -> Expect.equal (False) (List.any isDigit lower) , test "A-Z" <| \() -> Expect.equal (False) (List.any isDigit upper) , test "0-9" <| \() -> Expect.equal (True) (List.all isDigit dec) ] , describe "isHexDigit" [ test "a-z" <| \() -> Expect.equal (List.map (oneOf hex) lower) (List.map isHexDigit lower) , test "A-Z" <| \() -> Expect.equal (List.map (oneOf hex) upper) (List.map isHexDigit upper) , test "0-9" <| \() -> Expect.equal (True) (List.all isHexDigit dec) ] , describe "isOctDigit" [ test "a-z" <| \() -> Expect.equal (False) (List.any isOctDigit lower) , test "A-Z" <| \() -> Expect.equal (False) (List.any isOctDigit upper) , test "0-9" <| \() -> Expect.equal (List.map (oneOf oct) dec) (List.map isOctDigit dec) ] ]