package it.cavallium.strangedb.server; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import static org.junit.jupiter.api.Assertions.*; public class GetSetExistsTest { private Path path1; private Path path2; private Path path3; private DatabaseSimple db; @BeforeEach public void setUp() throws Exception { path1 = Files.createTempFile("db-tests-", ".db"); path2 = Files.createTempFile("db-tests-", ".db"); path3 = Files.createTempFile("db-tests-", ".db"); db = new DatabaseSimple(path1, path2, path3); } @Test public void shouldSetObject() throws IOException { assertTrue(db.exists("")); assertEquals(db.get(""), "{}"); db.set("", "{}"); assertTrue(db.exists("")); assertEquals(db.get(""), "{}"); db.set("value", "{}"); db.set("value.int", "12"); db.set("value.number", "12.13"); db.set("value.null", "null"); db.set("value.boolean", "true"); db.set("value.undefined", "undefined"); db.set("value.string", "\"test\""); db.set("value.array", "[1,2,3,4,5]"); db.set("value.object", "{a: 1, b: \"2\", c: [3], d: {}}"); } @Test public void shouldGetObject() throws IOException { db.set("", "{\n" + "\t\"value\": {\n" + "\t\t\"int\": 12,\n" + "\t\t\"number\": 12.13," + "nil: null,\n" + "\t\t\"boolean\": true,\n" + "\t\t\"string\": \"test\",\n" + "\t\t\"array\": [1,2,3,4],\n" + "\t\t\"object\": {\n" + "\t\t\t\"a\": 1,\n" + "\t\t\t\"b\": \"2\",\n" + "\t\t\t\"c\": [3],\n" + "\t\t\t\"d\": {}\n" + "\t\t}\n" + "\t}\n" + "}"); assertFalse(db.exists("random")); assertTrue(db.exists("value")); assertEquals("12", db.get("value.int")); assertEquals("12.13", db.get("value.number")); assertEquals("null", db.get("value.nil")); assertEquals("true", db.get("value.boolean")); assertEquals("\"test\"", db.get("value.string")); assertEquals("[1,2,3,4]", db.get("value.array")); assertEquals("1", db.get("value.object.a")); assertEquals("\"2\"", db.get("value.object.b")); assertEquals("[3]", db.get("value.object.c")); assertEquals("{}", db.get("value.object.d")); } @Test public void shouldGetSize() throws IOException { db.set("", "{array:[1,2,3,4,5], object: {a: 1, b: 2, c: 3}, string: \"test\"}"); assertEquals(5, db.size("array")); assertEquals(3, db.size("object")); assertThrows(NullPointerException.class, () -> db.size("test")); } @AfterEach public void tearDown() throws Exception { db.close(); Files.deleteIfExists(path1); Files.deleteIfExists(path2); Files.deleteIfExists(path3); } }