53 lines
1.6 KiB
Gleam
53 lines
1.6 KiB
Gleam
import gleam/dict
|
|
import gleeunit
|
|
import gleeunit/should
|
|
import query
|
|
import tree
|
|
|
|
pub fn main() {
|
|
gleeunit.main()
|
|
}
|
|
|
|
pub fn path_parse_test() {
|
|
".a.b.c" |> query.parse() |> should.equal(Ok(["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))
|
|
|
|
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(42)) |> Ok())
|
|
}
|