module Tests exposing (..)

import Dict
import Etl
import Expect
import Test exposing (..)


tests : Test
tests =
    describe "Etl.transform"
        [ test "a single letter" <|
            \() ->
                Expect.equal
                    (Dict.fromList [ ( "a", 1 ) ])
                    (Etl.transform <|
                        Dict.fromList [ ( 1, [ "A" ] ) ]
                    )
        , skip <|
            test "single score with multiple letters" <|
                \() ->
                    Expect.equal
                        (Dict.fromList
                            [ ( "a", 1 )
                            , ( "e", 1 )
                            , ( "i", 1 )
                            , ( "o", 1 )
                            , ( "u", 1 )
                            ]
                        )
                        (Etl.transform <|
                            Dict.fromList
                                [ ( 1, [ "A", "E", "I", "O", "U" ] )
                                ]
                        )
        , skip <|
            test "multiple scores with multiple letters" <|
                \() ->
                    Expect.equal
                        (Dict.fromList
                            [ ( "a", 1 )
                            , ( "d", 2 )
                            , ( "e", 1 )
                            , ( "g", 2 )
                            ]
                        )
                        (Etl.transform <|
                            Dict.fromList
                                [ ( 1, [ "A", "E" ] )
                                , ( 2, [ "D", "G" ] )
                                ]
                        )
        , skip <|
            test "multiple scores with differing numbers of letters" <|
                \() ->
                    Expect.equal
                        (Dict.fromList
                            [ ( "a", 1 )
                            , ( "b", 3 )
                            , ( "c", 3 )
                            , ( "d", 2 )
                            , ( "e", 1 )
                            , ( "f", 4 )
                            , ( "g", 2 )
                            , ( "h", 4 )
                            , ( "i", 1 )
                            , ( "j", 8 )
                            , ( "k", 5 )
                            , ( "l", 1 )
                            , ( "m", 3 )
                            , ( "n", 1 )
                            , ( "o", 1 )
                            , ( "p", 3 )
                            , ( "q", 10 )
                            , ( "r", 1 )
                            , ( "s", 1 )
                            , ( "t", 1 )
                            , ( "u", 1 )
                            , ( "v", 4 )
                            , ( "w", 4 )
                            , ( "x", 8 )
                            , ( "y", 4 )
                            , ( "z", 10 )
                            ]
                        )
                        (Etl.transform <|
                            Dict.fromList
                                [ ( 1, [ "A", "E", "I", "O", "U", "L", "N", "R", "S", "T" ] )
                                , ( 2, [ "D", "G" ] )
                                , ( 3, [ "B", "C", "M", "P" ] )
                                , ( 4, [ "F", "H", "V", "W", "Y" ] )
                                , ( 5, [ "K" ] )
                                , ( 8, [ "J", "X" ] )
                                , ( 10, [ "Q", "Z" ] )
                                ]
                        )
        ]