Integrate elm App with Tauri. Can navigate into source directory.
This commit is contained in:
commit
94003989ef
50 changed files with 41456 additions and 0 deletions
250
src-elm/tests/FileTest.elm
Normal file
250
src-elm/tests/FileTest.elm
Normal file
|
|
@ -0,0 +1,250 @@
|
|||
module FileTest exposing (suite)
|
||||
|
||||
import Expect
|
||||
import File exposing (File, FileStatus(..), extendSelectionToNext, extendSelectionToPrevious, selectNext, selectPrevious, selectSimilar, withStatus)
|
||||
import Fixtures exposing (filteredDir1, filteredDir2, filteredDir3, filteredDir4, filteredDir5, filteredDir6, filteredDir7, filteredDir8)
|
||||
import Iso8601
|
||||
import Json.Decode exposing (Decoder, decodeString)
|
||||
import Test exposing (Test, describe, test)
|
||||
import Time exposing (millisToPosix)
|
||||
|
||||
|
||||
suite : Test
|
||||
suite =
|
||||
describe "File module"
|
||||
[ test "selectNext selects the next file" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectNext
|
||||
[ filteredDir1
|
||||
, filteredDir2 |> withStatus Selected
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3 |> withStatus Selected
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "selectNext does nothing when the currently selected file is the last" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectNext expected
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5 |> withStatus Selected
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "selectNext selects the last file in a list when none is selected" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectNext
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5 |> withStatus Selected
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "selectPrevious selects the previous file in a list when there is one" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectPrevious
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4 |> withStatus Selected
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3 |> withStatus Selected
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "selectPrevious does nothing when the currently selected file is the first" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectPrevious expected
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1 |> withStatus Selected
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "selectPrevious selects the first file in a list when none is selected" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectPrevious
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1 |> withStatus Selected
|
||||
, filteredDir2
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "extendSelectionToNext selects the next file after the first selected" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
extendSelectionToNext
|
||||
[ filteredDir1
|
||||
, filteredDir2 |> withStatus Selected
|
||||
, filteredDir3
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir2 |> withStatus Selected
|
||||
, filteredDir3 |> withStatus Selected
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "extendSelectionToPrevious selects the file before the first selected" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
extendSelectionToPrevious
|
||||
[ filteredDir1
|
||||
, filteredDir2
|
||||
, filteredDir3 |> withStatus Selected
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir2 |> withStatus Selected
|
||||
, filteredDir3 |> withStatus Selected
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "selectSimilar selects the files with a name looking like the given one" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : List File
|
||||
actual =
|
||||
selectSimilar
|
||||
filteredDir6
|
||||
10
|
||||
[ filteredDir1
|
||||
, filteredDir6 |> withStatus Selected
|
||||
, filteredDir2
|
||||
, filteredDir7
|
||||
, filteredDir3
|
||||
, filteredDir8
|
||||
, filteredDir4 |> withStatus Selected
|
||||
, filteredDir5
|
||||
]
|
||||
|
||||
expected : List File
|
||||
expected =
|
||||
[ filteredDir1
|
||||
, filteredDir6 |> withStatus Selected
|
||||
, filteredDir2
|
||||
, filteredDir7 |> withStatus Selected
|
||||
, filteredDir3
|
||||
, filteredDir8 |> withStatus Selected
|
||||
, filteredDir4
|
||||
, filteredDir5
|
||||
]
|
||||
in
|
||||
Expect.equal expected actual
|
||||
, test "filerDecoder is able to decode a file descriptor" <|
|
||||
\_ ->
|
||||
let
|
||||
actual : File
|
||||
actual =
|
||||
"""
|
||||
{
|
||||
"DirPath": "/Users/pascal",
|
||||
"IsDir": true,
|
||||
"ModTime": "2025-12-16T19:43:08.307Z",
|
||||
"Mode": 16832,
|
||||
"Name": "Music",
|
||||
"Size": 256
|
||||
}
|
||||
"""
|
||||
|> decodeString File.fileDecoder
|
||||
|> Result.toMaybe
|
||||
|> Maybe.withDefault Fixtures.dir1
|
||||
|
||||
expected : File
|
||||
expected =
|
||||
{ parentPath = "/Users/pascal"
|
||||
, isDir = True
|
||||
, modTime = millisToPosix 1765914188307
|
||||
, mode = 16832
|
||||
, name = "Music"
|
||||
, satisfiesFilter = False
|
||||
, status = Unselected
|
||||
, size = 256
|
||||
}
|
||||
in
|
||||
Expect.equal expected actual
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue