{
Metaclass penClass = m_metadata.getMetaclass("AnimalPen");
Instance inst;
Collection data;
InstanceArrayList list;
OID oid;
data = (Collection)m_context.getMachine().eval(parse("(AnimalPenStore'data)"));
assertEquals(2, data.size());
inst = (Instance)penClass.invoke("new", new Object[]
{
new Pair(Symbol.define("name"), "Monkey pen"),
new Pair(Symbol.define("k1"), "ATTR_SRC"),
new Pair(Symbol.define("k2"), Primitive.createInteger(42))
});
data = (Collection)m_context.getMachine().eval(parse("(AnimalPenStore'data)"));
assertEquals(2, data.size());
assertNull(inst.getOID());
m_context.getUnitOfWork().commit();
data = (Collection)m_context.getMachine().eval(parse("(AnimalPenStore'data)"));
assertEquals(3, data.size());
assertEquals(2, inst.getOID().getCount());
assertEquals("ATTR_SRC", inst.getOID().getValue(0));
assertEquals(42, ((Integer)inst.getOID().getValue(1)).intValue());
assertEquals("ATTR_SRC", inst.getValue("k1"));
assertEquals(42, ((Integer)inst.getValue("k2")).intValue());
oid = (OID)m_context.getMachine().eval(parse("(car ((AnimalPenStore'data)'get 2))"));
assertEquals("ATTR_SRC", oid.getValue(0));
assertEquals(42, ((Integer)oid.getValue(1)).intValue());
list = (InstanceArrayList)penClass.invoke("read", new Object[] {
null, Pair.list(Symbol.EQ, Pair.attribute("name"), "Monkey pen"), null, null, null, null
});