package aQute.lib.persistentmap; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import aQute.lib.io.IO; import junit.framework.TestCase; public class PersistentMapTest extends TestCase { public void testSimple() throws Exception { File tmp = new File("tmp"); PersistentMap<String> pm = new PersistentMap<String>(new File(tmp, "simple"), String.class); try { assertNull(pm.put("abc", "def")); assertEquals("def", pm.get("abc")); pm.close(); PersistentMap<String> pm2 = new PersistentMap<String>(new File(tmp, "simple"), String.class); assertEquals("def", pm2.get("abc")); assertEquals(Arrays.asList("abc"), new ArrayList<String>(pm2.keySet())); for (Map.Entry<String,String> e : pm2.entrySet()) { e.setValue("XXX"); } assertEquals("XXX", pm2.get("abc")); pm2.close(); } finally { pm.close(); IO.delete(tmp); } } public static class X { public String abc; public int def; public List<String> list = new ArrayList<String>(); } public void testStructs() throws Exception { File tmp = new File("tmp"); PersistentMap<X> pm = new PersistentMap<X>(new File(tmp, "simple"), X.class); try { X x = new X(); x.abc = "def"; x.def = 5; x.list.add("abc"); assertNull(pm.put("abc", x)); pm.close(); PersistentMap<X> pm2 = new PersistentMap<X>(new File(tmp, "simple"), X.class); X x2 = pm2.get("abc"); assertEquals("def", x2.abc); assertEquals(5, x2.def); pm2.remove("abc"); assertEquals(0, pm2.size()); pm2.close(); } finally { pm.close(); IO.delete(tmp); } } }