mirror of
https://github.com/correl/elm.git
synced 2025-03-07 04:35:48 -10:00
Add Sublist example and test
This commit is contained in:
parent
6072ca7ff8
commit
6917a05e8a
3 changed files with 58 additions and 1 deletions
23
Sublist/SublistExample.elm
Normal file
23
Sublist/SublistExample.elm
Normal file
|
@ -0,0 +1,23 @@
|
|||
module SublistExample where
|
||||
import List exposing (..)
|
||||
import String
|
||||
|
||||
sublist : List a -> List a -> String
|
||||
sublist alist blist =
|
||||
if alist == blist then "Equal" else
|
||||
if alist == [] then "Sublist" else
|
||||
if blist == [] then "Superlist" else
|
||||
if inList alist blist then "Superlist" else
|
||||
if inList blist alist then "Sublist" else "Unequal"
|
||||
|
||||
inList : List a -> List a -> Bool
|
||||
inList alist blist =
|
||||
let getLastInList sublist =
|
||||
case (List.tail sublist) of
|
||||
Just list -> list
|
||||
Nothing -> []
|
||||
|
||||
in
|
||||
if (List.length alist) < (List.length blist) then False else
|
||||
if (List.take (List.length blist) alist) == blist then True else
|
||||
inList (getLastInList alist) blist
|
33
Sublist/SublistTest.elm
Normal file
33
Sublist/SublistTest.elm
Normal file
|
@ -0,0 +1,33 @@
|
|||
module SublistTest where
|
||||
|
||||
-- TODO - remove example inclusion once Problem sets are ready to go live or CI is set up.
|
||||
|
||||
import ElmTest.Test exposing (test, Test, suite)
|
||||
import ElmTest.Assertion exposing (assert, assertEqual)
|
||||
import ElmTest.Runner.Element exposing (runDisplay)
|
||||
|
||||
import SublistExample exposing (sublist)
|
||||
|
||||
tests : Test
|
||||
tests = suite "Sublist Test Suite"
|
||||
[ test " empty equals empty" (assertEqual "Equal" (sublist [] [])),
|
||||
test "empty is a sublist of anything" (assertEqual "Sublist" (sublist [] [1,2])),
|
||||
test "anything is a superlist of empty" (assertEqual "Superlist" (sublist [1,2] [] )),
|
||||
test "1 is not 2" (assertEqual "Unequal" (sublist [1] [2])),
|
||||
test "compare larger equal lists" (assertEqual "Equal" (sublist [1, 1, 1] [1, 1, 1])),
|
||||
test "sublist at start" (assertEqual "Sublist" (sublist [1,2,3] [1,2,3,4,5])),
|
||||
test "sublist in the middle" (assertEqual "Sublist" (sublist [4,3,2] [5,4,3,2,1])),
|
||||
test "sublist at end" (assertEqual "Sublist" (sublist [3,4,5] [1,2,3,4,5])),
|
||||
test "partially matching sublist at start" (assertEqual "Sublist" (sublist [1,1,2] [1,1,1,2])),
|
||||
test "sublist early in huge list" (assertEqual "Sublist" (sublist [3,4,5] [1 .. 100000])),
|
||||
test "huge sublist not in list" (assertEqual "Unequal" (sublist [10 .. 100001] [1 .. 100000])),
|
||||
test "superlist at start" (assertEqual "Superlist" (sublist [1,2,3,4,5] [1,2,3])),
|
||||
test "superlist in middle" (assertEqual "Superlist" (sublist [5,4,3,2,1] [4,3,2])),
|
||||
test "superlist at end" (assertEqual "Superlist" (sublist [1,2,3,4,5] [3,4,5])),
|
||||
test "partially matching superlist at start" (assertEqual "Superlist" (sublist [1,1,1,2] [1,1,2])),
|
||||
test "superlist early in huge list" (assertEqual "Superlist" (sublist [1 .. 100000] [3,4,5])),
|
||||
test "recurring values sublist" (assertEqual "Sublist" (sublist [1,2,1,2,3] [1,2,3,1,2,1,2,3,2,1])),
|
||||
test "recurring values unequal" (assertEqual "Unequal" (sublist [1,2,1,2,3] [1,2,3,1,2,3,2,3,2,1]))
|
||||
]
|
||||
|
||||
main = runDisplay tests
|
|
@ -18,7 +18,8 @@
|
|||
"./exercises/raindrops",
|
||||
"./exercises/triangle",
|
||||
"Leap",
|
||||
"Accumulate"
|
||||
"Accumulate",
|
||||
"Sublist"
|
||||
],
|
||||
"exposed-modules": [],
|
||||
"dependencies": {
|
||||
|
|
Loading…
Add table
Reference in a new issue