@@ -725,6 +725,16 @@ def mes_phragmen(instance, profile, resoluteness=True):
725725 [frac (1 , 2 ), frac (1 , 2 ), frac (1 , 2 ), frac (1 , 2 ), frac (1 , 2 )],
726726 [frac (1 , 2 ), frac (1 , 2 ), frac (1 , 2 ), frac (1 , 2 ), frac (1 , 2 )],
727727 ),
728+ (
729+ [5 , 1 , 2 , 1 , 2 ],
730+ [0 , 1 , 2 ],
731+ [0 , 1 , 2 ],
732+ [1 , 3 ],
733+ [frac (1 , 2 ), frac (1 , 4 ), frac (1 , 4 ), frac (1 , 4 ), frac (1 , 4 )],
734+ [frac (1 , 2 ), frac (1 , 4 ), frac (1 , 4 ), frac (1 , 4 ), frac (1 , 4 )],
735+ True ,
736+ [2 , 1 , 2 , 1 , 2 , 2 ],
737+ ),
728738 ]
729739 )
730740 def test_mes_analytics (
@@ -735,6 +745,8 @@ def test_mes_analytics(
735745 picked_projects_idxs ,
736746 expected_third_voter_budget ,
737747 expected_fourth_voter_budget ,
748+ multiprofile = False ,
749+ expected_multiplicity = [1 for _ in range (10 )],
738750 ):
739751 projects = [Project (chr (ord ("a" ) + idx ), costs [idx ]) for idx in range (0 , 5 )]
740752 instance = Instance (projects , budget_limit = 5 )
@@ -752,21 +764,29 @@ def test_mes_analytics(
752764 ApprovalBallot ({projects [4 ]}),
753765 ]
754766 )
767+ if multiprofile :
768+ profile = profile .as_multiprofile ()
755769 result = method_of_equal_shares (instance , profile , Cost_Sat , analytics = True )
756770
757771 assert sorted (list (result ), key = lambda proj : proj .name ) == [
758772 projects [idx ] for idx in picked_projects_idxs
759773 ]
760774 assert result .details .initial_budget_per_voter == frac (1 , 2 )
775+ assert result .details .voter_multiplicity == expected_multiplicity
761776
777+ check_voters = [2 , 2 , 5 ] if multiprofile else [3 , 4 , 8 ]
762778 for idx , anl in enumerate (
763779 sorted (result .details .iterations , key = lambda iter : iter .project .name )
764780 ):
765781 assert anl .project .name == projects [idx ].name
766782 assert anl .was_picked == (idx in picked_projects_idxs )
767- assert anl .voters_budget [3 ] == expected_third_voter_budget [idx ]
768- assert anl .voters_budget [4 ] == expected_fourth_voter_budget [idx ]
769- assert anl .voters_budget [8 ] == frac (1 , 2 )
783+ assert (
784+ anl .voters_budget [check_voters [0 ]] == expected_third_voter_budget [idx ]
785+ )
786+ assert (
787+ anl .voters_budget [check_voters [1 ]] == expected_fourth_voter_budget [idx ]
788+ )
789+ assert anl .voters_budget [check_voters [2 ]] == frac (1 , 2 )
770790
771791 def test_mes_analytics_irresolute (self ):
772792 projects = [Project (chr (ord ("a" ) + idx ), 3 ) for idx in range (0 , 3 )]
0 commit comments