[88] | 1 | import json
|
---|
| 2 | import unittest
|
---|
| 3 |
|
---|
| 4 | from pyson.ObjectMapper import ObjectMapper
|
---|
| 5 |
|
---|
| 6 | from geniusweb.actions.Action import Action
|
---|
| 7 | from geniusweb.actions.PartyId import PartyId
|
---|
| 8 | from geniusweb.actions.Vote import Vote
|
---|
| 9 | from geniusweb.actions.Votes import Votes
|
---|
| 10 | from geniusweb.issuevalue.Bid import Bid
|
---|
| 11 | from geniusweb.issuevalue.DiscreteValue import DiscreteValue
|
---|
| 12 |
|
---|
| 13 |
|
---|
| 14 | class VotesTest (unittest.TestCase) :
|
---|
| 15 | maxDiff = None
|
---|
| 16 |
|
---|
| 17 | jackson = ObjectMapper();
|
---|
| 18 | votestring = "{\"Votes\":{\"actor\":\"partyA\",\"votes\":[{\"Vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val1\"}},\"minPower\":2,\"maxPower\":9}},{\"Vote\":{\"actor\":\"partyA\",\"bid\":{\"issuevalues\":{\"is1\":\"val2\"}},\"minPower\":2,\"maxPower\":9}}]}}";
|
---|
| 19 |
|
---|
| 20 | partyA = PartyId("partyA");
|
---|
| 21 | partyB = PartyId("partyB");
|
---|
| 22 | bid1 = Bid({"is1": DiscreteValue("val1")})
|
---|
| 23 | bid2 = Bid({"is1": DiscreteValue("val2")})
|
---|
| 24 | voteA1 = Vote(partyA, bid1, 2, 9)
|
---|
| 25 | voteA2 = Vote(partyA, bid2, 2, 9)
|
---|
| 26 | voteB1 = Vote(partyB, bid1, 2, 9)
|
---|
| 27 | voteB2 = Vote(partyB, bid2, 2, 9)
|
---|
| 28 |
|
---|
| 29 | votes1 = Votes(partyA,set([voteA1, voteA2]))
|
---|
| 30 | votes1a=Votes(partyA,set([voteA1, voteA2]))
|
---|
| 31 | votes2 = Votes(partyB,set([voteB1, voteB2]))
|
---|
| 32 |
|
---|
| 33 | def testRejectVoteWithIncorrectParty(self):
|
---|
| 34 | self.assertRaises(ValueError, lambda: Votes(self.partyA, set([self.voteB1])) )
|
---|
| 35 |
|
---|
| 36 |
|
---|
| 37 | def tes1Serialize(self) :
|
---|
| 38 | # FIXME why is this failing half of the time?
|
---|
| 39 | print(str(self.jackson.toJson(self.votes1)));
|
---|
| 40 | self.assertEqual(json.loads(self.votestring), self.jackson.toJson(self.votes1))
|
---|
| 41 |
|
---|
| 42 | def testDeserialize(self) :
|
---|
| 43 | act = self.jackson.parse(json.loads(self.votestring), Action)
|
---|
| 44 | self.assertEqual(self.votes1, act)
|
---|
| 45 |
|
---|
| 46 | def testWrongPartyName(self):
|
---|
| 47 | self.assertRaises(ValueError, lambda:\
|
---|
| 48 | Votes(self.partyA, set([self.voteB1, self.voteB2])))
|
---|
| 49 |
|
---|
| 50 | def testIsExtendingTestExtraVote(self):
|
---|
| 51 | otherVotes = Votes(self.partyA, set([self.voteA1]))
|
---|
| 52 | self.assertTrue(self.votes1.isExtending(otherVotes))
|
---|
| 53 |
|
---|
| 54 | def testIsExtendingTestNoVotes(self) :
|
---|
| 55 | otherVotes = Votes(self.partyA, set())
|
---|
| 56 | self.assertTrue(self.votes1.isExtending(otherVotes))
|
---|
| 57 |
|
---|
| 58 | def testIsExtendingTestMissing(self):
|
---|
| 59 | otherVotes = Votes(self.partyA, set([self.voteA1]))
|
---|
| 60 | self.assertFalse(otherVotes.isExtending(self.votes1))
|
---|
| 61 |
|
---|
| 62 | def testIsExtendingIdenticalVotes(self):
|
---|
| 63 | self.assertTrue(self.votes1.isExtending(self.votes1))
|
---|
| 64 |
|
---|
| 65 | # @Test
|
---|
| 66 | # public void isReallyExtendingVotesMin() {
|
---|
| 67 | # Vote powervoteA1 = new Vote(partyA, bid1, 1, 9);
|
---|
| 68 | # Votes powerVotes = new Votes(partyA,
|
---|
| 69 | # new HashSet<>(Arrays.asList(powervoteA1, voteA2)));
|
---|
| 70 | # assertTrue(powerVotes.isExtending(votes1));
|
---|
| 71 | # }
|
---|
| 72 | #
|
---|
| 73 | # @Test
|
---|
| 74 | # public void isReallyExtendingVotesMax() {
|
---|
| 75 | # Vote powervoteA1 = new Vote(partyA, bid1, 2, 10);
|
---|
| 76 | # Votes powerVotes = new Votes(partyA,
|
---|
| 77 | # new HashSet<>(Arrays.asList(powervoteA1, voteA2)));
|
---|
| 78 | # assertTrue(powerVotes.isExtending(votes1));
|
---|
| 79 | # }
|
---|
| 80 | #
|
---|
| 81 | # @Test
|
---|
| 82 | # public void IsNarrowingOneVoteRemoved() {
|
---|
| 83 | # Votes narrowVotes = new Votes(partyA, Collections.singleton(voteA2));
|
---|
| 84 | # assertFalse(narrowVotes.isExtending(votes1));
|
---|
| 85 | # }
|
---|
| 86 | #
|
---|
| 87 | # @Test
|
---|
| 88 | # public void isNarrowingTestMoreMinPower() {
|
---|
| 89 | # Vote narrowVoteA1 = new Vote(partyA, bid1, 3, 9);
|
---|
| 90 | # Votes narrowVotes = new Votes(partyA,
|
---|
| 91 | # new HashSet<>(Arrays.asList(narrowVoteA1, voteA2)));
|
---|
| 92 | # assertFalse(narrowVotes.isExtending(votes1));
|
---|
| 93 | # assertTrue(votes1.isExtending(narrowVotes));
|
---|
| 94 | # }
|
---|
| 95 | #
|
---|
| 96 | # @Test
|
---|
| 97 | # public void isNarrowingLessMaxPower() {
|
---|
| 98 | # Vote powervoteA1 = new Vote(partyA, bid1, 2, 8);
|
---|
| 99 | # Votes narrowVotes = new Votes(partyA,
|
---|
| 100 | # new HashSet<>(Arrays.asList(powervoteA1, voteA2)));
|
---|
| 101 | # assertFalse(narrowVotes.isExtending(votes1));
|
---|
| 102 | # assertTrue(votes1.isExtending(narrowVotes));
|
---|
| 103 | # }
|
---|
| 104 | #
|
---|
| 105 | # @Test(expected = IllegalArgumentException.class)
|
---|
| 106 | # public void testDuplicateBidsNotAllowed() {
|
---|
| 107 | # Vote voteA1similar = new Vote(partyA, bid1, 3, 9);
|
---|
| 108 | # Votes votes = new Votes(partyA,
|
---|
| 109 | # new HashSet<>(Arrays.asList(voteA1, voteA1similar)));
|
---|
| 110 | # }
|
---|
| 111 | # }
|
---|