@@ -528,4 +528,95 @@ mod tests {
528
528
simple_bit_pack ( & r, ( 1 << 6 ) - 1 , & mut random_bytes) ;
529
529
// no panic is good news
530
530
}
531
- }
531
+
532
+ #[ test]
533
+ #[ should_panic( expected = "Alg 16: b out of range" ) ]
534
+ fn test_simple_bit_pack_b_range ( ) {
535
+ let w = R0 ; //([0i32; 256]);
536
+ let mut bytes = [ 0u8 ; 32 ] ;
537
+ simple_bit_pack ( & w, 0 , & mut bytes) ; // b must be positive
538
+ }
539
+
540
+ #[ test]
541
+ #[ should_panic( expected = "Alg 16: w out of range" ) ]
542
+ fn test_simple_bit_pack_w_range ( ) {
543
+ let mut w = R0 ; //([0i32; 256]);
544
+ w. 0 [ 0 ] = 5 ;
545
+ let mut bytes = [ 0u8 ; 32 ] ;
546
+ simple_bit_pack ( & w, 3 , & mut bytes) ; // w coefficient > b
547
+ }
548
+
549
+ #[ test]
550
+ #[ should_panic( expected = "Alg 16: incorrect size of output bytes" ) ]
551
+ fn test_simple_bit_pack_output_size ( ) {
552
+ let w = R0 ; //([0i32; 256]);
553
+ let mut bytes = [ 0u8 ; 65 ] ; // Wrong output size
554
+ simple_bit_pack ( & w, 2 , & mut bytes) ;
555
+ }
556
+
557
+ #[ test]
558
+ #[ should_panic( expected = "Alg 17: a out of range" ) ]
559
+ fn test_bit_pack_a_range ( ) {
560
+ let w = R0 ; //([0i32; 256]);
561
+ let mut bytes = [ 0u8 ; 32 ] ;
562
+ bit_pack ( & w, -1 , 2 , & mut bytes) ; // a must be non-negative
563
+ }
564
+
565
+ #[ test]
566
+ #[ should_panic( expected = "Alg 17: b out of range" ) ]
567
+ fn test_bit_pack_b_range ( ) {
568
+ let w = R0 ; //([0i32; 256]);
569
+ let mut bytes = [ 0u8 ; 32 ] ;
570
+ bit_pack ( & w, 0 , 0 , & mut bytes) ; // b must be positive
571
+ }
572
+
573
+ #[ test]
574
+ #[ should_panic( expected = "Alg 17: w out of range" ) ]
575
+ fn test_bit_pack_w_range ( ) {
576
+ let mut w = R0 ; //([0i32; 256]);
577
+ w. 0 [ 0 ] = 10 ;
578
+ let mut bytes = [ 0u8 ; 32 ] ;
579
+ bit_pack ( & w, 2 , 5 , & mut bytes) ; // w coefficient outside [-a,b] range
580
+ }
581
+
582
+ #[ test]
583
+ #[ should_panic( expected = "Alg 18: b out of range" ) ]
584
+ fn test_simple_bit_unpack_b_range ( ) {
585
+ let bytes = [ 0u8 ; 32 ] ;
586
+ let _unused = simple_bit_unpack ( & bytes, 0 ) ; // b must be positive
587
+ }
588
+
589
+ #[ test]
590
+ #[ should_panic( expected = "Alg 18: bad output size" ) ]
591
+ fn test_simple_bit_unpack_input_size ( ) {
592
+ let bytes = [ 0u8 ; 65 ] ; // Wrong input size
593
+ let _unused = simple_bit_unpack ( & bytes, 2 ) ;
594
+ }
595
+
596
+ #[ test]
597
+ #[ should_panic( expected = "Alg 20: omega+K out of range" ) ]
598
+ fn test_hint_bit_pack_omega_k_range ( ) {
599
+ const K : usize = 255 ;
600
+ let h = [ R0 ; K ] ;
601
+ let mut y_bytes = [ 0u8 ; 256 ] ;
602
+ hint_bit_pack :: < false , K > ( 2 , & h, & mut y_bytes) ; // omega + K must be < 256
603
+ }
604
+
605
+ #[ test]
606
+ #[ should_panic( expected = "Alg 20: h not 0/1" ) ]
607
+ fn test_hint_bit_pack_h_range ( ) {
608
+ const K : usize = 2 ;
609
+ let mut h = [ R0 ; K ] ;
610
+ h[ 0 ] . 0 [ 0 ] = 2 ; // h must contain only 0s and 1s
611
+ let mut y_bytes = [ 0u8 ; 4 ] ;
612
+ hint_bit_pack :: < false , K > ( 2 , & h, & mut y_bytes) ;
613
+ }
614
+
615
+ #[ test]
616
+ #[ should_panic( expected = "Alg 21: omega+K too large" ) ]
617
+ fn test_hint_bit_unpack_omega_k_range ( ) {
618
+ const K : usize = 255 ;
619
+ let y_bytes = [ 0u8 ; 256 ] ;
620
+ let _unused = hint_bit_unpack :: < K > ( 2 , & y_bytes) ; // omega + K must be < 256
621
+ }
622
+ }
0 commit comments