module Test.QuickCheck.Instances.Char (nonSpace,whitespace,space,newline ,lowerAlpha,upperAlpha,numeric ,parenthesis,bracket,brace ,operator ) where import Data.Char import Test.QuickCheck import Test.QuickCheck.Instances.Eq -- instance Arbitrary Char where -- arbitrary = choose ('\0','\255') -- coarbitrary = variant . ord -- instance Arbitrary Char where -- arbitrary = choose ('\0','\255') -- instance CoArbitrary Char where -- coarbitrary = variant . ord -- Bob: why the `rem` 4 ? {- | Generates a 'non space' character, i.e. any ascii except ' ', '\t', '\n' and '\r'. -} nonSpace :: Gen Char nonSpace = notOneof " \t\n\r" {- | Generates any whitespace character, including new lines. -} whitespace :: Gen Char whitespace = oneof [space,newline] {- | Generates a whitespace charecter, not a newline. -} space :: Gen Char space = oneof (map return " \t") {- | Generates either a '\n' or '\r'. -} newline :: Gen Char newline = oneof (map return "\n\r") letters :: String letters = "abcdefghijklmnopqrstuvwxyz" {- | Generates any lower case alpha character. -} lowerAlpha :: Gen Char lowerAlpha = oneof (map return letters) {- | Generates any upper case alpha character. -} upperAlpha :: Gen Char upperAlpha = oneof (map (return . toUpper) letters) {- | Generates a digit character. -} numeric :: Gen Char numeric = oneof (map return "1234567890") {- | Generates one or other of '(' and ')'. -} parenthesis :: Gen Char parenthesis = oneof (map return "()") {- | Generates one or other of '[' and ']'. -} bracket :: Gen Char bracket = oneof (map return "[]") {- | Generates one or other of '{' and '}'. -} brace :: Gen Char brace = oneof (map return "{}") {- | Generates one of '*', '/', '-', '+', '<', '>', '|' and '#'. -} operator :: Gen Char operator = oneof (map return "*/-+<>|#")