@Test
public void testStringIntPairArrayTileSerialization() throws IOException {
TileSerializer<List<Pair<String, Integer>>> serializer = new StringIntPairArrayJsonSerializer();
TileIndex index = new TileIndex(0, 0, 0, 1, 1);
TileData<List<Pair<String, Integer>>> tile = new DenseTileData<List<Pair<String,Integer>>>(index);
List<Pair<String, Integer>> data = new ArrayList<Pair<String,Integer>>();
data.add(new Pair<String, Integer>("a", 1));
data.add(new Pair<String, Integer>("b", 2));
data.add(new Pair<String, Integer>("c", 3));
data.add(new Pair<String, Integer>("d", 4));
data.add(new Pair<String, Integer>("e", 5));
tile.setBin(0, 0, data);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
serializer.serialize(tile, baos);
baos.flush();
baos.close();
byte[] buffer = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(buffer);
TileData<List<Pair<String, Integer>>> result = serializer.deserialize(index, bais);
Assert.assertEquals(index, result.getDefinition());
List<Pair<String, Integer>> resultBin = result.getBin(0, 0);
Assert.assertEquals(data.size(), resultBin.size());
for (int i=0; i<data.size(); ++i) {
Assert.assertEquals(data.get(i), resultBin.get(i));
}
}