interval-algebra-2.1.2: An implementation of Allen's interval algebra for temporal logic
Copyright(c) NoviSci Inc 2020
LicenseBSD3
Maintainerbsaul@novisci.com
Stabilityexperimental
Safe HaskellSafe
LanguageHaskell2010

IntervalAlgebra.Arbitrary

Description

 
Synopsis

Documentation

arbitraryWithRelation Source #

Arguments

:: forall i a b. (IntervalSizeable a b, Intervallic i, Arbitrary (i a)) 
=> i a

reference interval

-> Set IntervalRelation

set of IntervalRelations, of which at least one will hold for the generated interval relative to the reference

-> 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)

Orphan instances

Arbitrary Day Source # 
Instance details

Methods

arbitrary :: Gen Day

shrink :: Day -> [Day]

Arbitrary DiffTime Source # 
Instance details

Arbitrary NominalDiffTime Source # 
Instance details

Arbitrary UTCTime Source # 
Instance details

Methods

arbitrary :: Gen UTCTime

shrink :: UTCTime -> [UTCTime]