63 lines
1.6 KiB
Java
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);
|
|
}
|
|
}
|