Comments (2)
I see that Arbitrary is implemented on std::ops::Range (https://docs.rs/quickcheck/1.0.3/quickcheck/trait.Arbitrary.html#impl-Arbitrary-for-Range%3CT%3E) but I can't get the syntax right.
The implementation of Arbitrary
you're referring to will generate ranges themselves, not items in that range. For example, you'll get values like (0..17)
rather than, say, 5
.
Currently, AFAIK the only choice you (currently) have is to generate a value of an appropriate type and then restrict/transform that value to fit into your target range. For example:
let value: u32 = Arbitrary::arbitrary(g) % 10;
Plus maybe applying a few tricks to make the distribution completely uniform, but that's usually not necessary.
Should I expect something like Arbitrary::<(0..10)>generate(g) or Arbitrary::generate<(0..10)>(g) to work? I assume (0..10) becomes an actual type?
Not sure what you did want to express. Arbitrary::generate<(0..10)>(g)
would make sense if Arbitrary::generate
would be a generic function (and generic over a std::ops::Range
value rather than a type), but it's not. If you want to invoke a function declared in a trait (e.g. Arbitrary::arbitrary
) for a specific type T
implementing that trait, you just substitute that type for the trait name (e.g. u32::arbitrary()
). For example, you can write the above snippet as:
let value = u32::arbitrary(g) % 10;
https://doc.rust-lang.org/book/appendix-02-operators.html#non-operator-symbols provides more details (table B-3 and B-4 at the time of writing).
from quickcheck.
thanks @neithernut - my poor brain was getting befuddled and you've clarified it for me perfectly. I'm currently doing the (i32::arbitrary(g) % 9) + 1
because I want 1..=10
trick so will continue with that.
from quickcheck.
Related Issues (20)
- Cannot use Rng methods on `Gen` when implementing `Arbitrary` HOT 5
- Identity checking HOT 3
- Stack overflow in quickcheck case shrinking HOT 3
- example case sort TEST FAILED HOT 1
- QuickChecking Const Generic Code HOT 5
- Implement Arbitrary for AsMut<[T: Arbitrary]> HOT 2
- Infinite Repetition/Never Ending Test with `f32` and `f64`. HOT 17
- Q: Idiomatic way to specify the length of an arbitrary vector HOT 7
- Negating an integer leads to stack overflow HOT 2
- upgrade notes would be nice. HOT 1
- debug_reprs taking up 41% of test runtime HOT 2
- warning: panic message is not a string literal HOT 1
- Rng Size for Vec Arbitrary cannot be 0
- Impl Clone for Gen
- Implement something like choose_weighted for `Gen`
- Is this still maintained? HOT 1
- Is quickcheck still maintained? HOT 1
- How to combine quickcheck 1+ with fake? HOT 3
- Durations's Arbitrary instance is dependant on Gen's size HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quickcheck.