74 lines
2.5 KiB
Elm
74 lines
2.5 KiB
Elm
module SearchReplaceTest exposing (suite)
|
|
|
|
import Expect
|
|
import Pattern exposing (Token(..), fromString)
|
|
import Test exposing (Test, describe, test)
|
|
|
|
|
|
suite : Test
|
|
suite =
|
|
describe "SearchReplace"
|
|
[ describe "fromString"
|
|
[ test "parses a string with a joker" <|
|
|
\_ ->
|
|
let
|
|
actual : List Token
|
|
actual =
|
|
fromString "a*b"
|
|
|
|
expected : List Token
|
|
expected =
|
|
[ RawString "a", Joker, RawString "b" ]
|
|
in
|
|
Expect.equal expected actual
|
|
, test "parses a string without any joker" <|
|
|
\_ ->
|
|
let
|
|
actual : List Token
|
|
actual =
|
|
fromString "ab"
|
|
|
|
expected : List Token
|
|
expected =
|
|
[ RawString "ab" ]
|
|
in
|
|
Expect.equal expected actual
|
|
, test "parses a string with several jokers" <|
|
|
\_ ->
|
|
let
|
|
actual : List Token
|
|
actual =
|
|
fromString "ab*cd*"
|
|
|
|
expected : List Token
|
|
expected =
|
|
[ RawString "ab", Joker, RawString "cd", Joker ]
|
|
in
|
|
Expect.equal expected actual
|
|
, test "parses a string with a leading joker" <|
|
|
\_ ->
|
|
let
|
|
actual : List Token
|
|
actual =
|
|
fromString "*abcd"
|
|
|
|
expected : List Token
|
|
expected =
|
|
[ Joker, RawString "abcd" ]
|
|
in
|
|
Expect.equal expected actual
|
|
, test "escapes special chars" <|
|
|
\_ ->
|
|
let
|
|
actual : List Token
|
|
actual =
|
|
fromString ".[]()"
|
|
|
|
expected : List Token
|
|
expected =
|
|
--[ RawString "\\.\\[\\]\\(\\)" ]
|
|
[ RawString "\\.\\[\\]\\(\\)" ]
|
|
in
|
|
Expect.equal expected actual
|
|
]
|
|
]
|