Files
dllist/test/dllist_test.gleam
Gareth Pendleton 0fde06efe7
Some checks failed
test / test (push) Has been cancelled
feat: More rework
So the performance of this only surpasses list when you approach 100
items (and that is not including the need to traverse through the linked
list to find the insertion point) so this might be the last commit
2025-10-20 19:33:38 +01:00

62 lines
1.7 KiB
Gleam

import dllist
import gleam/dict
import startest
pub fn main() -> Nil {
startest.run(startest.default_config())
}
pub fn new_tests() {
startest.describe("new instance", [
startest.it("terminated list", fn() {
assert dllist.new() == dllist.DLList(1, 0, dict.from_list([]))
}),
startest.it("cyclic list", fn() {
assert dllist.new_cyclic() == dllist.CyclicList(1, 0, dict.from_list([]))
}),
])
}
pub fn is_empty_tests() {
startest.describe("is_emtpy", [
startest.it("terminated list", fn() {
assert dllist.is_empty(dllist.new())
assert !dllist.is_empty(dllist.new() |> dllist.insert(1))
}),
startest.it("cyclic list", fn() {
assert dllist.is_empty(dllist.new_cyclic())
assert !dllist.is_empty(dllist.new_cyclic() |> dllist.insert(1))
}),
])
}
pub fn from_list_tests() {
startest.describe("from_list", [
startest.it("terminated list", fn() {
assert dllist.is_empty(dllist.from_list([]))
assert !dllist.is_empty(dllist.from_list([1]))
assert dllist.from_list([1]) |> dllist.get == Ok(1)
assert dllist.from_list([1, 2, 3, 4]) |> dllist.get == Ok(4)
assert dllist.from_list([1]) |> dllist.to_list == [1]
assert dllist.from_list([1, 2, 3, 4]) |> dllist.to_list == [1, 2, 3, 4]
}),
startest.it("cyclic list", fn() {
assert dllist.is_empty(dllist.from_list_cyclic([]))
assert !dllist.is_empty(dllist.from_list_cyclic([1]))
assert dllist.from_list_cyclic([1]) |> dllist.get == Ok(1)
assert dllist.from_list_cyclic([1, 2, 3, 4]) |> dllist.get == Ok(4)
assert dllist.from_list_cyclic([1]) |> dllist.to_list == [1]
assert dllist.from_list_cyclic([1, 2, 3, 4]) |> dllist.to_list
== [4, 1, 2, 3]
}),
])
}