From 2f8d9a23eea261152bb90fa620e96cfc2715de4a Mon Sep 17 00:00:00 2001 From: Jacob Kiesel Date: Wed, 20 Mar 2019 15:07:16 -0600 Subject: [PATCH 1/3] Add NAN test to docs --- src/libstd/f32.rs | 1 + src/libstd/f64.rs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/libstd/f32.rs b/src/libstd/f32.rs index 2fabe30fa9366..a5e28722054a5 100644 --- a/src/libstd/f32.rs +++ b/src/libstd/f32.rs @@ -970,6 +970,7 @@ impl f32 { /// assert!((-3.0f32).clamp(-2.0f32, 1.0f32) == -2.0f32); /// assert!((0.0f32).clamp(-2.0f32, 1.0f32) == 0.0f32); /// assert!((2.0f32).clamp(-2.0f32, 1.0f32) == 1.0f32); + /// assert!((std::f32::NAN).clamp(-2.0f32, 1.0f32).is_nan()); /// ``` #[unstable(feature = "clamp", issue = "44095")] #[inline] diff --git a/src/libstd/f64.rs b/src/libstd/f64.rs index a471117f6d6fd..f69c0b8aae356 100644 --- a/src/libstd/f64.rs +++ b/src/libstd/f64.rs @@ -892,6 +892,7 @@ impl f64 { /// assert!((-3.0f64).clamp(-2.0f64, 1.0f64) == -2.0f64); /// assert!((0.0f64).clamp(-2.0f64, 1.0f64) == 0.0f64); /// assert!((2.0f64).clamp(-2.0f64, 1.0f64) == 1.0f64); + /// assert!((std::f64::NAN).clamp(-2.0f32, 1.0f32).is_nan()); /// ``` #[unstable(feature = "clamp", issue = "44095")] #[inline] From e2b5a0334de402b85af6b9aa681fe11c9a3bb6f0 Mon Sep 17 00:00:00 2001 From: Jacob Kiesel Date: Wed, 20 Mar 2019 15:16:50 -0600 Subject: [PATCH 2/3] Fix formatting and add unit tests for panic cases --- src/libstd/f32.rs | 20 +++++++++++++++++++- src/libstd/f64.rs | 20 +++++++++++++++++++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/libstd/f32.rs b/src/libstd/f32.rs index a5e28722054a5..688d9c1aabbee 100644 --- a/src/libstd/f32.rs +++ b/src/libstd/f32.rs @@ -970,7 +970,7 @@ impl f32 { /// assert!((-3.0f32).clamp(-2.0f32, 1.0f32) == -2.0f32); /// assert!((0.0f32).clamp(-2.0f32, 1.0f32) == 0.0f32); /// assert!((2.0f32).clamp(-2.0f32, 1.0f32) == 1.0f32); - /// assert!((std::f32::NAN).clamp(-2.0f32, 1.0f32).is_nan()); + /// assert!((std::f32::NAN).clamp(-2.0f32, 1.0f32).is_nan()); /// ``` #[unstable(feature = "clamp", issue = "44095")] #[inline] @@ -1582,4 +1582,22 @@ mod tests { assert_eq!(f32::from_bits(masked_nan1).to_bits(), masked_nan1); assert_eq!(f32::from_bits(masked_nan2).to_bits(), masked_nan2); } + + #[test] + #[should_panic] + fn test_clamp_min_greater_than_max() { + 1.0f32.clamp(3.0, 1.0); + } + + #[test] + #[should_panic] + fn test_clamp_min_is_nan() { + 1.0f32.clamp(NAN, 1.0); + } + + #[test] + #[should_panic] + fn test_clamp_max_is_nan() { + 1.0f32.clamp(3.0, NAN); + } } diff --git a/src/libstd/f64.rs b/src/libstd/f64.rs index f69c0b8aae356..5c3bc05c15f15 100644 --- a/src/libstd/f64.rs +++ b/src/libstd/f64.rs @@ -892,7 +892,7 @@ impl f64 { /// assert!((-3.0f64).clamp(-2.0f64, 1.0f64) == -2.0f64); /// assert!((0.0f64).clamp(-2.0f64, 1.0f64) == 0.0f64); /// assert!((2.0f64).clamp(-2.0f64, 1.0f64) == 1.0f64); - /// assert!((std::f64::NAN).clamp(-2.0f32, 1.0f32).is_nan()); + /// assert!((std::f64::NAN).clamp(-2.0f32, 1.0f32).is_nan()); /// ``` #[unstable(feature = "clamp", issue = "44095")] #[inline] @@ -1523,4 +1523,22 @@ mod tests { assert_eq!(f64::from_bits(masked_nan1).to_bits(), masked_nan1); assert_eq!(f64::from_bits(masked_nan2).to_bits(), masked_nan2); } + + #[test] + #[should_panic] + fn test_clamp_min_greater_than_max() { + 1.0f64.clamp(3.0, 1.0); + } + + #[test] + #[should_panic] + fn test_clamp_min_is_nan() { + 1.0f64.clamp(NAN, 1.0); + } + + #[test] + #[should_panic] + fn test_clamp_max_is_nan() { + 1.0f64.clamp(3.0, NAN); + } } From 72f5d9137e33fe4aa251dab44c0fc4de71a1a366 Mon Sep 17 00:00:00 2001 From: Jacob Kiesel Date: Wed, 20 Mar 2019 16:59:46 -0600 Subject: [PATCH 3/3] Fix f64 test --- src/libstd/f64.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libstd/f64.rs b/src/libstd/f64.rs index 5c3bc05c15f15..b171e1c7ac93f 100644 --- a/src/libstd/f64.rs +++ b/src/libstd/f64.rs @@ -892,7 +892,7 @@ impl f64 { /// assert!((-3.0f64).clamp(-2.0f64, 1.0f64) == -2.0f64); /// assert!((0.0f64).clamp(-2.0f64, 1.0f64) == 0.0f64); /// assert!((2.0f64).clamp(-2.0f64, 1.0f64) == 1.0f64); - /// assert!((std::f64::NAN).clamp(-2.0f32, 1.0f32).is_nan()); + /// assert!((std::f64::NAN).clamp(-2.0f64, 1.0f64).is_nan()); /// ``` #[unstable(feature = "clamp", issue = "44095")] #[inline]