Comments (2)
For reference, the source:
extern crate quickcheck;
#[macro_use] extern crate custom_derive;
use quickcheck::Arbitrary;
custom_derive! {
#[derive(Clone,Debug)]
struct Mumu {
a : u32,
b : String,
}
}
#[derive(Clone,Debug)]
enum Qqq {
Lol,
Ror,
Kokoko(Mumu),
Totot(u32),
}
impl Arbitrary for Mumu {
fn arbitrary<G : quickcheck::Gen>(g:&mut G) -> Mumu {
Mumu {a : Arbitrary::arbitrary(g), b : Arbitrary::arbitrary(g) }
}
fn shrink(&self) -> Box<Iterator<Item=Self>> {
Box::new ( (self.a.clone(), self.b.clone()).shrink().map(|(aa,bb)| Mumu { a: aa, b:bb}))
}
}
impl Arbitrary for Qqq {
fn arbitrary<G : quickcheck::Gen>(g:&mut G) -> Qqq {
let y = g.next_u32() % 4;
match y {
0 => Qqq::Lol,
1 => Qqq::Ror,
2 => Qqq::Kokoko(Arbitrary::arbitrary(g)),
3 => Qqq::Totot(Arbitrary::arbitrary(g)),
_ => panic!(),
}
}
fn shrink(&self) -> Box<Iterator<Item=Self>> {
match self {
&Qqq::Totot(ref x) => Box::new(x.shrink().map(|s| Qqq::Totot(s))),
&Qqq::Kokoko(ref x) => Box::new(x.shrink().map(|s| Qqq::Kokoko(s))),
_ => quickcheck::empty_shrinker(),
}
}
}
#[test]
fn it_works() {
fn qqq(x : Qqq) -> bool {
if let Qqq::Kokoko(Mumu { a : v, b: bb }) = x {
//println!("{}\n", bb);
return v != 4 && bb.chars().nth(1).unwrap_or('4') != '1'
}
true
}
quickcheck::QuickCheck::new().tests(10_000_000).quickcheck(qqq as fn(Qqq) -> bool);
/*quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);
quickcheck::QuickCheck::new().tests(1000_000_000).quickcheck(qqq as fn(Qqq) -> bool);*/
}
from quickcheck.
I think this should be fixed now. @vi can you confirm?
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
- <newbie> How to generate a number within a range HOT 2
- 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.