Skip to content

Commit bc66aeb

Browse files
committed
Add tests of deserializing NonZero
1 parent 7e7044d commit bc66aeb

File tree

2 files changed

+749
-2
lines changed

2 files changed

+749
-2
lines changed

test_suite/tests/test_de.rs

Lines changed: 304 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ use std::default::Default;
1313
use std::ffi::{CStr, CString, OsString};
1414
use std::fmt::Debug;
1515
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+
};
1720
use std::ops::Bound;
1821
use std::path::{Path, PathBuf};
1922
use std::rc::{Rc, Weak as RcWeak};
@@ -510,6 +513,306 @@ fn test_usize() {
510513
test(10, &[Token::U64(10)]);
511514
}
512515

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+
513816
#[test]
514817
fn test_f32() {
515818
let test = test::<f32>;

0 commit comments

Comments
 (0)