package geniusweb.inform; import static org.junit.Assert.assertEquals; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import org.junit.Test; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import geniusweb.actions.PartyId; import geniusweb.actions.Vote; import geniusweb.actions.Votes; import geniusweb.issuevalue.Bid; import geniusweb.issuevalue.DiscreteValue; import tudelft.utilities.junit.GeneralTests; public class OptInTest extends GeneralTests { private Bid bid1 = new Bid("iss", new DiscreteValue("val1")); private Bid bid2 = new Bid("iss", new DiscreteValue("val2")); private PartyId partyA = new PartyId("partyA"); private PartyId partyB = new PartyId("partyB"); private final Vote voteA1 = new Vote(partyA, bid1, 2, 9); private final Vote voteB1 = new Vote(partyB, bid1, 2, 9); private final Vote voteB2 = new Vote(partyB, bid2, 2, 9); private Votes votesA = new Votes(partyA, Collections.singleton(voteA1)); private Votes votesB = new Votes(partyB, new HashSet<>(Arrays.asList(voteB1, voteB2))); private final OptIn optIn1 = new OptIn(Arrays.asList(votesA, votesB)); private final OptIn optIn1a = new OptIn(Arrays.asList(votesA, votesB)); private final OptIn optIn2 = new OptIn(Arrays.asList(votesA)); private String asJson = "{\"OptIn\":{\"votes\":[{\"Votes\":{\"actor\":\"partyA\",\"votes\":[{\"vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9}}]}},{\"Votes\":{\"actor\":\"partyB\",\"votes\":[{\"vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val2\"}},\"minPower\":2,\"maxPower\":9}},{\"vote\":{\"actor\":\"partyB\",\"bid\":{\"issuevalues\":{\"iss\":\"val1\"}},\"minPower\":2,\"maxPower\":9}}]}}]}}"; @Override public List> getGeneralTestData() { return Arrays.asList(Arrays.asList(optIn1, optIn1a), Arrays.asList(optIn2)); } @Override public List getGeneralTestStrings() { return Arrays.asList( "OptIn.*Votes.*Vote.*partyA.*iss.*val1.*2.*Votes.*Vote.*partyB.*iss.*val2.*.*2.*Vote.*partyB.*iss.*val1.*2.*", "OptIn.*Votes.*Vote.*partyA.*iss.*val.*2.*"); } @Test public void testSerialize() throws JsonProcessingException { ObjectMapper jackson = new ObjectMapper(); String json = jackson.writeValueAsString(optIn1); System.out.println(json); assertEquals(asJson, json); } @Test public void testDeserialize() throws JsonParseException, JsonMappingException, IOException { ObjectMapper jackson = new ObjectMapper(); Inform p = jackson.readValue(asJson, Inform.class); System.out.println(p); assertEquals(optIn1, p); } }