72 lines
1.9 KiB
Gleam
72 lines
1.9 KiB
Gleam
import gleam/dynamic
|
|
import gleam/json
|
|
import gleeunit
|
|
import gleeunit/should
|
|
import plinth/javascript/storage
|
|
import varasto
|
|
|
|
pub fn main() {
|
|
gleeunit.main()
|
|
}
|
|
|
|
pub fn get_set_test() {
|
|
use <- run()
|
|
let assert Ok(local) = storage.local()
|
|
let s = varasto.new(local, int_list_reader(), int_list_writer())
|
|
should.be_ok(varasto.set(s, "Foo", [1, 2, 3]))
|
|
should.equal(varasto.get(s, "Foo"), Ok([1, 2, 3]))
|
|
}
|
|
|
|
pub fn set_limit_test() {
|
|
use <- run()
|
|
let assert Ok(local) = storage.local()
|
|
let s = varasto.new(local, str_reader(), str_writer())
|
|
should.be_ok(varasto.set(s, "Foo1", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo2", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo3", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo4", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo5", "Bar"))
|
|
should.be_error(varasto.set(s, "Foo6", "Bar"))
|
|
}
|
|
|
|
pub fn remove_test() {
|
|
use <- run()
|
|
let assert Ok(local) = storage.local()
|
|
let s = varasto.new(local, str_reader(), str_writer())
|
|
should.equal(varasto.remove(s, "not here"), Nil)
|
|
should.be_ok(varasto.set(s, "Foo", "Bar"))
|
|
should.equal(varasto.remove(s, "Foo"), Nil)
|
|
should.be_error(varasto.get(s, "Foo"))
|
|
}
|
|
|
|
pub fn clear_test() {
|
|
use <- run()
|
|
let assert Ok(session) = storage.session()
|
|
let s = varasto.new(session, str_reader(), str_writer())
|
|
should.be_ok(varasto.set(s, "Foo1", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo2", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo3", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo4", "Bar"))
|
|
should.be_ok(varasto.set(s, "Foo5", "Bar"))
|
|
varasto.clear(s)
|
|
should.equal(storage.length(session), 0)
|
|
}
|
|
|
|
fn int_list_reader() {
|
|
dynamic.list(dynamic.int)
|
|
}
|
|
|
|
fn int_list_writer() {
|
|
fn(val: List(Int)) { json.array(val, json.int) }
|
|
}
|
|
|
|
fn str_reader() {
|
|
dynamic.string
|
|
}
|
|
|
|
fn str_writer() {
|
|
fn(val: String) { json.string(val) }
|
|
}
|
|
|
|
@external(javascript, "./storage_test_ffi.mjs", "runWithMockStorage")
|
|
fn run(callback: fn() -> a) -> Nil
|