82 lines
2.5 KiB
Gleam
82 lines
2.5 KiB
Gleam
import config
|
|
import gleam/dict
|
|
import gleeunit
|
|
import gleeunit/should
|
|
import json_serde
|
|
import query
|
|
import tree
|
|
|
|
pub fn main() {
|
|
gleeunit.main()
|
|
}
|
|
|
|
pub fn path_parse_test() {
|
|
"root.a.b.c"
|
|
|> query.parse_path()
|
|
|> should.equal(Ok(#("root", ["a", "b", "c"])))
|
|
}
|
|
|
|
pub fn kv_test() {
|
|
let tree = tree.new()
|
|
let assert Ok(tree) = query.set(tree, ["a"], tree.String("foo"))
|
|
let assert Ok(tree) = query.set(tree, ["b"], tree.Int(42))
|
|
let assert Ok(tree) = query.set(tree, ["c"], tree.Float(12.34))
|
|
let assert Ok(tree) = query.set(tree, ["d"], tree.Bool(False))
|
|
let assert Ok(tree) = query.set(tree, ["e"], tree.Null)
|
|
|
|
query.get(tree, ["a"], False)
|
|
|> should.equal(tree.Leaf(tree.String("foo")) |> Ok())
|
|
query.get(tree, ["b"], False)
|
|
|> should.equal(tree.Leaf(tree.Int(42)) |> Ok())
|
|
query.get(tree, ["c"], False)
|
|
|> should.equal(tree.Leaf(tree.Float(12.34)) |> Ok())
|
|
query.get(tree, ["d"], False)
|
|
|> should.equal(tree.Leaf(tree.Bool(False)) |> Ok())
|
|
query.get(tree, ["e"], False)
|
|
|> should.equal(tree.Leaf(tree.Null) |> Ok())
|
|
}
|
|
|
|
pub fn tree_test() {
|
|
let tree = tree.new()
|
|
let assert Ok(tree) =
|
|
query.set(tree, ["a", "b", "c", "d"], tree.String("foo"))
|
|
let assert Ok(tree) = query.set(tree, ["a", "b2", "c"], tree.String("bar"))
|
|
let assert Ok(tree) = query.set(tree, ["a", "b"], tree.String("new foo"))
|
|
let assert Ok(tree) = query.set(tree, ["a2", "b3"], tree.Int(42))
|
|
let assert Ok(tree) = query.set(tree, ["a2", "b3"], tree.Int(43))
|
|
|
|
query.get(tree, ["a", "b"], False)
|
|
|> should.equal(tree.Leaf(tree.String("new foo")) |> Ok())
|
|
|
|
query.get(tree, ["a", "b2"], True)
|
|
|> should.equal(
|
|
tree.Node(dict.new() |> dict.insert("c", tree.Leaf(tree.String("bar"))))
|
|
|> Ok(),
|
|
)
|
|
query.get(tree, ["a2", "b3"], False)
|
|
|> should.equal(tree.Leaf(tree.Int(43)) |> Ok())
|
|
}
|
|
|
|
pub fn json_test() {
|
|
let tree = tree.new()
|
|
let assert Ok(tree) =
|
|
query.set(tree, ["a", "b", "c", "d"], tree.String("foo"))
|
|
let assert Ok(tree) = query.set(tree, ["a", "b2", "c"], tree.String("bar"))
|
|
let assert Ok(tree) = query.set(tree, ["a", "b"], tree.String("new foo"))
|
|
let assert Ok(tree) = query.set(tree, ["a2", "b3"], tree.Int(42))
|
|
let assert Ok(tree) = query.set(tree, ["a2", "b3"], tree.Int(43))
|
|
|
|
let json = tree |> json_serde.serialize
|
|
let assert Ok(decoded) = json |> json_serde.deserialize()
|
|
|
|
should.equal(tree, decoded)
|
|
}
|
|
|
|
pub fn config_test() {
|
|
let config = config.load("./test/vault.json")
|
|
should.equal(
|
|
config.Config("./snapshots", 12_345, ["tree1", "tree2", "tree3"]),
|
|
config,
|
|
)
|
|
}
|