source: geniuswebcore/test/geniusweb/protocol/session/learn/LearnStateTest.py@ 88

Last change on this file since 88 was 88, checked in by Bart Vastenhouw, 3 years ago

Added python SimpleRunner GUI

File size: 4.5 KB
Line 
1import unittest
2from unittest.mock import Mock
3
4from uri.uri import URI
5
6from geniusweb.actions.EndNegotiation import EndNegotiation
7from geniusweb.actions.LearningDone import LearningDone
8from geniusweb.actions.PartyId import PartyId
9from geniusweb.deadline.DeadlineTime import DeadlineTime
10from geniusweb.inform.Agreements import Agreements
11from geniusweb.progress.Progress import Progress
12from geniusweb.protocol.ProtocolException import ProtocolException
13from geniusweb.protocol.session.TeamInfo import TeamInfo
14from geniusweb.protocol.session.learn.LearnSettings import LearnSettings
15from geniusweb.protocol.session.learn.LearnState import LearnState
16from geniusweb.references.Parameters import Parameters
17from geniusweb.references.PartyRef import PartyRef
18from geniusweb.references.PartyWithParameters import PartyWithParameters
19from geniusweb.references.PartyWithProfile import PartyWithProfile
20from geniusweb.references.ProfileRef import ProfileRef
21
22
23class LearnStateTest(unittest.TestCase):
24
25 PARTY2 = "party2"
26 PARTY1 = "party1"
27 party1id = PartyId(PARTY1)
28 party2id = PartyId(PARTY2)
29 deadline = DeadlineTime(10000)
30 partyprofile1 = Mock(PartyWithProfile)
31 partyprofile2 = Mock(PartyWithProfile)
32 progressnotdone = Mock(Progress)
33 progressdone = Mock(Progress);
34
35 def setUp(self):
36 self.params = Parameters()
37 self.params = self.params.With("persistentstate",
38 "6bb5f909-0079-43ac-a8ac-a31794391074")
39 self.params = self.params.With("negotiationdata",
40 ["12b5f909-0079-43ac-a8ac-a31794391012"])
41
42
43 self.progressnotdone.isPastDeadline=Mock(return_value=False)
44 self.progressdone.isPastDeadline=Mock(return_value=True)
45
46 # define team1
47 party1ref = PartyRef(URI(self.PARTY1))
48 party1 = PartyWithParameters(party1ref, self.params)
49 profile1 = ProfileRef(URI("http://prof1"))
50 partywithp1 = PartyWithProfile(party1, profile1)
51 team1pp = [partywithp1]
52 self.team1 = TeamInfo(team1pp)
53
54 # define team2
55 party2ref = PartyRef(URI(self.PARTY2))
56 party2 = PartyWithParameters(party2ref, self.params)
57 profile2 = ProfileRef(URI("http://prof2"))
58 partywithp2 = PartyWithProfile(party2, profile2)
59 team2pp = [partywithp2]
60 self.team2 = TeamInfo(team2pp)
61
62 participants = [self.team1, self.team2]
63 settings = LearnSettings(participants, self.deadline)
64 self.state =LearnState([],[],None, settings)
65
66 self.connectedstate = self.state.WithParty(self.party1id, self.partyprofile1)\
67 .WithParty(self.party2id, self.partyprofile2).WithProgress(self.progressnotdone)
68
69
70 def testsmokeTestNull(self):
71 self.assertRaises(ValueError, lambda:LearnState([],[],None, None))
72
73 def testsmokeTest(self):
74 settings = Mock(LearnSettings)
75 LearnState([],[],None,settings)
76
77 def testgetAgreementsTest(self):
78 self.assertEqual(Agreements(), self.state.getAgreements())
79
80 def testisFinalTest(self):
81 # initial state is false, because we check
82 # that there are no learningDone reports
83 self.assertFalse(self.state.isFinal(0))
84 # not final because there are connected parties not yet done.
85 self.assertFalse(self.connectedstate.isFinal(0))
86 finalstate = self.connectedstate.WithProgress(self.progressdone)
87 self.assertTrue(finalstate.isFinal(0))
88
89 errorstate = self.connectedstate\
90 .WithException(ProtocolException("test", self.party1id))
91 self.assertTrue(errorstate.isFinal(0))
92
93 def testcheckActionTest(self):
94 # check basic illegal actions in Learning
95 self.assertNotEqual(None, self.connectedstate.checkAction(self.party1id, None))
96 self.assertNotEqual(None, self.connectedstate.checkAction(PartyId("unknown"), None))
97 self.assertNotEqual(None, self.connectedstate.checkAction(self.party1id,
98 EndNegotiation(self.party1id)))
99 self.assertNotEqual(None,self.connectedstate.checkAction(self.party1id,
100 LearningDone(self.party2id)))
101
102 # check a good action is allowed
103 self.assertEqual(None,self.connectedstate.checkAction(self.party1id,
104 LearningDone(self.party1id)))
105
106 # no learning twice not ok
107 learned = self.connectedstate.WithAction(self.party1id,
108 LearningDone(self.party1id))
109 self.assertNotEqual(None,
110 learned.checkAction(self.party1id, LearningDone(self.party1id)))
111
112 def testLearnDoneActionTest(self):
113 learned = self.connectedstate.WithAction(self.party1id,
114 LearningDone(self.party1id))
115
116 def testisFinalWhenAllLearned(self):
117 learned = self.connectedstate\
118 .WithAction(self.party1id, LearningDone(self.party1id))\
119 .WithAction(self.party2id, LearningDone(self.party2id))
120 self.assertTrue(learned.isFinal(0))
121
122 def testgetResultTest(self):
123 res = self.connectedstate.getResult()
124 self.assertEqual(0, len(res.getAgreements().getMap()))
Note: See TracBrowser for help on using the repository browser.