packages feed

cursor-gen-0.0.0.0: src/Cursor/TextField/Gen.hs

{-# OPTIONS_GHC -fno-warn-orphans #-}

module Cursor.TextField.Gen where

import qualified Data.Text as T

import Data.GenValidity

import Test.QuickCheck

import Cursor.List.NonEmpty
import Cursor.TextField

import Cursor.List.NonEmpty.Gen ()
import Cursor.Text.Gen

instance GenUnchecked TextFieldCursor

instance GenValid TextFieldCursor where
    genValid = do
        let charGen = genValid `suchThat` (/= '\n')
        prevs <- genListOf $ T.pack <$> genListOf charGen
        nexts <- genListOf $ T.pack <$> genListOf charGen
        cur <- textCursorWithGen charGen
        let nec = NonEmptyCursor prevs cur nexts
        pure $ TextFieldCursor nec
    shrinkValid = shrinkValidStructurallyWithoutExtraFiltering