- Files:
-
- 66 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
/bidspace/pom.xml
r1 r3 42 42 <groupId>tudelft.utilities</groupId> 43 43 <artifactId>immutablelist</artifactId> 44 <version>1.0. 0</version>44 <version>1.0.1</version> 45 45 </dependency> 46 46 -
/exampleparties/pom.xml
r1 r3 18 18 <module>randomparty</module> 19 19 <module>randompartypy</module> 20 <module>timedependentparty</module> 21 <module>conceder</module> 22 <module>hardliner</module> 23 <module>boulware</module> 24 <module>linear</module> 20 25 </modules> 21 26 </project> -
/exampleparties/randomparty/pom.xml
r1 r3 54 54 <groupId>tudelft.utilities</groupId> 55 55 <artifactId>immutablelist</artifactId> 56 <version>1.0. 0</version>56 <version>1.0.1</version> 57 57 </dependency> 58 58 -
/exampleparties/randomparty/src/main/java/geniusweb/exampleparties/randomparty/RandomParty.java
r1 r3 23 23 import geniusweb.party.inform.Settings; 24 24 import geniusweb.party.inform.YourTurn; 25 import geniusweb.profile.PartialOrdering; 26 import geniusweb.profile.Profile; 25 27 import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace; 26 28 import geniusweb.profileconnection.ProfileConnectionFactory; … … 55 57 if (info instanceof Settings) { 56 58 Settings settings = (Settings) info; 57 this.profileint = ProfileConnectionFactory 58 .create(settings.getProfile().getURI(), getReporter()); 59 this.profileint = ProfileConnectionFactory.create(settings.getProfile().getURI(), getReporter()); 59 60 this.me = settings.getID(); 60 61 this.progress = settings.getProgress(); … … 80 81 public Capabilities getCapabilities() { 81 82 try { 82 return new Capabilities(new HashSet<>( 83 Arrays.asList(new ProtocolRef(new URI("SAOP"))))); 83 return new Capabilities(new HashSet<>(Arrays.asList(new ProtocolRef(new URI("SAOP"))))); 84 84 } catch (URISyntaxException e) { 85 getReporter().log(Level.SEVERE, "Failed to create capabilities URI", 86 e); 85 getReporter().log(Level.SEVERE, "Failed to create capabilities URI", e); 87 86 return null; 88 87 } … … 100 99 } else { 101 100 // for demo. Obviously full bids have higher util in general 102 AllPartialBidsList bidspace = new AllPartialBidsList( 103 profileint.getProfile().getDomain()); 101 AllPartialBidsList bidspace = new AllPartialBidsList(profileint.getProfile().getDomain()); 104 102 Bid bid = null; 105 103 for (int attempt = 0; attempt < 20 && !isGood(bid); attempt++) { … … 114 112 115 113 private boolean isGood(Bid bid) { 116 return bid != null 117 && ((LinearAdditiveUtilitySpace) profileint.getProfile()) 118 .getUtility(bid).doubleValue() > 0.6; 114 if (bid == null) 115 return false; 116 Profile profile = profileint.getProfile(); 117 if (profile instanceof LinearAdditiveUtilitySpace) { 118 return ((LinearAdditiveUtilitySpace) profile).getUtility(bid).doubleValue() > 0.6; 119 } 120 if (profile instanceof PartialOrdering) { 121 return ((PartialOrdering) profile).isPreferredOrEqual(bid, profile.getReservationBid()); 122 } 123 throw new IllegalArgumentException("Can not handle profile type " + profile.getClass()); 119 124 } 120 125 -
/exampleparties/randompartypy/pom.xml
r1 r3 47 47 <groupId>tudelft.utilities</groupId> 48 48 <artifactId>immutablelist</artifactId> 49 <version>1.0. 0</version>49 <version>1.0.1</version> 50 50 </dependency> 51 51 -
/exampleparties/randompartypy/src/main/resources/RandomParty.py
r1 r3 23 23 import geniusweb.party.DefaultParty as DefaultParty 24 24 import geniusweb.profile.Profile as Profile 25 import geniusweb.profile.PartialOrdering as PartialOrdering 25 26 import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace as LinearAdditiveUtilitySpace 26 27 import geniusweb.references.ProfileRef as ProfileRef … … 29 30 import geniusweb.profileconnection.ProfileInterface as ProfileInterface 30 31 import geniusweb.progress.ProgressRounds as ProgressRounds 32 31 33 32 34 import com.fasterxml.jackson.databind.ObjectMapper as ObjectMapper … … 92 94 93 95 def _isGood(self, bid): 94 return bid != None and self.profile.getProfile().getUtility(bid).doubleValue() > 0.6; 96 if bid == None: 97 return false 98 profile = self.profile.getProfile() 99 if isinstance(profile, LinearAdditiveUtilitySpace): 100 return profile.getUtility(bid).doubleValue() > 0.6; 101 if isinstance(profile, PartialOrdering): 102 return profile.isPreferredOrEqual(bid, profile.getReservationBid()) 103 raise Exception("Can not handle this type of profile") -
/issuevalue/pom.xml
r1 r3 92 92 <groupId>tudelft.utilities</groupId> 93 93 <artifactId>immutablelist</artifactId> 94 <version>1.0. 0</version>94 <version>1.0.1</version> 95 95 </dependency> 96 96 -
/issuevalue/src/test/java/geniusweb/issuevalue/DomainTest.java
r1 r3 21 21 import com.fasterxml.jackson.databind.ObjectMapper; 22 22 23 import geniusweb.issuevalue.Bid;24 import geniusweb.issuevalue.DiscreteValue;25 import geniusweb.issuevalue.DiscreteValueSet;26 import geniusweb.issuevalue.Domain;27 import geniusweb.issuevalue.NumberValue;28 import geniusweb.issuevalue.NumberValueSet;29 import geniusweb.issuevalue.ValueSet;30 23 import tudelft.utilities.junit.GeneralTests; 31 24 … … 38 31 private static final String ISSUE3 = "issue3"; 39 32 private static final ObjectMapper jackson = new ObjectMapper(); 40 private static final String domainstring = "{\"name\":\"testdomain\",\"issuesValues\":{\"issue2\":{\"range\":[ \"2\",\"3\",\"0.22\"]},\"issue1\":{\"values\":[\"i1v1\",\"i1v2\"]}}}";33 private static final String domainstring = "{\"name\":\"testdomain\",\"issuesValues\":{\"issue2\":{\"range\":[2,3,0.22]},\"issue1\":{\"values\":[\"i1v1\",\"i1v2\"]}}}"; 41 34 42 private static final String jobsstring = "{\"name\":\"jobs\"," 43 + "\"issuesValues\":{" 44 + "\"lease car\":{\"values\":[\"yes\",\"no\"]}," 45 + "\"permanent contract\":{\"values\":[\"yes\",\"no\"]}," 35 private static final String jobsstring = "{\"name\":\"jobs\"," + "\"issuesValues\":{" 36 + "\"lease car\":{\"values\":[\"yes\",\"no\"]}," + "\"permanent contract\":{\"values\":[\"yes\",\"no\"]}," 46 37 + "\"career development opportunities\":{\"values\":[\"low\",\"medium\",\"high\"]}," 47 38 + "\"fte\":{\"values\":[\"0.6\",\"0.8\",\"1.0\"]}," … … 73 64 Map<String, ValueSet> issues1 = new HashMap<>(); 74 65 issues1.put(ISSUE1, values1); 75 issues1.put(ISSUE2, new NumberValueSet(BigDecimal.ONE, TWO, 76 new BigDecimal("0.22"))); 66 issues1.put(ISSUE2, new NumberValueSet(BigDecimal.ONE, TWO, new BigDecimal("0.22"))); 77 67 domain3 = new Domain(DOMAINNAME, issues1); 78 68 … … 81 71 @Override 82 72 public List<List<Domain>> getGeneralTestData() { 83 return Arrays.asList(Arrays.asList(domain, domain1), 84 Arrays.asList(domain2), Arrays.asList(domain3)); 73 return Arrays.asList(Arrays.asList(domain, domain1), Arrays.asList(domain2), Arrays.asList(domain3)); 85 74 } 86 75 87 76 @Override 88 77 public List<String> getGeneralTestStrings() { 89 return Arrays.asList("Domain.*testdomain.*", "Domain.*testdomain1.*", 90 "Domain.*testdomain.*"); 78 return Arrays.asList("Domain.*testdomain.*", "Domain.*testdomain1.*", "Domain.*testdomain.*"); 91 79 } 92 80 … … 109 97 System.out.println(jobsstring); 110 98 Domain jobsdomain = jackson.readValue(jobsstring, Domain.class); 111 assertEquals(new HashSet<>(Arrays.asList("lease car", 112 "permanent contract", "career development opportunities", "fte", 113 "salary", "work from home")), jobsdomain.getIssues()); 99 assertEquals(new HashSet<>(Arrays.asList("lease car", "permanent contract", "career development opportunities", 100 "fte", "salary", "work from home")), jobsdomain.getIssues()); 114 101 115 102 } … … 134 121 public void testIsCompleteNoIssuesDefined() { 135 122 Bid bid = mock(Bid.class); 136 assertThat(domain.isComplete(bid), new PatternMatch( 137 "Issues in bid .* do not match issues in domain .*")); 123 assertThat(domain.isComplete(bid), new PatternMatch("Issues in bid .* do not match issues in domain .*")); 138 124 } 139 125 … … 154 140 // THREE is NOT a possible value in the NumberValueSet. 155 141 when(bid.getValue(ISSUE2)).thenReturn(new NumberValue(THREE)); 156 assertThat(domain.isComplete(bid), 157 new PatternMatch("bid issue issue2 has illegal value 3")); 142 assertThat(domain.isComplete(bid), new PatternMatch("bid issue issue2 has illegal value 3")); 158 143 } 159 144 … … 167 152 // THREE is NOT a possible value in the NumberValueSet. 168 153 when(bid.getValue(ISSUE2)).thenReturn(new NumberValue(THREE)); 169 assertThat(domain.isComplete(bid), new PatternMatch( 170 "Issues in bid .* do not match issues in domain .*")); 154 assertThat(domain.isComplete(bid), new PatternMatch("Issues in bid .* do not match issues in domain .*")); 171 155 } 172 156 -
/issuevalue/src/test/java/geniusweb/issuevalue/NumberValueSetTest.java
r1 r3 16 16 import com.fasterxml.jackson.databind.ObjectMapper; 17 17 18 import geniusweb.issuevalue.NumberValue;19 import geniusweb.issuevalue.NumberValueSet;20 import geniusweb.issuevalue.ValueSet;21 18 import tudelft.utilities.immutablelist.Range; 22 19 … … 33 30 new BigDecimal("0.1")); 34 31 35 private final String asString = "{\"range\":[ \"12.2\",\"12.6\",\"0.3\"]}";32 private final String asString = "{\"range\":[12.2,12.6,0.3]}"; 36 33 private final static NumberValueSet bigset = new NumberValueSet(BigDecimal.ZERO, BigDecimal.TEN, 37 34 new BigDecimal("0.00003")); -
/profile/src/main/java/geniusweb/profile/Profile.java
r1 r3 16 16 */ 17 17 @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.WRAPPER_OBJECT) 18 @JsonSubTypes({ @JsonSubTypes.Type(value = LinearAdditiveUtilitySpace.class) }) 18 @JsonSubTypes({ @JsonSubTypes.Type(value = LinearAdditiveUtilitySpace.class), 19 @JsonSubTypes.Type(value = DefaultPartialOrdering.class) }) 19 20 public interface Profile { 20 21 … … 32 33 /** 33 34 * 34 * @return a (hypothetical) bid that is the best alternative to a 35 * non-agreement. Only bids that are 36 * {@link #isPreferredOrEqual(Bid, Bid)} should be accepted. If a 37 * negotiation does not reach an agreement, the party can get this 38 * offer somewhere else. This replaces the older notion of a 35 * @return a (hypothetical) bid that is the best alternative to a non-agreement. 36 * Only bids that are {@link #isPreferredOrEqual(Bid, Bid)} should be 37 * accepted. If a negotiation does not reach an agreement, the party can 38 * get this offer somewhere else. This replaces the older notion of a 39 39 * "reservation value" and is more general. If null, there is no 40 40 * reservation bid and any agreement is better than no agreement. -
/profile/src/main/java/geniusweb/profile/utilityspace/NumberValueSetUtilities.java
r1 r3 6 6 import com.fasterxml.jackson.annotation.JsonAutoDetect; 7 7 import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; 8 import com.fasterxml.jackson.annotation.JsonCreator; 9 import com.fasterxml.jackson.annotation.JsonProperty; 10 import com.fasterxml.jackson.annotation.JsonTypeName; 8 11 9 12 import geniusweb.issuevalue.NumberValue; … … 11 14 import geniusweb.issuevalue.Value; 12 15 import geniusweb.issuevalue.ValueSet; 13 14 import com.fasterxml.jackson.annotation.JsonCreator;15 import com.fasterxml.jackson.annotation.JsonProperty;16 import com.fasterxml.jackson.annotation.JsonTypeName;17 18 16 import tudelft.utilities.immutablelist.Range; 19 17 … … 100 98 } 101 99 if (numvalset.getRange().getHigh().compareTo(highValue) != 0) { 102 return "the utilities are specified downto " + highValue103 + " but the valueset starts at "100 return "the utilities are specified up to " + highValue 101 + " but the valueset ends at " 104 102 + numvalset.getRange().getHigh(); 105 103 } -
/profile/src/test/java/geniusweb/profile/utilityspace/DiscreteValueSetUtilitiesTest.java
r1 r3 1 1 package geniusweb.profile.utilityspace; 2 3 import static org.junit.Assert.assertEquals; 2 4 3 5 import java.math.BigDecimal; … … 10 12 11 13 import geniusweb.issuevalue.DiscreteValue; 12 import geniusweb.profile.utilityspace.DiscreteValueSetUtilities; 14 import geniusweb.issuevalue.DiscreteValueSet; 15 import geniusweb.issuevalue.NumberValue; 16 import geniusweb.issuevalue.NumberValueSet; 17 import geniusweb.issuevalue.ValueSet; 13 18 import tudelft.utilities.junit.GeneralTests; 14 19 15 public class DiscreteValueSetUtilitiesTest extends GeneralTests<DiscreteValueSetUtilities> { 20 public class DiscreteValueSetUtilitiesTest 21 extends GeneralTests<DiscreteValueSetUtilities> { 16 22 17 23 private final static DiscreteValue vala = new DiscreteValue("a"); 18 24 private final static DiscreteValue vala1 = new DiscreteValue("a"); 19 25 private final static DiscreteValue valb = new DiscreteValue("b"); 26 private final static NumberValue valn = new NumberValue("99"); 20 27 21 28 private final static BigDecimal util = new BigDecimal("0.14"); … … 23 30 private final static BigDecimal utilb = new BigDecimal("0.37"); 24 31 25 private final static DiscreteValueSetUtilities utils, utils1, utilsb, utils1b, utilsc1, utilsc2; 32 private final static BigDecimal badutil = new BigDecimal("1.37"); 33 private final static BigDecimal badutil2 = new BigDecimal("-0.37"); 34 35 private final static DiscreteValueSetUtilities utils, utils1, utilsb, 36 utils1b, utilsc1, utilsc2; 26 37 27 38 static { … … 56 67 @Override 57 68 public List<List<DiscreteValueSetUtilities>> getGeneralTestData() { 58 return Arrays.asList(Arrays.asList(utils, utils1), Arrays.asList(utilsb), Arrays.asList(utils1b), 69 return Arrays.asList(Arrays.asList(utils, utils1), 70 Arrays.asList(utilsb), Arrays.asList(utils1b), 59 71 Arrays.asList(utilsc1, utilsc2)); 60 72 } … … 62 74 @Override 63 75 public List<String> getGeneralTestStrings() { 64 return Arrays.asList("ValueSetUtilities\\{\"a\"=0.14\\}", "ValueSetUtilities\\{\"b\"=0.37\\}", 65 "ValueSetUtilities\\{\"a\"=0.37\\}", "ValueSetUtilities\\{\"a\"=0.14, \"b\"=0.37\\}"); 76 return Arrays.asList("ValueSetUtilities\\{\"a\"=0.14\\}", 77 "ValueSetUtilities\\{\"b\"=0.37\\}", 78 "ValueSetUtilities\\{\"a\"=0.37\\}", 79 "ValueSetUtilities\\{\"a\"=0.14, \"b\"=0.37\\}"); 66 80 } 67 81 … … 72 86 } 73 87 88 @Test(expected = IllegalArgumentException.class) 89 public void testTooLargeUtility() { 90 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 91 valueUtils.put(vala, util); 92 valueUtils.put(valb, badutil); 93 new DiscreteValueSetUtilities(valueUtils); 94 } 95 96 @Test(expected = IllegalArgumentException.class) 97 public void testNegativeUtility() { 98 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 99 valueUtils.put(vala, util); 100 valueUtils.put(valb, badutil2); 101 new DiscreteValueSetUtilities(valueUtils); 102 } 103 104 @Test(expected = IllegalArgumentException.class) 105 public void testNullUtility() { 106 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 107 valueUtils.put(vala, null); 108 valueUtils.put(valb, util); 109 new DiscreteValueSetUtilities(valueUtils); 110 } 111 112 @Test(expected = NullPointerException.class) 113 public void testNullValueUtils() { 114 new DiscreteValueSetUtilities(null); 115 116 } 117 118 @Test(expected = NullPointerException.class) 119 public void testNullIssue() { 120 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 121 valueUtils.put(vala, util); 122 valueUtils.put(null, utilb); 123 new DiscreteValueSetUtilities(valueUtils); 124 } 125 126 @Test 127 public void testGetUtility() { 128 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 129 valueUtils.put(vala, util); 130 valueUtils.put(valb, utilb); 131 DiscreteValueSetUtilities utilset = new DiscreteValueSetUtilities( 132 valueUtils); 133 assertEquals(util, utilset.getUtility(vala)); 134 assertEquals(utilb, utilset.getUtility(valb)); 135 assertEquals(BigDecimal.ZERO, 136 utilset.getUtility(new DiscreteValue("unknownIssue"))); 137 138 } 139 140 @Test 141 public void testIsFitting() { 142 ValueSet valueset = new DiscreteValueSet(Arrays.asList(vala, valb)); 143 144 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 145 valueUtils.put(vala, util); 146 DiscreteValueSetUtilities utilset = new DiscreteValueSetUtilities( 147 valueUtils); 148 149 assertEquals( 150 "The values in the set DiscreteValueSet[\"a\", \"b\"] do not match the values mapped to utilities [\"a\"]", 151 utilset.isFitting(valueset)); 152 153 valueUtils.put(valb, utilb); 154 utilset = new DiscreteValueSetUtilities(valueUtils); 155 assertEquals(null, utilset.isFitting(valueset)); 156 157 valueUtils.put(new DiscreteValue("unknownIssue"), util1); 158 utilset = new DiscreteValueSetUtilities(valueUtils); 159 assertEquals( 160 "The values in the set DiscreteValueSet[\"a\", \"b\"] do not match the values mapped to utilities [\"a\", \"b\", \"unknownIssue\"]", 161 utilset.isFitting(valueset)); 162 163 } 164 165 @Test 166 public void testIsFittingWrongType() { 167 ValueSet valueset = new NumberValueSet(BigDecimal.ZERO, BigDecimal.ONE, 168 new BigDecimal("0.3")); 169 170 Map<DiscreteValue, BigDecimal> valueUtils = new HashMap<>(); 171 valueUtils.put(vala, util); 172 valueUtils.put(valb, utilb); 173 DiscreteValueSetUtilities utilset = new DiscreteValueSetUtilities( 174 valueUtils); 175 176 assertEquals( 177 "The utilities are for a discrete valueset but the given values are numberValueSet[0,1,0.3]", 178 utilset.isFitting(valueset)); 179 180 } 74 181 } -
/profile/src/test/java/geniusweb/profile/utilityspace/NumberValueSetUtilTest.java
r1 r3 9 9 import org.junit.Test; 10 10 11 import geniusweb.issuevalue.DiscreteValue; 12 import geniusweb.issuevalue.DiscreteValueSet; 11 13 import geniusweb.issuevalue.NumberValue; 12 import geniusweb.profile.utilityspace.NumberValueSetUtilities; 14 import geniusweb.issuevalue.NumberValueSet; 15 import geniusweb.issuevalue.ValueSet; 16 import tudelft.utilities.immutablelist.Range; 13 17 import tudelft.utilities.junit.GeneralTests; 14 18 15 public class NumberValueSetUtilTest extends GeneralTests<NumberValueSetUtilities> { 19 public class NumberValueSetUtilTest 20 extends GeneralTests<NumberValueSetUtilities> { 16 21 17 22 private static final BigDecimal lowval1 = new BigDecimal("12.5"); … … 21 26 private static final BigDecimal highvalb = new BigDecimal("18.4"); 22 27 private static final BigDecimal highutil = new BigDecimal("0.9"); 23 private static final NumberValueSetUtilities valueset1 = new NumberValueSetUtilities(lowval1, low1util, highval, 24 highutil); 25 private static final NumberValueSetUtilities valueset1b = new NumberValueSetUtilities(lowval1, low1util, highval, 26 highutil); 27 private static final NumberValueSetUtilities valueset2 = new NumberValueSetUtilities(lowval1, low1utilb, highval, 28 highutil); 29 private static final NumberValueSetUtilities valueset3 = new NumberValueSetUtilities(lowval1, low1util, highvalb, 30 highutil); 28 private static final NumberValueSetUtilities valueset1 = new NumberValueSetUtilities( 29 lowval1, low1util, highval, highutil); 30 private static final NumberValueSetUtilities valueset1b = new NumberValueSetUtilities( 31 lowval1, low1util, highval, highutil); 32 private static final NumberValueSetUtilities valueset2 = new NumberValueSetUtilities( 33 lowval1, low1utilb, highval, highutil); 34 private static final NumberValueSetUtilities valueset3 = new NumberValueSetUtilities( 35 lowval1, low1util, highvalb, highutil); 36 private static final BigDecimal ZERO_1 = new BigDecimal("0.1"); 31 37 32 38 @Override 33 39 public List<List<NumberValueSetUtilities>> getGeneralTestData() { 34 return Arrays.asList(Arrays.asList(valueset1, valueset1b), Arrays.asList(valueset2), Arrays.asList(valueset3)); 40 return Arrays.asList(Arrays.asList(valueset1, valueset1b), 41 Arrays.asList(valueset2), Arrays.asList(valueset3)); 35 42 } 36 43 37 44 @Override 38 45 public List<String> getGeneralTestStrings() { 39 return Arrays.asList("NumberValUtility\\(12.5->0.5,18.5->0.9\\)", "NumberValUtility\\(12.5->0.6,18.5->0.9\\)", 46 return Arrays.asList("NumberValUtility\\(12.5->0.5,18.5->0.9\\)", 47 "NumberValUtility\\(12.5->0.6,18.5->0.9\\)", 40 48 "NumberValUtility\\(12.5->0.5,18.4->0.9\\)"); 41 49 } … … 49 57 public void utilAscentingTest() { 50 58 NumberValueSetUtilities utils = valueset1; 51 assertEquals(0, low1util.compareTo(utils.getUtility(new NumberValue(lowval1)))); 59 assertEquals(0, 60 low1util.compareTo(utils.getUtility(new NumberValue(lowval1)))); 52 61 } 53 62 54 63 @Test 55 64 public void utilDescendingTest() { 56 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, highutil, highval, low1util); 57 assertEquals(0, highutil.compareTo(utils.getUtility(new NumberValue(lowval1)))); 65 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 66 highutil, highval, low1util); 67 assertEquals(0, 68 highutil.compareTo(utils.getUtility(new NumberValue(lowval1)))); 58 69 } 59 70 60 71 @Test(expected = IllegalArgumentException.class) 61 72 public void reverserangetest() { 62 NumberValueSetUtilities utils = new NumberValueSetUtilities(highval, highutil, lowval1, low1util); 73 NumberValueSetUtilities utils = new NumberValueSetUtilities(highval, 74 low1util, highval, highutil); 75 } 76 77 @Test(expected = NullPointerException.class) 78 public void testNullHigh() { 79 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 80 low1util, null, highutil); 81 } 82 83 @Test(expected = NullPointerException.class) 84 public void testNullHighUtil() { 85 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 86 low1util, highval, null); 87 } 88 89 @Test(expected = NullPointerException.class) 90 public void testNullLow() { 91 NumberValueSetUtilities utils = new NumberValueSetUtilities(null, 92 low1util, highval, highutil); 93 } 94 95 @Test(expected = NullPointerException.class) 96 public void testNullLowUtil() { 97 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 98 null, highval, highutil); 99 } 100 101 @Test(expected = IllegalArgumentException.class) 102 public void testLowUtilNegative() { 103 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 104 new BigDecimal("-0.2"), highval, highutil); 105 } 106 107 @Test(expected = IllegalArgumentException.class) 108 public void testHighUtilNegative() { 109 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 110 low1util, highval, new BigDecimal("-0.000003")); 111 } 112 113 @Test 114 public void getUtilTest() { 115 NumberValueSetUtilities utils = new NumberValueSetUtilities(lowval1, 116 low1util, highval, highutil); 117 assertEquals(0, 118 highutil.compareTo(utils.getUtility(new NumberValue(highval)))); 119 assertEquals(0, 120 low1util.compareTo(utils.getUtility(new NumberValue(lowval1)))); 121 // linear interpolated , check center 122 BigDecimal middleutil = low1util.add(highutil) 123 .divide(new BigDecimal("2")); 124 NumberValue middleval = new NumberValue( 125 lowval1.add(highval).divide(new BigDecimal("2"))); 126 assertEquals(0, middleutil.compareTo(utils.getUtility(middleval))); 127 128 } 129 130 @Test 131 public void testIsNotFittingRange() { 132 ValueSet valueset = new NumberValueSet( 133 new Range(low1util, highutil, new BigDecimal("0.02"))); 134 ValueSetUtilities utilset = new NumberValueSetUtilities(lowval1, 135 low1util, highval, highutil); 136 assertEquals( 137 "the utilities are specified down to 12.5 but the valueset starts at 0.5", 138 utilset.isFitting(valueset)); 139 } 140 141 @Test 142 public void testTopOfRangeTooLarge() { 143 ValueSet valueset = new NumberValueSet( 144 new Range(lowval1, highval.subtract(ZERO_1), ZERO_1)); 145 ValueSetUtilities utilset = new NumberValueSetUtilities(lowval1, 146 low1util, highval, highutil); 147 assertEquals( 148 "the utilities are specified up to 18.5 but the valueset ends at 18.4", 149 utilset.isFitting(valueset)); 150 } 151 152 @Test 153 public void testIsFitting() { 154 ValueSet valueset = new NumberValueSet( 155 new Range(lowval1, highval, BigDecimal.ONE)); 156 ValueSetUtilities utilset = new NumberValueSetUtilities(lowval1, 157 low1util, highval, highutil); 158 assertEquals(null, utilset.isFitting(valueset)); 159 } 160 161 @Test 162 public void testIsFittingWrongType() { 163 DiscreteValue vala = new DiscreteValue("a"); 164 DiscreteValue valb = new DiscreteValue("b"); 165 ValueSet valueset = new DiscreteValueSet(Arrays.asList(vala, valb)); 166 167 NumberValueSetUtilities utilset = new NumberValueSetUtilities(lowval1, 168 low1util, highval, highutil); 169 assertEquals( 170 "The utilities are for a number valueset but the given values are DiscreteValueSet[\"a\", \"b\"]", 171 utilset.isFitting(valueset)); 172 63 173 } 64 174 -
/profileconnection/src/main/java/geniusweb/profileconnection/FileProfileConnector.java
r1 r3 10 10 11 11 import geniusweb.profile.Profile; 12 import geniusweb.profile.utilityspace.LinearAdditiveUtilitySpace;13 12 14 13 /** … … 17 16 public class FileProfileConnector implements ProfileInterface { 18 17 private final static ObjectMapper jackson = new ObjectMapper(); 19 private final LinearAdditiveUtilitySpace profile;18 private final Profile profile; 20 19 21 20 /** … … 26 25 public FileProfileConnector(String filename) throws IOException { 27 26 Path path = new File(filename).toPath(); 28 String serialized = new String(Files.readAllBytes(path), 29 StandardCharsets.UTF_8); 30 profile = (LinearAdditiveUtilitySpace) jackson.readValue(serialized, 31 Profile.class); 27 String serialized = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); 28 profile = jackson.readValue(serialized, Profile.class); 32 29 } 33 30 34 31 @Override 35 public LinearAdditiveUtilitySpace getProfile() {32 public Profile getProfile() { 36 33 return profile; 37 34 } -
/protocol/pom.xml
r1 r3 56 56 <groupId>tudelft.utilities</groupId> 57 57 <artifactId>immutablelist</artifactId> 58 <version>1.0. 0</version>58 <version>1.0.1</version> 59 59 </dependency> 60 60 <dependency> -
/simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerE2ETest.java
r1 r3 5 5 import java.nio.file.Files; 6 6 import java.nio.file.Paths; 7 import java.util.Arrays; 8 import java.util.Collection; 7 9 8 10 import org.junit.Before; 9 11 import org.junit.Test; 12 import org.junit.runner.RunWith; 13 import org.junit.runners.Parameterized; 14 import org.junit.runners.Parameterized.Parameters; 10 15 11 16 import com.fasterxml.jackson.databind.ObjectMapper; 12 17 13 18 import geniusweb.protocol.session.SessionSettings; 14 import geniusweb.simplerunner.ClassPathConnectionFactory;15 import geniusweb.simplerunner.NegoRunner;16 19 import tudelft.utilities.logging.ReportToLogger; 17 20 import tudelft.utilities.logging.Reporter; … … 22 25 * this module. 23 26 */ 27 @RunWith(Parameterized.class) 24 28 public class SessionRunnerE2ETest { 25 private static final String SESSION_SETTINGS = "src/test/resources/settings.json";26 29 private final ObjectMapper jackson = new ObjectMapper(); 27 30 private NegoRunner runner; 28 31 private Reporter logger = new ReportToLogger("test"); 32 private String filename; 33 34 @Parameters 35 public static Collection<Object[]> data() { 36 return Arrays.asList( 37 new Object[][] { { "src/test/resources/settings.json" }, { "src/test/resources/settings2.json" } }); 38 } 39 40 public SessionRunnerE2ETest(String file) { 41 this.filename = file; 42 } 29 43 30 44 @Before 31 45 public void before() throws IOException { 32 String serialized = new String( 33 Files.readAllBytes(Paths.get(SESSION_SETTINGS)), 34 StandardCharsets.UTF_8); 35 SessionSettings settings = jackson.readValue(serialized, 36 SessionSettings.class); 46 String serialized = new String(Files.readAllBytes(Paths.get(filename)), StandardCharsets.UTF_8); 47 SessionSettings settings = jackson.readValue(serialized, SessionSettings.class); 37 48 38 runner = new NegoRunner(settings, new ClassPathConnectionFactory(), 39 logger); 49 runner = new NegoRunner(settings, new ClassPathConnectionFactory(), logger); 40 50 41 51 } … … 52 62 @Test 53 63 public void runTestMainFunction() throws IOException { 54 NegoRunner.main(new String[] { SESSION_SETTINGS});64 NegoRunner.main(new String[] { filename }); 55 65 } 56 66 }
Note:
See TracChangeset
for help on using the changeset viewer.