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 }
18
18
serde = { version = " 1.0" , optional = true , default-features = false }
19
19
schemars = { version = " 0.6.5" , optional = true }
20
20
rand = { version = " 0.8.3" , optional = true , default-features = false }
21
+ proptest = { version = " 1.0.0" , optional = true }
21
22
22
23
[dev-dependencies ]
23
24
serde_test = " 1.0"
24
25
25
26
[features ]
26
- default = [" std" ]
27
- std = [" num-traits/std" ]
27
+ default = [" std" ]
28
+ std = [" num-traits/std" ]
28
29
randtest = [" rand/std" , " rand/std_rng" ]
Original file line number Diff line number Diff line change @@ -1808,3 +1808,36 @@ mod impl_rand {
1808
1808
}
1809
1809
}
1810
1810
}
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