@@ -7,6 +7,14 @@
7module Tests.QuickCheckUtils
7module Tests.QuickCheckUtils
10 , unsquare
18 , unsquare
11 , smallArbitrary
19 , smallArbitrary
@@ -72,7 +80,11 @@ instance Random Word8 where
74genUnicode :: IsString a => Gen a
82genUnicode :: IsString a => Gen a
83+genUnicode = genUnicodeWith planes
85+genUnicodeWith :: IsString a => [Gen Int] -> Gen a
75−genUnicode = fmap fromString string where
86+genUnicodeWith gens = fmap fromString string
76 string = sized $ \n ->
88 string = sized $ \n ->
77 do k <- choose (0,n)
89 do k <- choose (0,n)
78 sequence [ char | _ <- [1..k] ]
90 sequence [ char | _ <- [1..k] ]
@@ -93,33 +105,44 @@ genUnicode = fmap fromString string where
94 masked = c .&. 0xFFFF
106 masked = c .&. 0xFFFF
108+ char = chr `fmap` excluding reserved (oneof gens)
96− ascii = choose (0,0x7F)
111+ascii = choose (0,0x7F)
97− plane0 = choose (0xF0, 0xFFFF)
114+plane0 = choose (0xF0, 0xFFFF)
98− plane1 = oneof [ choose (0x10000, 0x10FFF)
117+plane1 = oneof [ choose (0x10000, 0x10FFF)
99− , choose (0x11000, 0x11FFF)
118+ , choose (0x11000, 0x11FFF)
100− , choose (0x12000, 0x12FFF)
119+ , choose (0x12000, 0x12FFF)
101− , choose (0x13000, 0x13FFF)
120+ , choose (0x13000, 0x13FFF)
102− , choose (0x1D000, 0x1DFFF)
121+ , choose (0x1D000, 0x1DFFF)
103− , choose (0x1F000, 0x1FFFF)
122+ , choose (0x1F000, 0x1FFFF)
105− plane2 = oneof [ choose (0x20000, 0x20FFF)
126+plane2 = oneof [ choose (0x20000, 0x20FFF)
106− , choose (0x21000, 0x21FFF)
127+ , choose (0x21000, 0x21FFF)
107− , choose (0x22000, 0x22FFF)
128+ , choose (0x22000, 0x22FFF)
108− , choose (0x23000, 0x23FFF)
129+ , choose (0x23000, 0x23FFF)
109− , choose (0x24000, 0x24FFF)
130+ , choose (0x24000, 0x24FFF)
110− , choose (0x25000, 0x25FFF)
131+ , choose (0x25000, 0x25FFF)
111− , choose (0x26000, 0x26FFF)
132+ , choose (0x26000, 0x26FFF)
112− , choose (0x27000, 0x27FFF)
133+ , choose (0x27000, 0x27FFF)
113− , choose (0x28000, 0x28FFF)
134+ , choose (0x28000, 0x28FFF)
114− , choose (0x29000, 0x29FFF)
135+ , choose (0x29000, 0x29FFF)
115− , choose (0x2A000, 0x2AFFF)
136+ , choose (0x2A000, 0x2AFFF)
116− , choose (0x2B000, 0x2BFFF)
137+ , choose (0x2B000, 0x2BFFF)
117− , choose (0x2F000, 0x2FFFF)
138+ , choose (0x2F000, 0x2FFFF)
119− plane14 = choose (0xE0000, 0xE0FFF)
142+plane14 = choose (0xE0000, 0xE0FFF)
120− planes = [ascii, plane0, plane1, plane2, plane14]
145+planes = [ascii, plane0, plane1, plane2, plane14]
122− char = chr `fmap` excluding reserved (oneof planes)
124-- For tests that have O(n^2) running times or input sizes, resize
147-- For tests that have O(n^2) running times or input sizes, resize
125-- their inputs to the square root of the originals.
148-- their inputs to the square root of the originals.