@@ -237,6 +237,14 @@ fn nay(amount: u64, conviction: u8) -> AccountVote<u64> {
237237 AccountVote :: Standard { vote, balance : amount }
238238}
239239
240+ fn split ( aye : u64 , nay : u64 ) -> AccountVote < u64 > {
241+ AccountVote :: Split { aye, nay }
242+ }
243+
244+ fn split_abstain ( aye : u64 , nay : u64 , abstain : u64 ) -> AccountVote < u64 > {
245+ AccountVote :: SplitAbstain { aye, nay, abstain }
246+ }
247+
240248fn tally ( index : u8 ) -> TallyOf < Test > {
241249 <TestPolls as Polling < TallyOf < Test > > >:: as_ongoing ( index) . expect ( "No poll" ) . 0
242250}
@@ -295,6 +303,49 @@ fn basic_voting_works() {
295303 } ) ;
296304}
297305
306+ #[ test]
307+ fn split_voting_works ( ) {
308+ new_test_ext ( ) . execute_with ( || {
309+ assert_ok ! ( Voting :: vote( RuntimeOrigin :: signed( 1 ) , 3 , split( 10 , 0 ) ) ) ;
310+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 1 , 0 , 10 ) ) ;
311+ assert_ok ! ( Voting :: vote( RuntimeOrigin :: signed( 1 ) , 3 , split( 5 , 5 ) ) ) ;
312+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 0 , 0 , 5 ) ) ;
313+ assert_eq ! ( Balances :: usable_balance( 1 ) , 0 ) ;
314+
315+ assert_ok ! ( Voting :: remove_vote( RuntimeOrigin :: signed( 1 ) , None , 3 ) ) ;
316+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 0 , 0 , 0 ) ) ;
317+
318+ assert_ok ! ( Voting :: unlock( RuntimeOrigin :: signed( 1 ) , class( 3 ) , 1 ) ) ;
319+ assert_eq ! ( Balances :: usable_balance( 1 ) , 10 ) ;
320+ } ) ;
321+ }
322+
323+ #[ test]
324+ fn abstain_voting_works ( ) {
325+ new_test_ext ( ) . execute_with ( || {
326+ assert_ok ! ( Voting :: vote( RuntimeOrigin :: signed( 1 ) , 3 , split_abstain( 0 , 0 , 10 ) ) ) ;
327+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 0 , 0 , 10 ) ) ;
328+ assert_ok ! ( Voting :: vote( RuntimeOrigin :: signed( 2 ) , 3 , split_abstain( 0 , 0 , 20 ) ) ) ;
329+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 0 , 0 , 30 ) ) ;
330+ assert_ok ! ( Voting :: vote( RuntimeOrigin :: signed( 2 ) , 3 , split_abstain( 10 , 0 , 10 ) ) ) ;
331+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 1 , 0 , 30 ) ) ;
332+ assert_eq ! ( Balances :: usable_balance( 1 ) , 0 ) ;
333+ assert_eq ! ( Balances :: usable_balance( 2 ) , 0 ) ;
334+
335+ assert_ok ! ( Voting :: remove_vote( RuntimeOrigin :: signed( 1 ) , None , 3 ) ) ;
336+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 1 , 0 , 20 ) ) ;
337+
338+ assert_ok ! ( Voting :: remove_vote( RuntimeOrigin :: signed( 2 ) , None , 3 ) ) ;
339+ assert_eq ! ( tally( 3 ) , Tally :: from_parts( 0 , 0 , 0 ) ) ;
340+
341+ assert_ok ! ( Voting :: unlock( RuntimeOrigin :: signed( 1 ) , class( 3 ) , 1 ) ) ;
342+ assert_eq ! ( Balances :: usable_balance( 1 ) , 10 ) ;
343+
344+ assert_ok ! ( Voting :: unlock( RuntimeOrigin :: signed( 2 ) , class( 3 ) , 2 ) ) ;
345+ assert_eq ! ( Balances :: usable_balance( 2 ) , 20 ) ;
346+ } ) ;
347+ }
348+
298349#[ test]
299350fn voting_balance_gets_locked ( ) {
300351 new_test_ext ( ) . execute_with ( || {
0 commit comments