Comments (4)
I tried to clarify this in 97d5d12.
Is this what you meant? You emphasized "all values", but I don't see why it has to be so. You could write a reduced generator for a large testing space. Can you explain what you mean by consN not working correctly?
from smallcheck.
Thanks for following up on this.
I guess the underlying issue is that the specification of the consN functions is left implicit. Example: why is "instance ... where series d = [d]" not a good generator for natural numbers? Note that with Test.SmallCheck.smallCheck, it behaves as a complete enumeration. But the cons2 of two such generators will not produce all pairs, as I was expecting, but only identical pairs.
More formally, I was expecting that the following holds:
Specification: if consN is applied to "complete" generators, the result will be a complete generator (for the product type)
(and a similar statement for the instances (Serial a, Serial b) => Serial (a,b) etc)
where I was assuming the definition of "complete" is "enumeration (with possible repetitions)":
Definition-1 (wrong): a generator (a Serial instance) is called "complete" for a set S, if for each element x in S, there is some d in Int such that x is contained in series d.
but the above example shows that this is not correct, and the truth is more like:
Definition-2: a generator (a Serial instance) is called "complete" for a set S, if the sequence [ series 0, series 1, ...]
is monotonically increasing (w.r.t. inclusion of the underlying sets) and its limit (supremum, union) is S.
Well, since hackage has source links, it's maybe easier to look at the (one-line) implementation of consN. But on the other hand, testing is about separating specification from implementation, so ...
from smallcheck.
I see. It seems to me that the main confusion was that "series d" should return only values of depth exactly d rather than up to d. But your point about unspecified behaviour of consN is also valid.
I tried to address those in 23d018b and 0340f53.
Please let me know what you think.
from smallcheck.
Yes, I like it.
from smallcheck.
Related Issues (20)
- Add 'tasty' instead of test-framework to docs as an option for running smallcheck HOT 1
- Documentation: types with >4 fields HOT 1
- Fix the tests!
- smallcheck-1.1.1 doesn't compile with current GHC head snapshot HOT 2
- Port some convenience list functions from QuickCheck HOT 2
- Serial and CoSerial instances for `Word` HOT 3
- Review `v1.1.1` restoration commit before pushing HOT 7
- Smallcheck defines an orphan which overlaps `Show (a -> b)` instance from base HOT 3
- Serial instance for base types HOT 2
- Show the bad tests(the ones which didn't meet the ==> condition) even on success HOT 1
- test function of Property type class is not available HOT 4
- Could not find module Numeric.Natural in GHC 7.8 HOT 1
- How to generate a non-empty list of items with a predicate (using suchThat)? HOT 2
- Smallcheck fails to build due to the Safe pragma HOT 3
- Extract Number Wrappers HOT 2
- Generically derived Serial instance for mutually recursive data type causes infinite loop HOT 2
- depth for generics is broken HOT 5
- Builf failure: Test.SmallCheck.Series: GHC.Base.MonadPlus ml HOT 4
- build errors with GHC-7.4 HOT 2
- Clarify the deprecation statement 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 smallcheck.