summaryrefslogtreecommitdiff
path: root/vendor/deranged/src/tests.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-15 16:37:08 -0600
committermo khan <mo@mokhan.ca>2025-07-17 16:30:22 -0600
commit45df4d0d9b577fecee798d672695fe24ff57fb1b (patch)
tree1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/deranged/src/tests.rs
parentf94f79608393d4ab127db63cc41668445ef6b243 (diff)
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/deranged/src/tests.rs')
-rw-r--r--vendor/deranged/src/tests.rs716
1 files changed, 0 insertions, 716 deletions
diff --git a/vendor/deranged/src/tests.rs b/vendor/deranged/src/tests.rs
deleted file mode 100644
index 3ea7530b..00000000
--- a/vendor/deranged/src/tests.rs
+++ /dev/null
@@ -1,716 +0,0 @@
-use core::hash::Hash;
-use std::format;
-use std::prelude::rust_2021::*;
-
-use crate::{
- IntErrorKind, OptionRangedI128, OptionRangedI16, OptionRangedI32, OptionRangedI64,
- OptionRangedI8, OptionRangedIsize, OptionRangedU128, OptionRangedU16, OptionRangedU32,
- OptionRangedU64, OptionRangedU8, OptionRangedUsize, ParseIntError, RangedI128, RangedI16,
- RangedI32, RangedI64, RangedI8, RangedIsize, RangedU128, RangedU16, RangedU32, RangedU64,
- RangedU8, RangedUsize, TryFromIntError,
-};
-
-macro_rules! if_signed {
- (signed $($x:tt)*) => { $($x)* };
- (unsigned $($x:tt)*) => {};
-}
-
-macro_rules! if_unsigned {
- (signed $($x:tt)*) => {};
- (unsigned $($x:tt)*) => { $($x)* };
-}
-
-#[test]
-fn errors() {
- assert_eq!(
- TryFromIntError.to_string(),
- "out of range integral type conversion attempted"
- );
- assert_eq!(TryFromIntError.clone(), TryFromIntError);
- assert_eq!(format!("{TryFromIntError:?}"), "TryFromIntError");
-
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::Empty,
- }
- .to_string(),
- "cannot parse integer from empty string"
- );
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::InvalidDigit,
- }
- .to_string(),
- "invalid digit found in string"
- );
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::PosOverflow,
- }
- .to_string(),
- "number too large to fit in target type"
- );
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::NegOverflow,
- }
- .to_string(),
- "number too small to fit in target type"
- );
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::Zero,
- }
- .to_string(),
- "number would be zero for non-zero type"
- );
- assert_eq!(
- format!(
- "{:?}",
- ParseIntError {
- kind: IntErrorKind::Empty
- }
- ),
- "ParseIntError { kind: Empty }"
- );
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::Empty
- }
- .clone(),
- ParseIntError {
- kind: IntErrorKind::Empty
- }
- );
- assert_eq!(
- ParseIntError {
- kind: IntErrorKind::Empty
- }
- .kind(),
- &IntErrorKind::Empty
- );
-}
-
-macro_rules! tests {
- ($($signed:ident $opt:ident $t:ident $inner:ident),* $(,)?) => {
- #[test]
- fn derives() {$(
- assert_eq!($t::<5, 10>::MIN.clone(), $t::<5, 10>::MIN);
- let mut hasher = std::collections::hash_map::DefaultHasher::new();
- $t::<5, 10>::MIN.hash(&mut hasher);
- assert_eq!(
- $t::<5, 10>::MIN.cmp(&$t::<5, 10>::MAX),
- core::cmp::Ordering::Less
- );
-
- assert_eq!($opt::<5, 10>::None.clone(), $opt::<5, 10>::None);
- $opt::<5, 10>::None.hash(&mut hasher);
- )*}
-
- #[test]
- fn expand() {$(
- let expanded: $t::<0, 20> = $t::<5, 10>::MAX.expand();
- assert_eq!(expanded, $t::<0, 20>::new_static::<10>());
- )*}
-
- #[test]
- fn narrow() {$(
- let narrowed: Option<$t::<10, 20>> = $t::<0, 20>::new_static::<10>().narrow();
- assert_eq!(narrowed, Some($t::<10, 20>::MIN));
- )*}
-
- #[test]
- fn new() {$(
- assert!($t::<5, 10>::new(10).is_some());
- assert!($t::<5, 10>::new(11).is_none());
- )*}
-
- #[test]
- fn new_static() {$(
- let six: $t::<5, 10> = $t::<5, 10>::new_static::<6>();
- assert_eq!(Some(six), $t::<5, 10>::new(6));
- )*}
-
- #[test]
- fn some_unchecked() {$(
- // Safety: The value is in range.
- unsafe {
- assert_eq!($opt::<5, 10>::some_unchecked(10), $opt::Some($t::<5, 10>::MAX));
- }
- )*}
-
- #[test]
- fn is_some() {$(
- assert!($opt::<5, 10>::Some($t::<5, 10>::MAX).is_some());
- )*}
-
- #[test]
- fn is_none() {$(
- assert!($opt::<5, 10>::None.is_none());
- )*}
-
- #[test]
- fn is_some_by_ref() {$(
- let value = $opt::<5, 10>::Some($t::<5, 10>::MAX);
- assert!($opt::is_some(&value));
- )*}
-
- #[test]
- fn is_none_by_ref() {$(
- let value = $opt::<5, 10>::None;
- assert!($opt::is_none(&value));
- )*}
-
- #[test]
- fn default() {$(
- assert_eq!($opt::<5, 10>::default(), $opt::<5, 10>::None);
- )*}
-
- #[test]
- fn get() {$(
- assert_eq!($t::<5, 10>::MAX.get(), 10);
- assert_eq!($opt::<5, 10>::None.get(), None);
- assert_eq!($opt::Some($t::<5, 10>::MAX).get(), Some($t::<5, 10>::MAX));
- )*}
-
- #[test]
- fn get_primitive() {$(
- assert_eq!($opt::Some($t::<5, 10>::MAX).get_primitive(), Some(10));
- assert_eq!($opt::<5, 10>::None.get_primitive(), None);
- )*}
-
- #[test]
- fn get_ref() {$(
- assert_eq!($t::<5, 10>::MAX.get_ref(), &10);
- )*}
-
- #[test]
- fn new_saturating() {$(
- assert_eq!($t::<5, 10>::new_saturating(11), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::new_saturating(0), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::new_saturating(9), $t::<5, 10>::new_static::<9>());
- )*}
-
- #[test]
- fn from_str_radix() {$(
- assert_eq!($t::<5, 10>::from_str_radix("10", 10), Ok($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::from_str_radix("5", 10), Ok($t::<5, 10>::MIN));
- assert_eq!(
- $t::<5, 10>::from_str_radix("4", 10),
- Err(ParseIntError { kind: IntErrorKind::NegOverflow }),
- );
- assert_eq!(
- $t::<5, 10>::from_str_radix("11", 10),
- Err(ParseIntError { kind: IntErrorKind::PosOverflow }),
- );
- assert_eq!(
- $t::<5, 10>::from_str_radix("", 10),
- Err(ParseIntError { kind: IntErrorKind::Empty }),
- );
- )*}
-
- #[test]
- fn checked_add() {$(
- assert_eq!($t::<5, 10>::MAX.checked_add(1), None);
- assert_eq!($t::<5, 10>::MAX.checked_add(0), Some($t::<5, 10>::MAX));
- )*}
-
- #[test]
- fn unchecked_add() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MIN.unchecked_add(5), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_sub() {$(
- assert_eq!($t::<5, 10>::MIN.checked_sub(1), None);
- assert_eq!($t::<5, 10>::MIN.checked_sub(0), Some($t::<5, 10>::MIN));
- )*}
-
- #[test]
- fn unchecked_sub() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_sub(5), $t::<5, 10>::MIN);
- }
- )*}
-
- #[test]
- fn checked_mul() {$(
- assert_eq!($t::<5, 10>::MAX.checked_mul(2), None);
- assert_eq!($t::<5, 10>::MAX.checked_mul(1), Some($t::<5, 10>::MAX));
- )*}
-
- #[test]
- fn unchecked_mul() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_mul(1), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_div() {$(
- assert_eq!($t::<5, 10>::MAX.checked_div(3), None);
- assert_eq!($t::<5, 10>::MAX.checked_div(2), $t::<5, 10>::new(5));
- assert_eq!($t::<5, 10>::MAX.checked_div(1), Some($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::MAX.checked_div(0), None);
- )*}
-
- #[test]
- fn unchecked_div() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_div(1), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_div_euclid() {$(
- assert_eq!($t::<5, 10>::MAX.checked_div_euclid(3), None);
- assert_eq!($t::<5, 10>::MAX.checked_div_euclid(2), $t::<5, 10>::new(5));
- assert_eq!($t::<5, 10>::MAX.checked_div_euclid(1), Some($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::MAX.checked_div_euclid(0), None);
- )*}
-
- #[test]
- fn unchecked_div_euclid() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_div_euclid(1), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn rem() {$(if_unsigned! { $signed
- assert_eq!($t::<5, 10>::MAX.rem($t::exact::<3>()), $t::<0, 3>::new_static::<1>());
- assert_eq!($t::<5, 10>::MAX.rem($t::exact::<5>()), $t::<0, 5>::MIN);
- })*}
-
- #[test]
- fn checked_rem() {$(
- assert_eq!($t::<5, 10>::MAX.checked_rem(11), Some($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::MAX.checked_rem(5), None);
- )*}
-
- #[test]
- fn unchecked_rem() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_rem(11), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_rem_euclid() {$(
- assert_eq!($t::<5, 10>::MAX.checked_rem_euclid(11), Some($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::MAX.checked_rem_euclid(5), None);
- )*}
-
- #[test]
- fn unchecked_rem_euclid() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_rem_euclid(11), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_neg() {$(
- assert_eq!($t::<5, 10>::MIN.checked_neg(), None);
- assert_eq!($t::<0, 10>::MIN.checked_neg(), Some($t::<0, 10>::MIN));
- )*}
-
- #[test]
- fn unchecked_neg() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<0, 10>::MIN.unchecked_neg(), $t::<0, 10>::MIN);
- }
- )*}
-
- #[test]
- fn neg() {$( if_signed! { $signed
- assert_eq!($t::<-10, 10>::MIN.neg(), $t::<-10, 10>::MAX);
- })*}
-
- #[test]
- fn checked_shl() {$(
- assert_eq!($t::<5, 10>::MAX.checked_shl(1), None);
- assert_eq!($t::<5, 10>::MAX.checked_shl(0), Some($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::MIN.checked_shl(1), Some($t::<5, 10>::MAX));
- )*}
-
- #[test]
- fn unchecked_shl() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_shl(0), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::MIN.unchecked_shl(1), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_shr() {$(
- assert_eq!($t::<5, 10>::MAX.checked_shr(2), None);
- assert_eq!($t::<5, 10>::MAX.checked_shr(1), Some($t::<5, 10>::MIN));
- assert_eq!($t::<5, 10>::MAX.checked_shr(0), Some($t::<5, 10>::MAX));
- )*}
-
- #[test]
- fn unchecked_shr() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_shr(1), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MAX.unchecked_shr(0), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn checked_abs() {$( if_signed! { $signed
- assert_eq!($t::<5, 10>::MAX.checked_abs(), Some($t::<5, 10>::MAX));
- assert_eq!($t::<-10, 10>::MIN.checked_abs(), Some($t::<-10, 10>::MAX));
- assert_eq!($t::<-10, 0>::MIN.checked_abs(), None);
- })*}
-
- #[test]
- fn unchecked_abs() { $(if_signed! { $signed
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_abs(), $t::<5, 10>::MAX);
- assert_eq!($t::<-10, 10>::MIN.unchecked_abs(), $t::<-10, 10>::MAX);
- }
- })*}
-
- #[test]
- fn abs() { $(if_signed! { $signed
- assert_eq!($t::<-5, 10>::MIN.abs().get(), 5);
- })*}
-
- #[test]
- fn checked_pow() {$(
- assert_eq!($t::<5, 10>::MAX.checked_pow(0), None);
- assert_eq!($t::<5, 10>::MAX.checked_pow(1), Some($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::MAX.checked_pow(2), None);
- )*}
-
- #[test]
- fn unchecked_pow() {$(
- // Safety: The result is in range.
- unsafe {
- assert_eq!($t::<5, 10>::MAX.unchecked_pow(1), $t::<5, 10>::MAX);
- }
- )*}
-
- #[test]
- fn saturating_add() {$(
- assert_eq!($t::<5, 10>::MAX.saturating_add(0), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::MAX.saturating_add(1), $t::<5, 10>::MAX);
- )*}
-
- #[test]
- fn wrapping_add() {
- $(
- assert_eq!($t::<5, 10>::MAX.wrapping_add(0), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::MAX.wrapping_add(1), $t::<5, 10>::MIN);
- assert_eq!($t::<{ $inner::MIN }, { $inner::MAX }>::MAX.wrapping_add(1),
- $t::<{ $inner::MIN }, { $inner::MAX }>::MIN);
- for i in 1..127 {
- assert_eq!(
- $t::<{ $inner::MIN}, { $inner::MAX - 1 }>::MAX.wrapping_add(i),
- $t::<{ $inner::MIN}, { $inner::MAX - 1 }>::new($inner::MIN + i - 1).unwrap_or_else(|| panic!("adding {i}+{} does not yield {}", $inner::MIN, $inner::MAX + i ))
- );
- }
- )*
- $(if_signed! { $signed
- for i in 1..=127 {
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(-i), $t::<-5,126>::new(126-i+1).unwrap_or_else(|| panic!("adding {i}+{} does not yield {}", $inner::MIN, 126-i+1)));
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(i), $t::<-5,126>::new(-5+i).unwrap_or_else(|| panic!("adding {i}+{} does not yield {}", $inner::MIN, 126-i+1)));
- }
- for i in -127..=-1 {
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(i), $t::<-5,126>::new(126+i+1).unwrap_or_else(|| panic!("adding {i}+{} does not yield {}", $inner::MIN, 126-i+1)));
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(-i), $t::<-5,126>::new(-5-i).unwrap_or_else(|| panic!("adding {i}+{} does not yield {}", $inner::MIN, 126-i+1)));
- }
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(-128), $t::<-5,126>::new(-1).unwrap_or_else(|| panic!("adding 128+{} does not yield -1", $inner::MIN)));
- assert_eq!($t::<-5, 10>::MAX.wrapping_add(0), $t::<-5, 10>::MAX);
- assert_eq!($t::<-5, -3>::MIN.wrapping_add(-1-3), $t::<-5, -3>::MAX);
- assert_eq!($t::<-5, -3>::MIN.wrapping_add(-1-30), $t::<-5, -3>::MAX);
- assert_eq!($t::<-5, -3>::MIN.wrapping_add(30), $t::<-5, -3>::MIN);
- assert_eq!($t::<-5, -3>::MIN.wrapping_add(-30), $t::<-5, -3>::MIN);
- assert_eq!($t::<-5, 10>::MAX.wrapping_add(25), $t::<-5, 10>::MIN.wrapping_add(24));
- assert_eq!($t::<-5, 10>::MIN.wrapping_add(24), $t::<-5, 10>::MIN.wrapping_add(8));
- assert_eq!($t::<-5, 10>::MAX.wrapping_add(1), $t::<-5, 10>::MIN);
- assert_eq!($t::<-5, 10>::MIN.wrapping_add(-1), $t::<-5, 10>::MAX);
- assert_eq!($t::<-5, 127>::MIN.wrapping_add(-1), $t::<-5, 127>::MAX);
- assert_eq!($t::<-127, 126>::MIN.wrapping_add(-1), $t::<-127, 126>::MAX);
- assert_eq!($t::<{ $inner::MIN }, { $inner::MAX }>::MIN.wrapping_add(-1),
- $t::<{ $inner::MIN }, { $inner::MAX }>::MAX);
- })*
- }
-
- #[test]
- fn wrapping_sub() {
- $(
- assert_eq!($t::<5, 10>::MIN.wrapping_sub(0), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MIN.wrapping_sub(1), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::new(5 + 1).unwrap().wrapping_sub(1), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MAX.wrapping_sub(1), $t::<5, 10>::new(10 - 1).unwrap());
- assert_eq!($t::<{ $inner::MIN }, { $inner::MAX }>::MIN.wrapping_sub(1),
- $t::<{ $inner::MIN }, { $inner::MAX }>::MAX);
- for i in 1..127 {
- assert_eq!(
- $t::<{ $inner::MIN + 1 }, { $inner::MAX }>::MIN.wrapping_sub(i),
- $t::<{ $inner::MIN + 1 }, { $inner::MAX }>::new($inner::MAX - i + 1).unwrap_or_else(|| panic!("failed test at iteration {i}"))
- );
- }
- )*
- $(if_signed! { $signed
- for i in -127..=127 {
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(i), $t::<-5,126>::MIN.wrapping_sub(-i), "failed test at {i}");
- assert_eq!($t::<-5, 126>::MIN.wrapping_add(-i), $t::<-5,126>::MIN.wrapping_sub(i), "failed test at {i}");
- }
- assert_eq!(
- $t::<-5, 126>::MIN.wrapping_add(127).wrapping_add(1),
- $t::<-5,126>::MIN.wrapping_sub(-128)
- );
- assert_eq!(
- $t::<-5, 126>::MIN.wrapping_add(-128),
- $t::<-5,126>::MIN.wrapping_sub(127).wrapping_sub(1)
- );
- })*
- }
-
- #[test]
- fn saturating_sub() {$(
- assert_eq!($t::<5, 10>::MIN.saturating_sub(0), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MIN.saturating_sub(1), $t::<5, 10>::MIN);
- )*}
-
- #[test]
- fn saturating_neg() {$(if_signed! { $signed
- assert_eq!($t::<5, 10>::MIN.saturating_neg(), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MAX.saturating_neg(), $t::<5, 10>::MIN);
- assert_eq!($t::<-10, 0>::MIN.saturating_neg(), $t::<-10, 0>::MAX);
- assert_eq!($t::<-10, 0>::MAX.saturating_neg(), $t::<-10, 0>::MAX);
- })*}
-
- #[test]
- fn saturating_abs() {$(if_signed! { $signed
- assert_eq!($t::<5, 10>::MIN.saturating_abs(), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MAX.saturating_abs(), $t::<5, 10>::MAX);
- assert_eq!($t::<-10, 0>::MIN.saturating_abs(), $t::<-10, 0>::MAX);
- assert_eq!($t::<-10, 0>::MAX.saturating_abs(), $t::<-10, 0>::MAX);
- })*}
-
- #[test]
- fn saturating_mul() {$(
- assert_eq!($t::<5, 10>::MIN.saturating_mul(0), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MIN.saturating_mul(1), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MIN.saturating_mul(2), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::MIN.saturating_mul(3), $t::<5, 10>::MAX);
- )*}
-
- #[test]
- fn saturating_pow() {$(
- assert_eq!($t::<5, 10>::MIN.saturating_pow(0), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MIN.saturating_pow(1), $t::<5, 10>::MIN);
- assert_eq!($t::<5, 10>::MIN.saturating_pow(2), $t::<5, 10>::MAX);
- assert_eq!($t::<5, 10>::MIN.saturating_pow(3), $t::<5, 10>::MAX);
- )*}
-
- #[test]
- fn as_ref() {$(
- assert_eq!($t::<5, 10>::MIN.as_ref(), &5);
- assert_eq!($t::<5, 10>::MAX.as_ref(), &10);
- )*}
-
- #[test]
- fn borrow() {
- use core::borrow::Borrow;
- $(
- assert_eq!(Borrow::<$inner>::borrow(&$t::<5, 10>::MIN), &5);
- assert_eq!(Borrow::<$inner>::borrow(&$t::<5, 10>::MAX), &10);
- )*
- }
-
- #[test]
- fn formatting() {$(
- let val = $t::<5, 10>::MAX;
- assert_eq!(format!("{}", val), "10");
- assert_eq!(format!("{:?}", val), "10");
- assert_eq!(format!("{:b}", val), "1010");
- assert_eq!(format!("{:o}", val), "12");
- assert_eq!(format!("{:x}", val), "a");
- assert_eq!(format!("{:X}", val), "A");
- assert_eq!(format!("{:e}", val), "1e1");
- assert_eq!(format!("{:E}", val), "1E1");
-
- assert_eq!(format!("{:?}", $opt::Some($t::<5, 10>::MAX)), "Some(10)");
- assert_eq!(format!("{:?}", $opt::<5, 10>::None), "None");
- )*}
-
- #[test]
- fn ord() {$(
- assert!($t::<5, 10>::MIN < $t::<5, 10>::MAX);
- assert!($t::<5, 10>::MIN <= $t::<5, 10>::MAX);
- assert!($t::<5, 10>::MAX > $t::<5, 10>::MIN);
- assert!($t::<5, 10>::MAX >= $t::<5, 10>::MIN);
-
- let none = $opt::<5, 10>::None;
- let five = $opt::Some($t::<5, 10>::MIN);
- let ten = $opt::Some($t::<5, 10>::MAX);
-
- assert_eq!(none.cmp(&none), core::cmp::Ordering::Equal);
- assert_eq!(five.cmp(&five), core::cmp::Ordering::Equal);
- assert_eq!(ten.cmp(&ten), core::cmp::Ordering::Equal);
- assert_eq!(none.cmp(&five), core::cmp::Ordering::Less);
- assert_eq!(five.cmp(&ten), core::cmp::Ordering::Less);
- assert_eq!(none.cmp(&ten), core::cmp::Ordering::Less);
- assert_eq!(ten.cmp(&none), core::cmp::Ordering::Greater);
-
- let none = $opt::<0, 10>::None;
- let zero = $opt::Some($t::<0, 10>::MIN);
- let ten = $opt::Some($t::<0, 10>::MAX);
-
- assert_eq!(none.partial_cmp(&none), Some(core::cmp::Ordering::Equal));
- assert_eq!(none.partial_cmp(&zero), Some(core::cmp::Ordering::Less));
- assert_eq!(zero.partial_cmp(&ten), Some(core::cmp::Ordering::Less));
- assert_eq!(none.partial_cmp(&ten), Some(core::cmp::Ordering::Less));
- assert_eq!(ten.partial_cmp(&none), Some(core::cmp::Ordering::Greater));
- )*}
-
- #[test]
- fn from() {$(
- assert_eq!($inner::from($t::<5, 10>::MAX), 10);
- assert_eq!($inner::from($t::<5, 10>::MIN), 5);
-
- assert_eq!($opt::from($t::<5, 10>::MAX), $opt::Some($t::<5, 10>::MAX));
- assert_eq!($opt::from(Some($t::<5, 10>::MAX)), $opt::Some($t::<5, 10>::MAX));
- assert_eq!($opt::<5, 10>::from(None), $opt::<5, 10>::None);
- assert_eq!(Option::from($opt::Some($t::<5, 10>::MAX)), Some($t::<5, 10>::MAX));
- assert_eq!(Option::<$t<5, 10>>::from($opt::<5, 10>::None), None);
- )*}
-
- #[test]
- fn try_from() {$(
- assert_eq!($t::<5, 10>::try_from(10), Ok($t::<5, 10>::MAX));
- assert_eq!($t::<5, 10>::try_from(5), Ok($t::<5, 10>::MIN));
- assert_eq!($t::<5, 10>::try_from(4), Err(TryFromIntError));
- assert_eq!($t::<5, 10>::try_from(11), Err(TryFromIntError));
- )*}
-
- #[test]
- fn from_str() {$(
- assert_eq!("10".parse::<$t<5, 10>>(), Ok($t::<5, 10>::MAX));
- assert_eq!("5".parse::<$t<5, 10>>(), Ok($t::<5, 10>::MIN));
- assert_eq!("4".parse::<$t<5, 10>>(), Err(ParseIntError { kind: IntErrorKind::NegOverflow }));
- assert_eq!("11".parse::<$t<5, 10>>(), Err(ParseIntError { kind: IntErrorKind::PosOverflow }));
- assert_eq!("".parse::<$t<5, 10>>(), Err(ParseIntError { kind: IntErrorKind::Empty }));
- )*}
-
- #[cfg(feature = "serde")]
- #[test]
- fn serde() -> serde_json::Result<()> {
- $(
- let val = $t::<5, 10>::MAX;
- let serialized = serde_json::to_string(&val)?;
- assert_eq!(serialized, "10");
- let deserialized: $t<5, 10> = serde_json::from_str(&serialized)?;
- assert_eq!(deserialized, val);
-
- assert!(serde_json::from_str::<$t<5, 10>>("").is_err());
- assert!(serde_json::from_str::<$t<5, 10>>("4").is_err());
- assert!(serde_json::from_str::<$t<5, 10>>("11").is_err());
-
- let val = $opt::<5, 10>::Some($t::<5, 10>::MAX);
- let serialized = serde_json::to_string(&val)?;
- assert_eq!(serialized, "10");
- let deserialized: $opt<5, 10> = serde_json::from_str(&serialized)?;
- assert_eq!(deserialized, val);
-
- assert!(serde_json::from_str::<$opt<5, 10>>("").is_err());
- assert!(serde_json::from_str::<$opt<5, 10>>("4").is_err());
- assert!(serde_json::from_str::<$opt<5, 10>>("11").is_err());
-
- let val = $opt::<5, 10>::None;
- let serialized = serde_json::to_string(&val)?;
- assert_eq!(serialized, "null");
-
- assert!(serde_json::from_str::<$opt<5, 10>>("").is_err());
- assert!(serde_json::from_str::<$opt<5, 10>>("4").is_err());
- assert!(serde_json::from_str::<$opt<5, 10>>("11").is_err());
- )*
- Ok(())
- }
-
- #[cfg(feature = "rand08")]
- #[test]
- fn rand08() {$(
- let rand_val: $t<5, 10> = rand08::random();
- assert!(rand_val >= $t::<5, 10>::MIN);
- assert!(rand_val <= $t::<5, 10>::MAX);
-
- let rand: $opt<5, 10> = rand08::random();
- if let Some(rand) = rand.get() {
- assert!(rand >= $t::<5, 10>::MIN);
- assert!(rand <= $t::<5, 10>::MAX);
- }
- )*}
-
- #[cfg(feature = "rand09")]
- #[test]
- fn rand09() {$(
- let rand_val: $t<5, 10> = rand09::random();
- assert!(rand_val >= $t::<5, 10>::MIN);
- assert!(rand_val <= $t::<5, 10>::MAX);
-
- let rand: $opt<5, 10> = rand09::random();
- if let Some(rand) = rand.get() {
- assert!(rand >= $t::<5, 10>::MIN);
- assert!(rand <= $t::<5, 10>::MAX);
- }
- )*}
-
- #[cfg(feature = "num")]
- #[test]
- fn num() {$(
- assert_eq!(<$t<5, 10> as num_traits::Bounded>::min_value(), $t::<5, 10>::MIN);
- assert_eq!(<$t<5, 10> as num_traits::Bounded>::max_value(), $t::<5, 10>::MAX);
- )*}
-
- #[cfg(feature = "quickcheck")]
- #[test]
- fn quickcheck() {$(
- #[allow(trivial_casts)]
- quickcheck::quickcheck((|val| {
- val >= $t::<5, 10>::MIN && val <= $t::<5, 10>::MAX
- }) as fn($t<5, 10>) -> bool);
-
- #[allow(trivial_casts)]
- quickcheck::quickcheck((|val| {
- if let Some(val) = val.get() {
- val >= $t::<5, 10>::MIN && val <= $t::<5, 10>::MAX
- } else {
- true
- }
- }) as fn($opt<5, 10>) -> bool);
- )*}
- };
-}
-
-tests![
- signed OptionRangedI8 RangedI8 i8,
- signed OptionRangedI16 RangedI16 i16,
- signed OptionRangedI32 RangedI32 i32,
- signed OptionRangedI64 RangedI64 i64,
- signed OptionRangedI128 RangedI128 i128,
- signed OptionRangedIsize RangedIsize isize,
- unsigned OptionRangedU8 RangedU8 u8,
- unsigned OptionRangedU16 RangedU16 u16,
- unsigned OptionRangedU32 RangedU32 u32,
- unsigned OptionRangedU64 RangedU64 u64,
- unsigned OptionRangedU128 RangedU128 u128,
- unsigned OptionRangedUsize RangedUsize usize,
-];