File tree Expand file tree Collapse file tree 2 files changed +36
-2
lines changed Expand file tree Collapse file tree 2 files changed +36
-2
lines changed Original file line number Diff line number Diff line change @@ -18,11 +18,12 @@ num-traits = { version = "0.2.1", default-features = false }
1818serde = { version = " 1.0" , optional = true , default-features = false }
1919schemars = { version = " 0.6.5" , optional = true }
2020rand = { version = " 0.8.3" , optional = true , default-features = false }
21+ proptest = { version = " 1.0.0" , optional = true }
2122
2223[dev-dependencies ]
2324serde_test = " 1.0"
2425
2526[features ]
26- default = [" std" ]
27- std = [" num-traits/std" ]
27+ default = [" std" ]
28+ std = [" num-traits/std" ]
2829randtest = [" rand/std" , " rand/std_rng" ]
Original file line number Diff line number Diff line change @@ -1808,3 +1808,36 @@ mod impl_rand {
18081808 }
18091809 }
18101810}
1811+
1812+ #[ cfg( feature = "proptest" ) ]
1813+ mod impl_proptest {
1814+ use super :: { NotNan , OrderedFloat } ;
1815+ use proptest:: arbitrary:: { Arbitrary , StrategyFor } ;
1816+ use proptest:: num:: { f32, f64} ;
1817+ use proptest:: strategy:: { FilterMap , Map , Strategy } ;
1818+ use std:: convert:: TryFrom ;
1819+
1820+ macro_rules! impl_arbitrary {
1821+ ( $( $f: ident) ,+) => {
1822+ $(
1823+ impl Arbitrary for NotNan <$f> {
1824+ type Strategy = FilterMap <StrategyFor <$f>, fn ( _: $f) -> Option <NotNan <$f>>>;
1825+ type Parameters = <$f as Arbitrary >:: Parameters ;
1826+ fn arbitrary_with( params: Self :: Parameters ) -> Self :: Strategy {
1827+ <$f>:: arbitrary_with( params)
1828+ . prop_filter_map( "filter nan values" , |f| NotNan :: try_from( f) . ok( ) )
1829+ }
1830+ }
1831+
1832+ impl Arbitrary for OrderedFloat <$f> {
1833+ type Strategy = Map <StrategyFor <$f>, fn ( _: $f) -> OrderedFloat <$f>>;
1834+ type Parameters = <$f as Arbitrary >:: Parameters ;
1835+ fn arbitrary_with( params: Self :: Parameters ) -> Self :: Strategy {
1836+ <$f>:: arbitrary_with( params) . prop_map( |f| OrderedFloat :: from( f) )
1837+ }
1838+ }
1839+ ) *
1840+ }
1841+ }
1842+ impl_arbitrary ! { f32 , f64 }
1843+ }
You can’t perform that action at this time.
0 commit comments