This repository was archived by the owner on Nov 15, 2023. It is now read-only.
  
  
  
  
    
    
    
      
    
  
  
    
File tree Expand file tree Collapse file tree 2 files changed +52
-6
lines changed 
primitives/npos-elections/src Expand file tree Collapse file tree 2 files changed +52
-6
lines changed Original file line number Diff line number Diff line change @@ -629,7 +629,7 @@ pub(crate) fn setup_inputs<AccountId: IdentifierT>(
629629		} ) 
630630		. collect :: < Vec < CandidatePtr < AccountId > > > ( ) ; 
631631
632- 	let  voters = initial_voters. into_iter ( ) . map ( |( who,  voter_stake,  votes) | { 
632+ 	let  voters = initial_voters. into_iter ( ) . filter_map ( |( who,  voter_stake,  votes) | { 
633633		let  mut  edges:  Vec < Edge < AccountId > >  = Vec :: with_capacity ( votes. len ( ) ) ; 
634634		for  v in  votes { 
635635			if  edges. iter ( ) . any ( |e| e. who  == v)  { 
@@ -650,12 +650,18 @@ pub(crate) fn setup_inputs<AccountId: IdentifierT>(
650650				) ; 
651651			}  // else {} would be wrong votes. We don't really care about it. 
652652		} 
653- 		Voter  { 
654- 			who, 
655- 			edges :  edges, 
656- 			budget :  voter_stake. into ( ) , 
657- 			load :  Rational128 :: zero ( ) , 
653+ 		if  edges. is_empty ( )  { 
654+ 			None 
655+ 		} 
656+ 		else  { 
657+ 			Some ( Voter  { 
658+ 				who, 
659+ 				edges :  edges, 
660+ 				budget :  voter_stake. into ( ) , 
661+ 				load :  Rational128 :: zero ( ) , 
662+ 			} ) 
658663		} 
664+ 
659665	} ) . collect :: < Vec < _ > > ( ) ; 
660666
661667	( candidates,  voters, ) 
Original file line number Diff line number Diff line change @@ -72,6 +72,46 @@ fn float_phragmen_poc_works() {
7272	) ; 
7373} 
7474
75+ #[ test]  
76+ fn  phragmen_core_test_without_edges ( )  { 
77+ 	let  candidates = vec ! [ 1 ,  2 ,  3 ] ; 
78+ 	let  voters = vec ! [ 
79+ 		( 10 ,  10 ,  vec![ ] ) , 
80+ 		( 20 ,  20 ,  vec![ ] ) , 
81+ 		( 30 ,  30 ,  vec![ ] ) , 
82+ 	] ; 
83+ 
84+ 	let  ( candidates,  voters)  = setup_inputs ( candidates,  voters) ; 
85+ 
86+ 	assert_eq ! ( 
87+ 		voters
88+ 			. iter( ) 
89+ 			. map( |v| ( 
90+ 				v. who, 
91+ 				v. budget, 
92+ 				( v. edges. iter( ) . map( |e| ( e. who,  e. weight) ) . collect:: <Vec <_>>( ) ) , 
93+ 			) ) 
94+ 			. collect:: <Vec <_>>( ) , 
95+ 		vec![ ] 
96+ 	) ; 
97+ 
98+ 	assert_eq ! ( 
99+ 		candidates
100+ 			. iter( ) 
101+ 			. map( |c_ptr| ( 
102+ 				c_ptr. borrow( ) . who, 
103+ 				c_ptr. borrow( ) . elected, 
104+ 				c_ptr. borrow( ) . round, 
105+ 				c_ptr. borrow( ) . backed_stake, 
106+ 			) ) . collect:: <Vec <_>>( ) , 
107+ 		vec![ 
108+ 			( 1 ,  false ,  0 ,  0 ) , 
109+ 			( 2 ,  false ,  0 ,  0 ) , 
110+ 			( 3 ,  false ,  0 ,  0 ) , 
111+ 		] 
112+ 	) ; 
113+ } 
114+ 
75115#[ test]  
76116fn  phragmen_core_poc_works ( )  { 
77117	let  candidates = vec ! [ 1 ,  2 ,  3 ] ; 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments