From 578b7d1db256d9a582cef45ae5d13d858a977416 Mon Sep 17 00:00:00 2001 From: Yuuta Liang Date: Thu, 26 Oct 2023 05:00:12 +0800 Subject: Add persistence Signed-off-by: Yuuta Liang --- src/test/persistence/FSTest.java | 50 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/test/persistence/FSTest.java (limited to 'src/test/persistence/FSTest.java') diff --git a/src/test/persistence/FSTest.java b/src/test/persistence/FSTest.java new file mode 100644 index 0000000..d8b8660 --- /dev/null +++ b/src/test/persistence/FSTest.java @@ -0,0 +1,50 @@ +package persistence; + +import model.asn1.exceptions.InvalidDBException; +import org.json.JSONObject; +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.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class FSTest { + @Test + void testReadFail() { + // open(2) - EPERM + assertThrows(InvalidDBException.class, () -> FS.read(Path.of("/dev/mem"))); + // open(2) - EISDIR + assertThrows(InvalidDBException.class, () -> FS.read(Path.of("/"))); + // open(2) - ENOENT + assertThrows(InvalidDBException.class, + () -> FS.read(Path.of("919123082901382901", "9210388888888190231"))); + // Cannot parse + assertThrows(InvalidDBException.class, () -> FS.read(Path.of("/dev/null"))); + assertThrows(InvalidDBException.class, () -> FS.read(Path.of("README.md"))); + } + + @Test + void testReadSuccess() { + assertTrue(FS.read(Path.of("data", "valid_full.json")).keySet().contains("serial")); + } + + @Test + void testWriteFail() { + // open(2) - EISDIR + assertThrows(IOException.class, () -> FS.write(Path.of("/"), new JSONObject())); + // open(2) - EPERM + assertThrows(IOException.class, () -> FS.write(Path.of("/dev/abc"), new JSONObject())); + // open(2) - ENOENT + assertThrows(IOException.class, () -> FS.write(Path.of("asdjiasoda", "jisdsaod"), new JSONObject())); + } + + @Test + void testWriteSuccess() throws IOException { + FS.write(Path.of("data", ".tmp"), new JSONObject()); + assertTrue(Files.exists(Path.of("data"))); + Files.delete(Path.of("data", ".tmp")); + } +} -- cgit v1.2.3