package eu.dnetlib.iis.wf.export.actionmanager;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import eu.dnetlib.data.proto.KindProtos.Kind;
import eu.dnetlib.data.proto.OafProtos.Oaf;
import eu.dnetlib.data.proto.OafProtos.OafEntity;
import eu.dnetlib.data.proto.ResultProtos.Result;
import eu.dnetlib.data.proto.ResultProtos.Result.Context;
import eu.dnetlib.data.proto.ResultProtos.Result.Metadata;
import eu.dnetlib.data.proto.TypeProtos.Type;
public class ProtoBuffMergingTest {
@Test
public void testMergeArrays() throws Exception {
String contextId1 = "ctxId1";
String contextId2 = "ctxId2";
Oaf oaf1 = buildOaf(contextId1);
Oaf oaf2 = buildOaf(contextId2);
Oaf mergedBuilder = Oaf.newBuilder().mergeFrom(oaf1).mergeFrom(oaf2).build();
assertEquals(1, oaf1.getEntity().getResult().getMetadata().getContextCount());
assertEquals(1, oaf2.getEntity().getResult().getMetadata().getContextCount());
assertEquals(2, mergedBuilder.getEntity().getResult().getMetadata().getContextCount());
assertEquals(contextId1, mergedBuilder.getEntity().getResult().getMetadata().getContext(0).getId());
assertEquals(contextId2, mergedBuilder.getEntity().getResult().getMetadata().getContext(1).getId());
}
Oaf buildOaf(String contextId) {
Oaf.Builder oafBuilder = Oaf.newBuilder();
oafBuilder.setKind(Kind.entity);
oafBuilder.setLastupdatetimestamp(System.currentTimeMillis());
OafEntity.Builder entityBuilder = OafEntity.newBuilder();
entityBuilder.setId("id");
entityBuilder.setType(Type.result);
Result.Builder resultBuilder = Result.newBuilder();
Metadata.Builder metaBuilder = Metadata.newBuilder();
metaBuilder.addContext(Context.newBuilder().setId(contextId).build());
resultBuilder.setMetadata(metaBuilder.build());
entityBuilder.setResult(resultBuilder.build());
oafBuilder.setEntity(entityBuilder.build());
return oafBuilder.build();
}
}