source: issuevalue/src/test/java/geniusweb/issuevalue/BidTest.java@ 31

Last change on this file since 31 was 31, checked in by bart, 3 years ago

New protocols Learn and APPLearn. Fixed memory leak.

File size: 4.9 KB
Line 
1package geniusweb.issuevalue;
2
3import static org.junit.Assert.assertEquals;
4import static org.mockito.Mockito.mock;
5
6import java.io.IOException;
7import java.math.BigDecimal;
8import java.util.Arrays;
9import java.util.HashMap;
10import java.util.LinkedList;
11import java.util.List;
12import java.util.Map;
13
14import org.junit.Test;
15
16import com.fasterxml.jackson.core.JsonProcessingException;
17import com.fasterxml.jackson.databind.ObjectMapper;
18
19import tudelft.utilities.junit.GeneralTests;
20
21public class BidTest extends GeneralTests<Bid> {
22
23 private final String asString1 = "{\"issuevalues\":{\"issue3\":9012345678901234567.89,\"issue2\":1,\"issue1\":\"b\"}}";
24 private final static String ISSUE1 = "issue1";
25 private final static Value VALUE1 = new DiscreteValue("value1");
26 private final static String ISSUE2 = "issue2";
27 private final static Value VALUE2 = new NumberValue("10");
28 private final static List<List<Bid>> list = new LinkedList<>();
29
30 private final static Bid bid, bid1, bidb, bidc;
31 static {
32 Map<String, Value> issuevalues = new HashMap<>();
33 issuevalues.put(ISSUE1, new DiscreteValue("b"));
34 issuevalues.put(ISSUE2, new NumberValue(BigDecimal.ONE));
35 issuevalues.put("issue3",
36 new NumberValue(new BigDecimal("9012345678901234567.89")));
37 bid = new Bid(issuevalues);
38
39 // different order but that shouldn't matter
40 Map<String, Value> issuevalues1 = new HashMap<>();
41 issuevalues1.put("issue3",
42 new NumberValue(new BigDecimal("9012345678901234567.89")));
43 issuevalues1.put(ISSUE2, new NumberValue(BigDecimal.ONE));
44 issuevalues1.put(ISSUE1, new DiscreteValue("b"));
45 bid1 = new Bid(issuevalues1);
46
47 Map<String, Value> issuevaluesb = new HashMap<>();
48 issuevaluesb.put(ISSUE1, new DiscreteValue("b"));
49 issuevaluesb.put(ISSUE2, new NumberValue(BigDecimal.ONE));
50 bidb = new Bid(issuevaluesb);
51
52 // bidc and bidd have values swapped, so different issuevalues.
53 Map<String, Value> issuevaluesc = new HashMap<>();
54 issuevaluesc.put(ISSUE1, VALUE1);
55 issuevaluesc.put(ISSUE2, VALUE2);
56 bidc = new Bid(issuevaluesc);
57
58 list.add(Arrays.asList(bid, bid1));
59 list.add(Arrays.asList(bidb));
60 list.add(Arrays.asList(bidc));
61 }
62
63 @Override
64 public List<List<Bid>> getGeneralTestData() {
65
66 return list;
67 }
68
69 @Override
70 public List<String> getGeneralTestStrings() {
71 return Arrays.asList(
72 "Bid\\{issue3=9012345678901234567.89, issue2=1, issue1=\"b\"\\}",
73 "Bid\\{issue2=1, issue1=\"b\"\\}",
74 "Bid\\{issue2=10, issue1=\"value1\"\\}"
75
76 );
77 }
78
79 @Test(expected = NullPointerException.class)
80 public void testNullConstructor() {
81 Map<String, Value> issuevalues = null;
82 Bid bid = new Bid(issuevalues);
83 }
84
85 @SuppressWarnings("unused")
86 @Test
87 public void bidTestSimple() {
88 Map<String, Value> issuevalues = new HashMap<>();
89 new Bid(issuevalues); // no issues, no values should be ok
90 }
91
92 @SuppressWarnings("unused")
93 @Test(expected = IllegalArgumentException.class)
94 public void bidTestNull() {
95 Map<String, Value> issuevalues = new HashMap<>();
96 issuevalues.put(ISSUE1, null);
97 new Bid(issuevalues); // smokes
98 }
99
100 @SuppressWarnings("unused")
101 @Test
102 public void bidTestOkIssueValue() {
103 Map<String, Value> issuevalues = new HashMap<>();
104 issuevalues.put(ISSUE1, mock(Value.class));
105
106 new Bid(issuevalues); // shouldn't smoke
107 }
108
109 @Test
110 public void testSerialize() throws JsonProcessingException {
111
112 ObjectMapper jackson = new ObjectMapper();
113 System.out.println(jackson.writeValueAsString(bid));
114 assertEquals(asString1, jackson.writeValueAsString(bid));
115
116 }
117
118 @Test
119 public void testDeserialize() throws IOException {
120
121 ObjectMapper jackson = new ObjectMapper();
122 Bid read = jackson.readValue(asString1, Bid.class);
123 assertEquals(bid, read);
124 }
125
126 @Test
127 public void testMerge() {
128 Map<String, Value> issuevalues = new HashMap<>();
129 issuevalues.put(ISSUE1, VALUE1);
130 Bid partial1 = new Bid(issuevalues);
131
132 issuevalues = new HashMap<>();
133 issuevalues.put(ISSUE2, VALUE2);
134 Bid partial2 = new Bid(issuevalues);
135
136 Bid mergedbid = partial1.merge(partial2);
137 assertEquals(bidc, mergedbid);
138 }
139
140 @Test(expected = IllegalArgumentException.class)
141 public void testMergeIssuesOverlap() {
142 Map<String, Value> issuevalues = new HashMap<>();
143 issuevalues.put(ISSUE1, VALUE1);
144 Bid partial1 = new Bid(issuevalues);
145
146 issuevalues = new HashMap<>();
147 issuevalues.put(ISSUE1, VALUE2);
148 Bid partial2 = new Bid(issuevalues);
149
150 partial1.merge(partial2);
151 }
152
153 @SuppressWarnings("unused")
154 @Test
155 public void smokeTestConstructor2() {
156 new Bid("issue", new DiscreteValue("dss"));
157 }
158
159 @SuppressWarnings("unused")
160 @Test
161 public void smokeTestConstructor2b() {
162 new Bid("issue", new NumberValue("0.5"));
163 }
164
165 @SuppressWarnings("unused")
166 @Test(expected = NullPointerException.class)
167 public void smokeTestConstructor2Null1() {
168 new Bid(null, new DiscreteValue("dss"));
169 }
170
171 @SuppressWarnings("unused")
172 @Test(expected = NullPointerException.class)
173 public void smokeTestConstructor2Null2() {
174 new Bid("issue", null);
175 }
176
177}
Note: See TracBrowser for help on using the repository browser.