Compare commits
No commits in common. "5d2d9ddb736fcfb40d1ebc80fe142a1b46602af7" and "14058f4b696559b0898e6a8d7feb8aba96dce0ac" have entirely different histories.
5d2d9ddb73
...
14058f4b69
6
elm.json
6
elm.json
|
@ -3,7 +3,7 @@
|
||||||
"name": "noordstar/elm-matrix-sdk-beta",
|
"name": "noordstar/elm-matrix-sdk-beta",
|
||||||
"summary": "Matrix SDK for instant communication. Unstable beta version for testing only.",
|
"summary": "Matrix SDK for instant communication. Unstable beta version for testing only.",
|
||||||
"license": "EUPL-1.1",
|
"license": "EUPL-1.1",
|
||||||
"version": "2.0.0",
|
"version": "1.0.0",
|
||||||
"exposed-modules": [
|
"exposed-modules": [
|
||||||
"Matrix",
|
"Matrix",
|
||||||
"Matrix.Settings",
|
"Matrix.Settings",
|
||||||
|
@ -29,7 +29,5 @@
|
||||||
"elm/time": "1.0.0 <= v < 2.0.0",
|
"elm/time": "1.0.0 <= v < 2.0.0",
|
||||||
"miniBill/elm-fast-dict": "1.0.0 <= v < 2.0.0"
|
"miniBill/elm-fast-dict": "1.0.0 <= v < 2.0.0"
|
||||||
},
|
},
|
||||||
"test-dependencies": {
|
"test-dependencies": {}
|
||||||
"elm-explorations/test": "2.1.2 <= v < 3.0.0"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@ will assume until overriden by the user.
|
||||||
-}
|
-}
|
||||||
currentVersion : String
|
currentVersion : String
|
||||||
currentVersion =
|
currentVersion =
|
||||||
"beta 2.0.0"
|
"beta 1.0.0"
|
||||||
|
|
||||||
|
|
||||||
{-| The default device name that is being communicated with the Matrix API.
|
{-| The default device name that is being communicated with the Matrix API.
|
||||||
|
|
|
@ -1,143 +0,0 @@
|
||||||
module Context exposing (..)
|
|
||||||
|
|
||||||
import Expect
|
|
||||||
import Fuzz exposing (Fuzzer)
|
|
||||||
import Internal.Config.Leaks as Leaks
|
|
||||||
import Internal.Values.Context as Context exposing (Context)
|
|
||||||
import Json.Decode as D
|
|
||||||
import Json.Encode as E
|
|
||||||
import Test exposing (..)
|
|
||||||
|
|
||||||
|
|
||||||
fuzzer : Fuzzer Context
|
|
||||||
fuzzer =
|
|
||||||
let
|
|
||||||
maybeString : Fuzzer (Maybe String)
|
|
||||||
maybeString =
|
|
||||||
Fuzz.maybe Fuzz.string
|
|
||||||
in
|
|
||||||
Fuzz.map7 Context
|
|
||||||
maybeString
|
|
||||||
maybeString
|
|
||||||
maybeString
|
|
||||||
maybeString
|
|
||||||
maybeString
|
|
||||||
maybeString
|
|
||||||
(Fuzz.maybe <| Fuzz.list Fuzz.string)
|
|
||||||
|
|
||||||
|
|
||||||
{-| If a leak is spotted, make sure to change the leaking value and then test
|
|
||||||
with the same seed to ensure it is not a (tiny) coincidence and a leak is in
|
|
||||||
fact coming through.
|
|
||||||
-}
|
|
||||||
leaks : Test
|
|
||||||
leaks =
|
|
||||||
describe "No leaks allowed"
|
|
||||||
[ fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Access token"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setAccessToken value
|
|
||||||
|> Context.getAccessToken
|
|
||||||
|> Expect.notEqual Leaks.accessToken
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Base URL"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setBaseUrl value
|
|
||||||
|> Context.getBaseUrl
|
|
||||||
|> Expect.notEqual Leaks.baseUrl
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Transaction"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setTransaction value
|
|
||||||
|> Context.getTransaction
|
|
||||||
|> Expect.notEqual Leaks.transaction
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
(Fuzz.list Fuzz.string)
|
|
||||||
"Versions"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setVersions value
|
|
||||||
|> Context.getVersions
|
|
||||||
|> Expect.notEqual Leaks.versions
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
apiContext : Test
|
|
||||||
apiContext =
|
|
||||||
describe "Verify writing info"
|
|
||||||
[ fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Access token"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setAccessToken value
|
|
||||||
|> Context.getAccessToken
|
|
||||||
|> Expect.equal value
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Base URL"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setBaseUrl value
|
|
||||||
|> Context.getBaseUrl
|
|
||||||
|> Expect.equal value
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Transaction"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setTransaction value
|
|
||||||
|> Context.getTransaction
|
|
||||||
|> Expect.equal value
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
(Fuzz.list Fuzz.string)
|
|
||||||
"Versions"
|
|
||||||
(\context value ->
|
|
||||||
context
|
|
||||||
|> Context.apiFormat
|
|
||||||
|> Context.setVersions value
|
|
||||||
|> Context.getVersions
|
|
||||||
|> Expect.equal value
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
json : Test
|
|
||||||
json =
|
|
||||||
describe "JSON encode + JSON decode"
|
|
||||||
[ test "Empty is {}"
|
|
||||||
(Context.init
|
|
||||||
|> Context.encode
|
|
||||||
|> E.encode 0
|
|
||||||
|> Expect.equal "{}"
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, fuzz fuzzer
|
|
||||||
"JSON recode"
|
|
||||||
(\context ->
|
|
||||||
context
|
|
||||||
|> Context.encode
|
|
||||||
|> D.decodeValue Context.decoder
|
|
||||||
|> Expect.equal (Ok context)
|
|
||||||
)
|
|
||||||
]
|
|
275
tests/Iddict.elm
275
tests/Iddict.elm
|
@ -1,275 +0,0 @@
|
||||||
module Iddict exposing (..)
|
|
||||||
|
|
||||||
import Expect
|
|
||||||
import Fuzz exposing (Fuzzer)
|
|
||||||
import Internal.Tools.Iddict as Iddict exposing (Iddict)
|
|
||||||
import Json.Decode as D
|
|
||||||
import Json.Encode as E
|
|
||||||
import Test exposing (..)
|
|
||||||
|
|
||||||
|
|
||||||
fuzzer : Fuzzer a -> Fuzzer (Iddict a)
|
|
||||||
fuzzer fuz =
|
|
||||||
fuz
|
|
||||||
|> Fuzz.pair Fuzz.bool
|
|
||||||
|> Fuzz.list
|
|
||||||
|> Fuzz.map
|
|
||||||
(\items ->
|
|
||||||
List.foldl
|
|
||||||
(\( rm, item ) dict ->
|
|
||||||
case Iddict.insert item dict of
|
|
||||||
( key, d ) ->
|
|
||||||
if rm then
|
|
||||||
Iddict.remove key d
|
|
||||||
|
|
||||||
else
|
|
||||||
d
|
|
||||||
)
|
|
||||||
Iddict.empty
|
|
||||||
items
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
empty : Test
|
|
||||||
empty =
|
|
||||||
describe "empty"
|
|
||||||
[ test "isEmpty"
|
|
||||||
(Iddict.empty
|
|
||||||
|> Iddict.isEmpty
|
|
||||||
|> Expect.equal True
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"No members"
|
|
||||||
(\i ->
|
|
||||||
Iddict.empty
|
|
||||||
|> Iddict.member i
|
|
||||||
|> Expect.equal False
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"Get gets Nothing"
|
|
||||||
(\i ->
|
|
||||||
Iddict.empty
|
|
||||||
|> Iddict.get i
|
|
||||||
|> Expect.equal Nothing
|
|
||||||
)
|
|
||||||
, test "Size = 0"
|
|
||||||
(Iddict.empty
|
|
||||||
|> Iddict.size
|
|
||||||
|> Expect.equal 0
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, test "No keys"
|
|
||||||
(Iddict.empty
|
|
||||||
|> Iddict.keys
|
|
||||||
|> Expect.equal []
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, test "No values"
|
|
||||||
(Iddict.empty
|
|
||||||
|> Iddict.values
|
|
||||||
|> Expect.equal []
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, test "JSON encode -> decode -> empty"
|
|
||||||
(Iddict.empty
|
|
||||||
|> Iddict.encode identity
|
|
||||||
|> D.decodeValue (Iddict.decoder D.value)
|
|
||||||
|> Expect.equal (Ok Iddict.empty)
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, test "JSON encode"
|
|
||||||
(Iddict.empty
|
|
||||||
|> Iddict.encode identity
|
|
||||||
|> E.encode 0
|
|
||||||
|> Expect.equal "{\"cursor\":0,\"dict\":{}}"
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
, test "JSON decode"
|
|
||||||
("{\"cursor\":0,\"dict\":{}}"
|
|
||||||
|> D.decodeString (Iddict.decoder D.value)
|
|
||||||
|> Expect.equal (Ok Iddict.empty)
|
|
||||||
|> always
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
singleton : Test
|
|
||||||
singleton =
|
|
||||||
let
|
|
||||||
singleFuzzer : Fuzzer (Iddict Int)
|
|
||||||
singleFuzzer =
|
|
||||||
Fuzz.map
|
|
||||||
(\i ->
|
|
||||||
Iddict.singleton i
|
|
||||||
|> Tuple.second
|
|
||||||
)
|
|
||||||
Fuzz.int
|
|
||||||
in
|
|
||||||
describe "singleton"
|
|
||||||
[ fuzz singleFuzzer
|
|
||||||
"not isEmpty"
|
|
||||||
(\single ->
|
|
||||||
single
|
|
||||||
|> Iddict.isEmpty
|
|
||||||
|> Expect.equal False
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"singleton == insert empty"
|
|
||||||
(\i ->
|
|
||||||
Iddict.empty
|
|
||||||
|> Iddict.insert i
|
|
||||||
|> Expect.equal (Iddict.singleton i)
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"First item is key 0"
|
|
||||||
(\i ->
|
|
||||||
Iddict.singleton i
|
|
||||||
|> Tuple.first
|
|
||||||
|> Expect.equal 0
|
|
||||||
)
|
|
||||||
, fuzz singleFuzzer
|
|
||||||
"Key 0 is member"
|
|
||||||
(\single ->
|
|
||||||
single
|
|
||||||
|> Iddict.member 0
|
|
||||||
|> Expect.equal True
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"Key 0 get returns Just value"
|
|
||||||
(\i ->
|
|
||||||
Iddict.singleton i
|
|
||||||
|> Tuple.second
|
|
||||||
|> Iddict.get 0
|
|
||||||
|> Expect.equal (Just i)
|
|
||||||
)
|
|
||||||
, fuzz singleFuzzer
|
|
||||||
"Size == 1"
|
|
||||||
(\single ->
|
|
||||||
single
|
|
||||||
|> Iddict.size
|
|
||||||
|> Expect.equal 1
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"Only key 0"
|
|
||||||
(\i ->
|
|
||||||
Iddict.singleton i
|
|
||||||
|> Tuple.second
|
|
||||||
|> Iddict.keys
|
|
||||||
|> Expect.equal [ 0 ]
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"Only value value"
|
|
||||||
(\i ->
|
|
||||||
Iddict.singleton i
|
|
||||||
|> Tuple.second
|
|
||||||
|> Iddict.values
|
|
||||||
|> Expect.equal [ i ]
|
|
||||||
)
|
|
||||||
, fuzz singleFuzzer
|
|
||||||
"JSON encode -> decode -> singleton"
|
|
||||||
(\single ->
|
|
||||||
single
|
|
||||||
|> Iddict.encode E.int
|
|
||||||
|> D.decodeValue (Iddict.decoder D.int)
|
|
||||||
|> Expect.equal (Ok single)
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"JSON encode"
|
|
||||||
(\i ->
|
|
||||||
Iddict.singleton i
|
|
||||||
|> Tuple.second
|
|
||||||
|> Iddict.encode E.int
|
|
||||||
|> E.encode 0
|
|
||||||
|> Expect.equal ("{\"cursor\":1,\"dict\":{\"0\":" ++ String.fromInt i ++ "}}")
|
|
||||||
)
|
|
||||||
, fuzz Fuzz.int
|
|
||||||
"JSON decode"
|
|
||||||
(\i ->
|
|
||||||
("{\"cursor\":1,\"dict\":{\"0\":" ++ String.fromInt i ++ "}}")
|
|
||||||
|> D.decodeString (Iddict.decoder D.int)
|
|
||||||
|> Tuple.pair 0
|
|
||||||
|> Expect.equal (Iddict.singleton i |> Tuple.mapSecond Ok)
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
insert : Test
|
|
||||||
insert =
|
|
||||||
describe "insert"
|
|
||||||
[ fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"Add something"
|
|
||||||
(\d i ->
|
|
||||||
case Iddict.insert i d of
|
|
||||||
( key, dict ) ->
|
|
||||||
dict
|
|
||||||
|> Iddict.get key
|
|
||||||
|> Expect.equal (Just i)
|
|
||||||
)
|
|
||||||
, fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"Never isEmpty"
|
|
||||||
(\d i ->
|
|
||||||
Iddict.insert i d
|
|
||||||
|> Tuple.second
|
|
||||||
|> Iddict.isEmpty
|
|
||||||
|> Expect.equal False
|
|
||||||
)
|
|
||||||
, fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"New key"
|
|
||||||
(\d i ->
|
|
||||||
case Iddict.insert i d of
|
|
||||||
( key, dict ) ->
|
|
||||||
dict
|
|
||||||
|> Iddict.remove key
|
|
||||||
|> Iddict.insert i
|
|
||||||
|> (\( newKey, _ ) ->
|
|
||||||
Expect.notEqual key newKey
|
|
||||||
)
|
|
||||||
)
|
|
||||||
, fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"New dict"
|
|
||||||
(\d i ->
|
|
||||||
case Iddict.insert i d of
|
|
||||||
( key, dict ) ->
|
|
||||||
dict
|
|
||||||
|> Iddict.remove key
|
|
||||||
|> Iddict.insert i
|
|
||||||
|> (\( _, newDict ) ->
|
|
||||||
Expect.notEqual dict newDict
|
|
||||||
)
|
|
||||||
)
|
|
||||||
, fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"Inserted value is member"
|
|
||||||
(\d i ->
|
|
||||||
case Iddict.insert i d of
|
|
||||||
( key, dict ) ->
|
|
||||||
dict
|
|
||||||
|> Iddict.member key
|
|
||||||
|> Expect.equal True
|
|
||||||
)
|
|
||||||
, fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"Get inserted value"
|
|
||||||
(\d i ->
|
|
||||||
case Iddict.insert i d of
|
|
||||||
( key, dict ) ->
|
|
||||||
dict
|
|
||||||
|> Iddict.get key
|
|
||||||
|> Expect.equal (Just i)
|
|
||||||
)
|
|
||||||
, fuzz2 (fuzzer Fuzz.int)
|
|
||||||
Fuzz.int
|
|
||||||
"size = size + 1"
|
|
||||||
(\d i ->
|
|
||||||
case Iddict.insert i d of
|
|
||||||
( _, dict ) ->
|
|
||||||
Expect.equal
|
|
||||||
(Iddict.size dict)
|
|
||||||
(Iddict.size d + 1)
|
|
||||||
)
|
|
||||||
]
|
|
|
@ -1,53 +0,0 @@
|
||||||
module Vault exposing (..)
|
|
||||||
|
|
||||||
import Expect
|
|
||||||
import Fuzz exposing (Fuzzer)
|
|
||||||
import Internal.Config.Default as Default
|
|
||||||
import Internal.Values.Envelope as Envelope
|
|
||||||
import Matrix
|
|
||||||
import Matrix.Settings
|
|
||||||
import Test exposing (..)
|
|
||||||
import Types
|
|
||||||
|
|
||||||
|
|
||||||
fuzzer : Fuzzer Matrix.Vault
|
|
||||||
fuzzer =
|
|
||||||
Fuzz.constant <| Types.Vault <| Envelope.init {}
|
|
||||||
|
|
||||||
|
|
||||||
settings : Test
|
|
||||||
settings =
|
|
||||||
describe "Edit settings"
|
|
||||||
[ fuzz fuzzer
|
|
||||||
"Default device name"
|
|
||||||
(\vault ->
|
|
||||||
vault
|
|
||||||
|> Matrix.Settings.getDeviceName
|
|
||||||
|> Expect.equal Default.deviceName
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
Fuzz.string
|
|
||||||
"Set device name"
|
|
||||||
(\vault name ->
|
|
||||||
vault
|
|
||||||
|> Matrix.Settings.setDeviceName name
|
|
||||||
|> Matrix.Settings.getDeviceName
|
|
||||||
|> Expect.equal name
|
|
||||||
)
|
|
||||||
, fuzz fuzzer
|
|
||||||
"Default sync time"
|
|
||||||
(\vault ->
|
|
||||||
vault
|
|
||||||
|> Matrix.Settings.getSyncTime
|
|
||||||
|> Expect.equal Default.syncTime
|
|
||||||
)
|
|
||||||
, fuzz2 fuzzer
|
|
||||||
Fuzz.int
|
|
||||||
"Set sync time"
|
|
||||||
(\vault sync ->
|
|
||||||
vault
|
|
||||||
|> Matrix.Settings.setSyncTime sync
|
|
||||||
|> Matrix.Settings.getSyncTime
|
|
||||||
|> Expect.equal sync
|
|
||||||
)
|
|
||||||
]
|
|
Loading…
Reference in New Issue