strangedb/src/test/java/it/cavallium/strangedb/tests/EnhancedClassUpdate.java
2019-04-24 21:32:36 +02:00

63 lines
1.6 KiB
Java

package it.cavallium.strangedb.tests;
import it.cavallium.strangedb.database.DatabaseCore;
import it.cavallium.strangedb.java.database.DatabaseJava;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import static org.junit.Assert.assertEquals;
public class EnhancedClassUpdate {
private Path dir;
private DatabaseJava db;
@Before
public void setUp() throws Exception {
dir = Files.createTempDirectory("db-test");
db = new DatabaseJava(dir.resolve("a.db"), dir.resolve("b.db"));
db.registerClass(V2Class.class, 0);
db.registerClass(OldClass.class, 1);
OldClass root = db.loadRoot(OldClass::new);
root.field1 = "Abc";
root.field2 = 12;
root.field4 = 13;
db.close();
}
@Test
public void shouldUpdateClass() throws IOException {
db = new DatabaseJava(dir.resolve("a.db"), dir.resolve("b.db"));
db.registerClass(V2Class.class, 0);
db.registerClass(OldClass.class, 1);
V2Class root = db.loadRoot(V2Class::new, V2Class.class);
assertEquals(root.field4, "Abc");
assertEquals(root.field2, 12);
assertEquals(root.field1, 13L);
db.close();
}
@After
public void tearDown() throws Exception {
deleteDirectoryRecursion(dir);
}
void deleteDirectoryRecursion(Path path) throws IOException {
if (Files.isDirectory(path, LinkOption.NOFOLLOW_LINKS)) {
try (DirectoryStream<Path> entries = Files.newDirectoryStream(path)) {
for (Path entry : entries) {
deleteDirectoryRecursion(entry);
}
}
}
Files.delete(path);
}
}