package nebula.data.impl;
import junit.framework.TestCase;
import nebula.data.DataRepos;
import nebula.data.DataStore;
import nebula.data.Entity;
import nebula.lang.SystemTypeLoader;
public class PersistenceMemTest extends TestCase {
DataRepos p;
DataStore<Entity> store;
protected void setUp() throws Exception {
p = new DefaultDataRepos(new TypeDatastore(new SystemTypeLoader()));
store = p.define(String.class, Entity.class, "Person");
}
protected void tearDown() throws Exception {
super.tearDown();
}
public final void testDefine() {
store = p.define(String.class, Entity.class, "Person");
assertNotNull(store);
// assertEquals("Person", store.getID());
Entity v = new EditableEntity();
assertNotNull(v);
v.put("Name", "wangshilian");
assertEquals(true, v.isDirty());
assertEquals("wangshilian", v.get("Name"));
assertEquals(null, ((EditableEntity) v).source);
store.flush();
assertEquals(true, v.isDirty());
// assertEquals("wangshilian", v.get("ID"));
assertEquals("wangshilian", v.get("Name"));
assertEquals(null, ((EditableEntity) v).source);
store.add(v);
store.flush();
assertEquals(false, v.isDirty());
assertEquals("wangshilian", v.get("Name"));
assertEquals("wangshilian", store.get("wangshilian").getID());
v.put("length", "120");
assertEquals(true, v.isDirty());
assertEquals("120", v.get("length"));
assertEquals(null, store.get("wangshilian").get("length"));
store.flush();
assertEquals(false, v.isDirty());
assertEquals("120", v.get("length"));
assertEquals("120", store.get("wangshilian").get("length"));
v.put("length", "180");
assertEquals(true, v.isDirty());
assertEquals("180", v.get("length"));
assertEquals("120", store.get("wangshilian").get("length"));
store.clearChanges();
store.flush();
assertEquals(true, v.isDirty());
assertEquals("180", v.get("length"));
assertEquals("120", store.get("wangshilian").get("length"));
store.add(v);
store.flush();
assertEquals(false, v.isDirty());
assertEquals("180", v.get("length"));
assertEquals("180", store.get("wangshilian").get("length"));
}
}