@@ -10,4 +10,29 @@ describe("validatorSet", async ({ assert, it }) => {
1010 it ( "should unpack it" , ( ) => {
1111 assert . equal ( validatorSetUnpack ( 3n , 4 ) , [ true , true , false , false ] ) ;
1212 } ) ;
13+
14+ it ( "should pack and unpack" , ( ) => {
15+ const validatorSet = [ true , true , false , false ] ;
16+ const packed = validatorSetPack ( validatorSet ) ;
17+ const unpacked = validatorSetUnpack ( packed , validatorSet . length ) ;
18+
19+ assert . equal ( unpacked , validatorSet ) ;
20+ } ) ;
21+
22+ it ( "should reject invalid packed validator set" , ( ) => {
23+ const validatorSet = [ true , true , true , true ] ;
24+ const packed = validatorSetPack ( validatorSet ) ;
25+
26+ assert . throws ( ( ) => validatorSetUnpack ( 0n , 0 ) , "`numberOfValidators` must be a non-negative integer" ) ;
27+ assert . throws ( ( ) => validatorSetUnpack ( 0n , - 10 ) , "`numberOfValidators` must be a non-negative integer" ) ;
28+ assert . throws ( ( ) => validatorSetUnpack ( 0n , 1.1 ) , "`numberOfValidators` must be a non-negative integer" ) ;
29+ assert . throws ( ( ) => validatorSetUnpack ( 0n , - 0.1 ) , "`numberOfValidators` must be a non-negative integer" ) ;
30+ assert . throws ( ( ) => validatorSetUnpack ( 0n , 0.2 ) , "`numberOfValidators` must be a non-negative integer" ) ;
31+ assert . throws (
32+ ( ) => validatorSetUnpack ( 0n , "4" as unknown as number ) ,
33+ "`numberOfValidators` must be a non-negative integer" ,
34+ ) ;
35+ assert . throws ( ( ) => validatorSetUnpack ( packed , 3 ) , "`packed` contains set bits beyond `numberOfValidators`" ) ;
36+ assert . throws ( ( ) => validatorSetUnpack ( - 1n , 3 ) , "`packed` must be non-negative" ) ;
37+ } ) ;
1338} ) ;
0 commit comments