@@ -13,7 +13,10 @@ use std::default::Default;
13
13
use std:: ffi:: { CStr , CString , OsString } ;
14
14
use std:: fmt:: Debug ;
15
15
use std:: net;
16
- use std:: num:: Wrapping ;
16
+ use std:: num:: {
17
+ NonZeroI128 , NonZeroI16 , NonZeroI32 , NonZeroI64 , NonZeroI8 , NonZeroIsize , NonZeroU128 ,
18
+ NonZeroU16 , NonZeroU32 , NonZeroU64 , NonZeroU8 , NonZeroUsize , Wrapping ,
19
+ } ;
17
20
use std:: ops:: Bound ;
18
21
use std:: path:: { Path , PathBuf } ;
19
22
use std:: rc:: { Rc , Weak as RcWeak } ;
@@ -510,6 +513,306 @@ fn test_usize() {
510
513
test ( 10 , & [ Token :: U64 ( 10 ) ] ) ;
511
514
}
512
515
516
+ #[ test]
517
+ fn test_nonzero_i8 ( ) {
518
+ let test = |value, tokens| test ( NonZeroI8 :: new ( value) . unwrap ( ) , tokens) ;
519
+
520
+ // from signed
521
+ test ( -128 , & [ Token :: I8 ( -128 ) ] ) ;
522
+ test ( -128 , & [ Token :: I16 ( -128 ) ] ) ;
523
+ test ( -128 , & [ Token :: I32 ( -128 ) ] ) ;
524
+ test ( -128 , & [ Token :: I64 ( -128 ) ] ) ;
525
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
526
+ test ( 127 , & [ Token :: I16 ( 127 ) ] ) ;
527
+ test ( 127 , & [ Token :: I32 ( 127 ) ] ) ;
528
+ test ( 127 , & [ Token :: I64 ( 127 ) ] ) ;
529
+
530
+ // from unsigned
531
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
532
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
533
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
534
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
535
+ test ( 127 , & [ Token :: U8 ( 127 ) ] ) ;
536
+ test ( 127 , & [ Token :: U16 ( 127 ) ] ) ;
537
+ test ( 127 , & [ Token :: U32 ( 127 ) ] ) ;
538
+ test ( 127 , & [ Token :: U64 ( 127 ) ] ) ;
539
+ }
540
+
541
+ #[ test]
542
+ fn test_nonzero_i16 ( ) {
543
+ let test = |value, tokens| test ( NonZeroI16 :: new ( value) . unwrap ( ) , tokens) ;
544
+
545
+ // from signed
546
+ test ( -128 , & [ Token :: I8 ( -128 ) ] ) ;
547
+ test ( -32768 , & [ Token :: I16 ( -32768 ) ] ) ;
548
+ test ( -32768 , & [ Token :: I32 ( -32768 ) ] ) ;
549
+ test ( -32768 , & [ Token :: I64 ( -32768 ) ] ) ;
550
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
551
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
552
+ test ( 32767 , & [ Token :: I32 ( 32767 ) ] ) ;
553
+ test ( 32767 , & [ Token :: I64 ( 32767 ) ] ) ;
554
+
555
+ // from unsigned
556
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
557
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
558
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
559
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
560
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
561
+ test ( 32767 , & [ Token :: U16 ( 32767 ) ] ) ;
562
+ test ( 32767 , & [ Token :: U32 ( 32767 ) ] ) ;
563
+ test ( 32767 , & [ Token :: U64 ( 32767 ) ] ) ;
564
+ }
565
+
566
+ #[ test]
567
+ fn test_nonzero_i32 ( ) {
568
+ let test = |value, tokens| test ( NonZeroI32 :: new ( value) . unwrap ( ) , tokens) ;
569
+
570
+ // from signed
571
+ test ( -128 , & [ Token :: I8 ( -128 ) ] ) ;
572
+ test ( -32768 , & [ Token :: I16 ( -32768 ) ] ) ;
573
+ test ( -2147483648 , & [ Token :: I32 ( -2147483648 ) ] ) ;
574
+ test ( -2147483648 , & [ Token :: I64 ( -2147483648 ) ] ) ;
575
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
576
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
577
+ test ( 2147483647 , & [ Token :: I32 ( 2147483647 ) ] ) ;
578
+ test ( 2147483647 , & [ Token :: I64 ( 2147483647 ) ] ) ;
579
+
580
+ // from unsigned
581
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
582
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
583
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
584
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
585
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
586
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
587
+ test ( 2147483647 , & [ Token :: U32 ( 2147483647 ) ] ) ;
588
+ test ( 2147483647 , & [ Token :: U64 ( 2147483647 ) ] ) ;
589
+ }
590
+
591
+ #[ test]
592
+ fn test_nonzero_i64 ( ) {
593
+ let test = |value, tokens| test ( NonZeroI64 :: new ( value) . unwrap ( ) , tokens) ;
594
+
595
+ // from signed
596
+ test ( -128 , & [ Token :: I8 ( -128 ) ] ) ;
597
+ test ( -32768 , & [ Token :: I16 ( -32768 ) ] ) ;
598
+ test ( -2147483648 , & [ Token :: I32 ( -2147483648 ) ] ) ;
599
+ test ( -9223372036854775808 , & [ Token :: I64 ( -9223372036854775808 ) ] ) ;
600
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
601
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
602
+ test ( 2147483647 , & [ Token :: I32 ( 2147483647 ) ] ) ;
603
+ test ( 9223372036854775807 , & [ Token :: I64 ( 9223372036854775807 ) ] ) ;
604
+
605
+ // from unsigned
606
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
607
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
608
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
609
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
610
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
611
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
612
+ test ( 4294967295 , & [ Token :: U32 ( 4294967295 ) ] ) ;
613
+ test ( 9223372036854775807 , & [ Token :: U64 ( 9223372036854775807 ) ] ) ;
614
+ }
615
+
616
+ #[ test]
617
+ fn test_nonzero_i128 ( ) {
618
+ let test = |value, tokens| test ( NonZeroI128 :: new ( value) . unwrap ( ) , tokens) ;
619
+
620
+ // from signed
621
+ test ( -128 , & [ Token :: I8 ( -128 ) ] ) ;
622
+ test ( -32768 , & [ Token :: I16 ( -32768 ) ] ) ;
623
+ test ( -2147483648 , & [ Token :: I32 ( -2147483648 ) ] ) ;
624
+ test ( -9223372036854775808 , & [ Token :: I64 ( -9223372036854775808 ) ] ) ;
625
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
626
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
627
+ test ( 2147483647 , & [ Token :: I32 ( 2147483647 ) ] ) ;
628
+ test ( 9223372036854775807 , & [ Token :: I64 ( 9223372036854775807 ) ] ) ;
629
+
630
+ // from unsigned
631
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
632
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
633
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
634
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
635
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
636
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
637
+ test ( 4294967295 , & [ Token :: U32 ( 4294967295 ) ] ) ;
638
+ test ( 18446744073709551615 , & [ Token :: U64 ( 18446744073709551615 ) ] ) ;
639
+ }
640
+
641
+ #[ test]
642
+ fn test_nonzero_isize ( ) {
643
+ let test = |value, tokens| test ( NonZeroIsize :: new ( value) . unwrap ( ) , tokens) ;
644
+
645
+ // from signed
646
+ test ( -10 , & [ Token :: I8 ( -10 ) ] ) ;
647
+ test ( -10 , & [ Token :: I16 ( -10 ) ] ) ;
648
+ test ( -10 , & [ Token :: I32 ( -10 ) ] ) ;
649
+ test ( -10 , & [ Token :: I64 ( -10 ) ] ) ;
650
+ test ( 10 , & [ Token :: I8 ( 10 ) ] ) ;
651
+ test ( 10 , & [ Token :: I16 ( 10 ) ] ) ;
652
+ test ( 10 , & [ Token :: I32 ( 10 ) ] ) ;
653
+ test ( 10 , & [ Token :: I64 ( 10 ) ] ) ;
654
+
655
+ // from unsigned
656
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
657
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
658
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
659
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
660
+ test ( 10 , & [ Token :: U8 ( 10 ) ] ) ;
661
+ test ( 10 , & [ Token :: U16 ( 10 ) ] ) ;
662
+ test ( 10 , & [ Token :: U32 ( 10 ) ] ) ;
663
+ test ( 10 , & [ Token :: U64 ( 10 ) ] ) ;
664
+ }
665
+
666
+ #[ test]
667
+ fn test_nonzero_u8 ( ) {
668
+ let test = |value, tokens| test ( NonZeroU8 :: new ( value) . unwrap ( ) , tokens) ;
669
+
670
+ // from signed
671
+ test ( 1 , & [ Token :: I8 ( 1 ) ] ) ;
672
+ test ( 1 , & [ Token :: I16 ( 1 ) ] ) ;
673
+ test ( 1 , & [ Token :: I32 ( 1 ) ] ) ;
674
+ test ( 1 , & [ Token :: I64 ( 1 ) ] ) ;
675
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
676
+ test ( 255 , & [ Token :: I16 ( 255 ) ] ) ;
677
+ test ( 255 , & [ Token :: I32 ( 255 ) ] ) ;
678
+ test ( 255 , & [ Token :: I64 ( 255 ) ] ) ;
679
+
680
+ // from unsigned
681
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
682
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
683
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
684
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
685
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
686
+ test ( 255 , & [ Token :: U16 ( 255 ) ] ) ;
687
+ test ( 255 , & [ Token :: U32 ( 255 ) ] ) ;
688
+ test ( 255 , & [ Token :: U64 ( 255 ) ] ) ;
689
+ }
690
+
691
+ #[ test]
692
+ fn test_nonzero_u16 ( ) {
693
+ let test = |value, tokens| test ( NonZeroU16 :: new ( value) . unwrap ( ) , tokens) ;
694
+
695
+ // from signed
696
+ test ( 1 , & [ Token :: I8 ( 1 ) ] ) ;
697
+ test ( 1 , & [ Token :: I16 ( 1 ) ] ) ;
698
+ test ( 1 , & [ Token :: I32 ( 1 ) ] ) ;
699
+ test ( 1 , & [ Token :: I64 ( 1 ) ] ) ;
700
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
701
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
702
+ test ( 65535 , & [ Token :: I32 ( 65535 ) ] ) ;
703
+ test ( 65535 , & [ Token :: I64 ( 65535 ) ] ) ;
704
+
705
+ // from unsigned
706
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
707
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
708
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
709
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
710
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
711
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
712
+ test ( 65535 , & [ Token :: U32 ( 65535 ) ] ) ;
713
+ test ( 65535 , & [ Token :: U64 ( 65535 ) ] ) ;
714
+ }
715
+
716
+ #[ test]
717
+ fn test_nonzero_u32 ( ) {
718
+ let test = |value, tokens| test ( NonZeroU32 :: new ( value) . unwrap ( ) , tokens) ;
719
+
720
+ // from signed
721
+ test ( 1 , & [ Token :: I8 ( 1 ) ] ) ;
722
+ test ( 1 , & [ Token :: I16 ( 1 ) ] ) ;
723
+ test ( 1 , & [ Token :: I32 ( 1 ) ] ) ;
724
+ test ( 1 , & [ Token :: I64 ( 1 ) ] ) ;
725
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
726
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
727
+ test ( 2147483647 , & [ Token :: I32 ( 2147483647 ) ] ) ;
728
+ test ( 4294967295 , & [ Token :: I64 ( 4294967295 ) ] ) ;
729
+
730
+ // from unsigned
731
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
732
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
733
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
734
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
735
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
736
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
737
+ test ( 4294967295 , & [ Token :: U32 ( 4294967295 ) ] ) ;
738
+ test ( 4294967295 , & [ Token :: U64 ( 4294967295 ) ] ) ;
739
+ }
740
+
741
+ #[ test]
742
+ fn test_nonzero_u64 ( ) {
743
+ let test = |value, tokens| test ( NonZeroU64 :: new ( value) . unwrap ( ) , tokens) ;
744
+
745
+ // from signed
746
+ test ( 1 , & [ Token :: I8 ( 1 ) ] ) ;
747
+ test ( 1 , & [ Token :: I16 ( 1 ) ] ) ;
748
+ test ( 1 , & [ Token :: I32 ( 1 ) ] ) ;
749
+ test ( 1 , & [ Token :: I64 ( 1 ) ] ) ;
750
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
751
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
752
+ test ( 2147483647 , & [ Token :: I32 ( 2147483647 ) ] ) ;
753
+ test ( 9223372036854775807 , & [ Token :: I64 ( 9223372036854775807 ) ] ) ;
754
+
755
+ // from unsigned
756
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
757
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
758
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
759
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
760
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
761
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
762
+ test ( 4294967295 , & [ Token :: U32 ( 4294967295 ) ] ) ;
763
+ test ( 18446744073709551615 , & [ Token :: U64 ( 18446744073709551615 ) ] ) ;
764
+ }
765
+
766
+ #[ test]
767
+ fn test_nonzero_u128 ( ) {
768
+ let test = |value, tokens| test ( NonZeroU128 :: new ( value) . unwrap ( ) , tokens) ;
769
+
770
+ // from signed
771
+ test ( 1 , & [ Token :: I8 ( 1 ) ] ) ;
772
+ test ( 1 , & [ Token :: I16 ( 1 ) ] ) ;
773
+ test ( 1 , & [ Token :: I32 ( 1 ) ] ) ;
774
+ test ( 1 , & [ Token :: I64 ( 1 ) ] ) ;
775
+ test ( 127 , & [ Token :: I8 ( 127 ) ] ) ;
776
+ test ( 32767 , & [ Token :: I16 ( 32767 ) ] ) ;
777
+ test ( 2147483647 , & [ Token :: I32 ( 2147483647 ) ] ) ;
778
+ test ( 9223372036854775807 , & [ Token :: I64 ( 9223372036854775807 ) ] ) ;
779
+
780
+ // from unsigned
781
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
782
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
783
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
784
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
785
+ test ( 255 , & [ Token :: U8 ( 255 ) ] ) ;
786
+ test ( 65535 , & [ Token :: U16 ( 65535 ) ] ) ;
787
+ test ( 4294967295 , & [ Token :: U32 ( 4294967295 ) ] ) ;
788
+ test ( 18446744073709551615 , & [ Token :: U64 ( 18446744073709551615 ) ] ) ;
789
+ }
790
+
791
+ #[ test]
792
+ fn test_nonzero_usize ( ) {
793
+ let test = |value, tokens| test ( NonZeroUsize :: new ( value) . unwrap ( ) , tokens) ;
794
+
795
+ // from signed
796
+ test ( 1 , & [ Token :: I8 ( 1 ) ] ) ;
797
+ test ( 1 , & [ Token :: I16 ( 1 ) ] ) ;
798
+ test ( 1 , & [ Token :: I32 ( 1 ) ] ) ;
799
+ test ( 1 , & [ Token :: I64 ( 1 ) ] ) ;
800
+ test ( 10 , & [ Token :: I8 ( 10 ) ] ) ;
801
+ test ( 10 , & [ Token :: I16 ( 10 ) ] ) ;
802
+ test ( 10 , & [ Token :: I32 ( 10 ) ] ) ;
803
+ test ( 10 , & [ Token :: I64 ( 10 ) ] ) ;
804
+
805
+ // from unsigned
806
+ test ( 1 , & [ Token :: U8 ( 1 ) ] ) ;
807
+ test ( 1 , & [ Token :: U16 ( 1 ) ] ) ;
808
+ test ( 1 , & [ Token :: U32 ( 1 ) ] ) ;
809
+ test ( 1 , & [ Token :: U64 ( 1 ) ] ) ;
810
+ test ( 10 , & [ Token :: U8 ( 10 ) ] ) ;
811
+ test ( 10 , & [ Token :: U16 ( 10 ) ] ) ;
812
+ test ( 10 , & [ Token :: U32 ( 10 ) ] ) ;
813
+ test ( 10 , & [ Token :: U64 ( 10 ) ] ) ;
814
+ }
815
+
513
816
#[ test]
514
817
fn test_f32 ( ) {
515
818
let test = test :: < f32 > ;
0 commit comments