-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Standard spec's for optics
--   
--   Standard spec's for optics
@package genvalidity-hspec-optics
@version 0.1.1.1


-- | Standard test <a>Spec</a>s for optics
module Test.Validity.Optics

-- | Standard test spec for properties lenses for valid values
--   
--   Example usage:
--   
--   <pre>
--   lensSpecOnValid ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--   </pre>
lensSpecOnValid :: forall s b. (Show b, Eq b, GenValid b, Show s, Eq s, GenValid s) => Lens s s b b -> Spec

-- | Standard test spec for properties lenses for unchecked values
--   
--   Example usage:
--   
--   <pre>
--   lensSpec ((_2) :: Lens (Int, Int) (Int, Int) Int Int)
--   </pre>
lensSpec :: forall s b. (Show b, Eq b, GenUnchecked b, Validity b, Show s, Eq s, GenUnchecked s, Validity s) => Lens s s b b -> Spec

-- | Standard test spec for properties lenses for arbitrary values
--   
--   Example usage:
--   
--   <pre>
--   lensSpecOnArbitrary ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--   </pre>
lensSpecOnArbitrary :: forall s b. (Show b, Eq b, Arbitrary b, Validity b, Show s, Eq s, Arbitrary s, Validity s) => Lens s s b b -> Spec

-- | Standard test spec for properties lenses for values generated by given
--   generators
--   
--   Example usage:
--   
--   <pre>
--   lensSpecOnGen
--        ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--        (abs &lt;$&gt; genValid)
--        "positive valid doubles"
--        (filter (0.0 &gt;=) . shrinkValid)
--        ((,) &lt;$&gt; (negate . abs &lt;$&gt; genValid) &lt;*&gt; (negate . abs &lt;$&gt; genValid))
--        "tuples of negative valid doubles"
--        (const [])
--   </pre>
lensSpecOnGen :: (Show b, Eq b, Validity b, Show s, Eq s, Validity s) => Lens s s b b -> Gen b -> String -> (b -> [b]) -> Gen s -> String -> (s -> [s]) -> Spec

-- | A property combinator for the first lens law:
--   
--   <pre>
--   view l (set l v s)  ≡ v
--   </pre>
--   
--   Example usage:
--   
--   <pre>
--   lensLaw1 ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational) genValid shrinkValid genValid shrinkValid
--   </pre>
lensLaw1 :: (Show b, Eq b, Show s) => Lens s s b b -> Gen b -> (b -> [b]) -> Gen s -> (s -> [s]) -> Property

-- | A property combinator for the second lens law:
--   
--   <pre>
--   set l (view l s) s  ≡ s
--   </pre>
--   
--   Example usage:
--   
--   <pre>
--   lensLaw2 ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational) genValid shrinkValid
--   </pre>
lensLaw2 :: (Show s, Eq s) => Lens s s b b -> Gen s -> (s -> [s]) -> Property

-- | A property combinator for the third lens law:
--   
--   <pre>
--   set l v' (set l v s) ≡ set l v' s
--   </pre>
--   
--   Example usage:
--   
--   <pre>
--   lensLaw3 ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational) genValid shrinkValid genValid shrinkValid
--   </pre>
lensLaw3 :: (Show b, Eq b, Show s, Eq s) => Lens s s a b -> Gen b -> (b -> [b]) -> Gen s -> (s -> [s]) -> Property

-- | A property combinator to test whether getting values via a lens on
--   valid values produces valid values.
--   
--   Example Usage:
--   
--   <pre>
--   lensGettingProducesValidOnValid ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--   </pre>
lensGettingProducesValidOnValid :: (Show s, GenValid s, Show b, GenValid b) => Lens s s b b -> Property

-- | A property combinator to test whether getting values via a lens on
--   unchecked values produces valid values.
--   
--   Example Usage:
--   
--   <pre>
--   lensGettingProducesValid ((_2) :: Lens (Int, Int) (Int, Int) Int Int)
--   </pre>
lensGettingProducesValid :: (Show s, GenUnchecked s, Show b, Validity b) => Lens s s b b -> Property

-- | A property combinator to test whether getting values via a lens on
--   arbitrary values produces valid values.
--   
--   Example Usage:
--   
--   <pre>
--   lensGettingProducesValidOnArbitrary ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--   </pre>
lensGettingProducesValidOnArbitrary :: (Show s, Arbitrary s, Show b, Validity b) => Lens s s b b -> Property

-- | A property combinator to test whether getting values generated by
--   given a generator via a lens on values generated by a given generator
--   produces valid values.
--   
--   <pre>
--   isValid (view l s)
--   </pre>
--   
--   Example Usage:
--   
--   <pre>
--   lensGettingProducesValidOnGen ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational) genValid shrinkValid
--   </pre>
lensGettingProducesValidOnGen :: (Validity b, Show b, Show s) => Lens s s b b -> Gen s -> (s -> [s]) -> Property

-- | A property combinator to test whether setting valid values via a lens
--   on valid values produces valid values.
--   
--   Example usage:
--   
--   <pre>
--   lensSettingProducesValidOnValid ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--   </pre>
lensSettingProducesValidOnValid :: (Show s, GenValid s, Show b, GenValid b, Show t, Validity t) => Lens s t a b -> Property

-- | A property combinator to test whether setting unchecked values via a
--   lens on unchecked values produces valid values.
--   
--   Example usage:
--   
--   <pre>
--   lensSettingProducesValid ((_2) :: Lens (Int, Int) (Int, Int) Int Int)
--   </pre>
lensSettingProducesValid :: (Show s, GenUnchecked s, Show b, GenUnchecked b, Show t, Validity t) => Lens s t a b -> Property

-- | A property combinator to test whether setting arbitrary values via a
--   lens on arbitrary values produces valid values.
--   
--   Example usage:
--   
--   <pre>
--   lensSettingProducesValidOnArbitrary ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational)
--   </pre>
lensSettingProducesValidOnArbitrary :: (Show s, Arbitrary s, Show b, Arbitrary b, Show t, Validity t) => Lens s t a b -> Property

-- | A property combinator to test whether setting values generated by
--   given a generator via a lens on values generated by a given generator
--   produces valid values.
--   
--   <pre>
--   isValid (set l b s)
--   </pre>
--   
--   Example usage:
--   
--   <pre>
--   lensSettingProducesValidOnGen ((_2) :: Lens (Rational, Rational) (Rational, Rational) Rational Rational) genValid shrinkValid genValid shrinkValid
--   </pre>
lensSettingProducesValidOnGen :: (Show s, Show b, Show t, Validity t) => Lens s t a b -> Gen b -> (b -> [b]) -> Gen s -> (s -> [s]) -> Property
