Copyright | (c) NoviSci Inc 2020 |
---|---|
License | BSD3 |
Maintainer | bsaul@novisci.com |
Stability | experimental |
Safe Haskell | Safe |
Language | Haskell2010 |
Synopsis
- arbitraryWithRelation :: forall i a b. (IntervalSizeable a b, Intervallic i a, Arbitrary (i a)) => i a -> Set IntervalRelation -> Gen (Maybe (i a))
Documentation
arbitraryWithRelation Source #
:: forall i a b. (IntervalSizeable a b, Intervallic i a, Arbitrary (i a)) | |
=> i a | reference interval |
-> Set IntervalRelation | set of |
-> Gen (Maybe (i a)) |
Conditional generation of intervals relative to a reference. If the
reference iv
is of moment
duration, it is not possible to generate
intervals from the strict enclose relations StartedBy, Contains, FinishedBy.
If iv
and rs
are such that no possible relations can be generated, this
function returns Nothing
. Otherwise, it returns Just
an interval that
satisfies at least one of the possible relations in rs
relative to
iv
.
> import Test.QuickCheck (generate) > import Data.Set (fromList) > isJust $ generate $ arbitraryWithRelation (beginerval 10 (0::Int)) (fromList [Before]) Just (20, 22) > generate $ arbitraryWithRelation (beginerval 1 (0::Int)) (fromList [StartedBy]) Nothing > generate $ arbitraryWithRelation (beginerval 1 (0::Int)) (fromList [StartedBy, Before]) Just (4, 13)