package nl.tno.sensorstorm.particlemappertest;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import junit.framework.TestCase;
import nl.tno.sensorstorm.particlemapper.ParticleMapper;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
public class TestMapping extends TestCase {
public void testAutoMappedParticle() {
AutoMappedParticle p = new AutoMappedParticle();
p.id = "id";
p.intId = 14;
p.timestamp = 100;
p.map = new HashMap<>();
// Test fields
List<String> expected = Arrays.asList(new String[] { "timestamp",
"particleClass", "customNameForId", "intId", "map" });
Fields fields = ParticleMapper.getFields(p.getClass());
assertTrue(expected.equals(fields.toList()));
// Test particleToValues
Values values = ParticleMapper.particleToValues(p);
assertEquals(100l, values.get(0));
// idx 1 = class
assertEquals("id", values.get(2));
assertEquals(14, values.get(3));
assertEquals(new HashMap<>(), values.get(4));
// Test tupleToParticle
Tuple tuple = new MockTuple(fields, values);
AutoMappedParticle particle = ParticleMapper.tupleToParticle(tuple,
AutoMappedParticle.class);
assertEquals(p, particle);
// Test without providing class
assertEquals(p, ParticleMapper.tupleToParticle(tuple));
}
public void testSelfMappedParticle() {
SelfMappedParticle s = new SelfMappedParticle();
s.id = "id";
s.intId = 14;
s.timestamp = 100;
s.map = new HashMap<>();
// Test fields
List<String> expected = Arrays.asList(new String[] { "timestamp",
"customNameForId", "intId", "map" });
Fields fields = ParticleMapper.getFields(s.getClass());
assertTrue(expected.equals(fields.toList()));
// Test particleToValues
Values values = ParticleMapper.particleToValues(s);
assertEquals(100l, values.get(0));
assertEquals("id", values.get(1));
assertEquals(14, values.get(2));
assertEquals(new HashMap<>(), values.get(3));
// Test tupleToParticle
Tuple tuple = new MockTuple(fields, values);
SelfMappedParticle particle = ParticleMapper.tupleToParticle(tuple,
SelfMappedParticle.class);
assertEquals(s, particle);
// Test without providing class
assertEquals(s, ParticleMapper.tupleToParticle(tuple));
}
}