/*
* $Id: BeanMixin.java 1075 2009-05-07 06:41:19Z lhoriman $
* $URL: https://subetha.googlecode.com/svn/branches/resin/rtest/src/org/subethamail/rtest/util/BeanMixin.java $
*/
package com.googlecode.objectify.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.persistence.Id;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.Objectify;
import com.googlecode.objectify.test.entity.Trivial;
/**
* Normally we run all tests with caching enabled. This lets us mix cached
* and uncached in batches to see what happens.
*
* @author Jeff Schnitzer <jeff@infohazard.org>
*/
public class CachingTests extends TestBase
{
/** */
@SuppressWarnings("unused")
private static Logger log = LoggerFactory.getLogger(CachingTests.class);
/** */
static class Uncached
{
@Id Long id;
String stuff;
}
/**
*/
@BeforeMethod
public void setUp()
{
super.setUp();
this.fact.register(Uncached.class);
}
/** */
@Test
public void testHeterogeneousBatch() throws Exception
{
Uncached un1 = new Uncached();
un1.stuff = "un1 stuff";
Uncached un2 = new Uncached();
un2.stuff = "un2 stuff";
Trivial triv1 = new Trivial("foo1", 5);
Trivial triv2 = new Trivial("foo2", 6);
List<Object> entities = new ArrayList<Object>();
entities.add(un1);
entities.add(triv1);
entities.add(un2);
entities.add(triv2);
Objectify ofy = this.fact.begin();
Map<Key<Object>, Object> keys = ofy.put(entities);
Map<Key<Object>, Object> fetched = ofy.get(keys.keySet());
assert fetched.size() == 4;
assert fetched.containsKey(this.fact.getKey(un1));
assert fetched.containsKey(this.fact.getKey(un2));
assert fetched.containsKey(this.fact.getKey(triv1));
assert fetched.containsKey(this.fact.getKey(triv2));
}
}