summaryrefslogtreecommitdiff
path: root/cli/tests
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests')
-rw-r--r--cli/tests/unit/kv_test.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/cli/tests/unit/kv_test.ts b/cli/tests/unit/kv_test.ts
index 60cf11b8e..0af8f338d 100644
--- a/cli/tests/unit/kv_test.ts
+++ b/cli/tests/unit/kv_test.ts
@@ -219,6 +219,36 @@ dbTest("compare and mutate not exists", async (db) => {
assertEquals(res, null);
});
+dbTest("atomic mutation helper (sum)", async (db) => {
+ await db.set(["t"], new Deno.KvU64(42n));
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(42n));
+
+ await db.atomic().sum(["t"], 1n).commit();
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(43n));
+});
+
+dbTest("atomic mutation helper (min)", async (db) => {
+ await db.set(["t"], new Deno.KvU64(42n));
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(42n));
+
+ await db.atomic().min(["t"], 1n).commit();
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(1n));
+
+ await db.atomic().min(["t"], 2n).commit();
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(1n));
+});
+
+dbTest("atomic mutation helper (max)", async (db) => {
+ await db.set(["t"], new Deno.KvU64(42n));
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(42n));
+
+ await db.atomic().max(["t"], 41n).commit();
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(42n));
+
+ await db.atomic().max(["t"], 43n).commit();
+ assertEquals((await db.get(["t"])).value, new Deno.KvU64(43n));
+});
+
dbTest("compare multiple and mutate", async (db) => {
await db.set(["t1"], "1");
await db.set(["t2"], "2");