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 | # }
|
---|