source: bidspace/src/test/java/geniusweb/bidspace/BidsWithUtilityTest.java@ 2

Last change on this file since 2 was 2, checked in by bart, 5 years ago

Added new parties : linear, hardliner, conceder, boulware

File size: 3.5 KB
Line 
1package geniusweb.bidspace;
2
3import static org.junit.Assert.assertEquals;
4import static org.mockito.Matchers.any;
5import static org.mockito.Mockito.mock;
6import static org.mockito.Mockito.when;
7
8import java.io.IOException;
9import java.math.BigDecimal;
10import java.math.BigInteger;
11import java.nio.file.Files;
12import java.nio.file.Paths;
13import java.util.Collection;
14import java.util.HashMap;
15import java.util.LinkedList;
16import java.util.Map;
17
18import org.junit.Before;
19import org.junit.Test;
20
21import com.fasterxml.jackson.databind.ObjectMapper;
22
23import geniusweb.issuevalue.Bid;
24import geniusweb.issuevalue.DiscreteValue;
25import geniusweb.issuevalue.DiscreteValueSet;
26import geniusweb.issuevalue.Domain;
27import geniusweb.issuevalue.NumberValue;
28import geniusweb.issuevalue.NumberValueSet;
29import geniusweb.issuevalue.ValueSet;
30import geniusweb.profile.Profile;
31import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;
32
33public class BidsWithUtilityTest {
34 private static final DiscreteValue I1V2 = new DiscreteValue("i1v2");
35 private static final DiscreteValue I1V1 = new DiscreteValue("i1v1");
36 private static final NumberValue I2V1 = new NumberValue("2.00");
37 private static final NumberValue I2V2 = new NumberValue("2.45");
38 private static final NumberValue I2V3 = new NumberValue("2.90");
39 private static final String DOMAINNAME = "testdomain";
40 private static final String ISSUE1 = "issue1";
41 private static final String ISSUE2 = "issue2";
42 private static final Map<String, ValueSet> issues = new HashMap<>();
43
44 private static ValueSet values1;
45 private static ValueSet values2;
46 private static final BigDecimal TWO = new BigDecimal("2");
47 private static final BigDecimal THREE = new BigDecimal("3");
48 private final static BigDecimal ZERO_1 = new BigDecimal("0.1"), ZERO_2 = new BigDecimal("0.2"),
49 ZERO_3 = new BigDecimal("0.3");
50
51 private static Domain domain;
52 private final static ObjectMapper jackson = new ObjectMapper();
53
54 @Before
55 public void before() {
56 Collection<DiscreteValue> discretevalues1 = new LinkedList<>();
57 discretevalues1.add(I1V1);
58 discretevalues1.add(I1V2);
59 values1 = new DiscreteValueSet(discretevalues1);
60 issues.put(ISSUE1, values1);
61
62 values2 = new NumberValueSet(TWO, THREE, new BigDecimal("0.45"));
63 issues.put(ISSUE2, values2);
64
65 domain = new Domain(DOMAINNAME, issues);
66
67 }
68
69 @Test
70 public void smokeTest() {
71 LinearAdditiveUtilitySpace space = mock(LinearAdditiveUtilitySpace.class);
72 when(space.getDomain()).thenReturn(domain);
73 when(space.getUtility(any(Bid.class))).thenReturn(ZERO_2);
74 new BidsWithUtility(space, new BigDecimal("0.1"), new BigDecimal("0.3"));
75 }
76
77 @Test
78 public void testSelection() {
79 LinearAdditiveUtilitySpace space = mock(LinearAdditiveUtilitySpace.class);
80
81 when(space.getDomain()).thenReturn(domain);
82 when(space.getUtility(any(Bid.class))).thenReturn(ZERO_2);
83 BidsWithUtility selected = new BidsWithUtility(space, new BigDecimal("0.1"), new BigDecimal("0.3"));
84 assertEquals(new BigInteger("6"), selected.size());
85 }
86
87 @Test
88 public void testRealSpace() throws IOException {
89 String file1 = new String(Files.readAllBytes(Paths.get("src/test/resources/jobs/jobs1.json")));
90 LinearAdditiveUtilitySpace profile = (LinearAdditiveUtilitySpace) jackson.readValue(file1, Profile.class);
91 BidsWithUtility selected = new BidsWithUtility(profile, ZERO_1, ZERO_3);
92
93 assertEquals(new BigInteger("56"), selected.size());
94 for (Bid bid : selected) {
95 assertEquals(1, profile.getUtility(bid).compareTo(ZERO_1));
96 assertEquals(-1, profile.getUtility(bid).compareTo(ZERO_3));
97 }
98 }
99
100}
Note: See TracBrowser for help on using the repository browser.