Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rose Tree Shrink #2249

Open
wants to merge 604 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
604 commits
Select commit Hold shift + click to select a range
b4b34fd
Made the NegZFloat shrinker lazy.
cheeseng Nov 23, 2022
e43fc8f
Deleted a comment.
bvenners Nov 23, 2022
43aa8a9
Merge branch 'cheeseng-cs-feature-rose-tree-after-next-221123' into f…
bvenners Nov 23, 2022
a8976b1
Made the NegZFiniteFloat shrinker lazy.
cheeseng Nov 24, 2022
c631d79
Made the NegZInt shrinker lazy.
cheeseng Nov 24, 2022
07d7325
Made the NegZLong shrinker lazy.
cheeseng Nov 24, 2022
fccd2d7
Change short canonicals method to a lazy form that computes the next …
cheeseng Nov 24, 2022
f6fa4f1
Change Int canonicals method to a lazy form that computes the next va…
cheeseng Nov 24, 2022
f93dbb9
Change Long canonicals method to a lazy form that computes the next v…
cheeseng Nov 24, 2022
6e618a8
Change Float canonicals method to a lazy form that computes the next …
cheeseng Nov 24, 2022
2ed6555
Change Double canonicals method to a lazy form that computes the next…
cheeseng Nov 24, 2022
989b2b8
Change PosInt canonicals method to a lazy form that computes the next…
cheeseng Nov 24, 2022
0c939a0
Change PosZInt canonicals method to a lazy form that computes the nex…
cheeseng Nov 25, 2022
121b1bc
Change PosLong canonicals method to a lazy form that computes the nex…
cheeseng Nov 25, 2022
77f3a6a
Change PosZLong canonicals method to a lazy form that computes the ne…
cheeseng Nov 25, 2022
b4232ff
Change PosFloat canonicals method to a lazy form that computes the ne…
cheeseng Nov 25, 2022
e5fd678
Added the missing .value in canonical method implementations for PosXXX.
cheeseng Nov 25, 2022
d9965f1
Change PosFinite canonicals method to a lazy form that computes the n…
cheeseng Nov 25, 2022
62e4227
Change FiniteFloat canonicals method to a lazy form that computes the…
cheeseng Nov 25, 2022
e268ad1
Change FiniteDouble canonicals method to a lazy form that computes th…
cheeseng Nov 25, 2022
f3c5ebe
Change PosZFloat canonicals method to a lazy form that computes the n…
cheeseng Nov 25, 2022
e8cc1fc
Change PosZFiniteFloat canonicals method to a lazy form that computes…
cheeseng Nov 25, 2022
dd12cb5
Change PosDouble canonicals method to a lazy form that computes the n…
cheeseng Nov 25, 2022
494b915
Change PosFiniteDouble canonicals method to a lazy form that computes…
cheeseng Nov 25, 2022
deb699f
Change PosZDouble canonicals method to a lazy form that computes the …
cheeseng Nov 25, 2022
376fde9
Change PosZFiniteDouble canonicals method to a lazy form that compute…
cheeseng Nov 25, 2022
3e675bf
Change NonZeroDouble canonicals method to a lazy form that computes t…
cheeseng Nov 25, 2022
e3b366e
Removed unnecessary code for float/double to handle the case value is…
cheeseng Nov 25, 2022
e667555
Merge branch 'cheeseng-cs-feature-rose-tree-after-next-221124' into f…
bvenners Nov 25, 2022
172c791
Make the shrinks method on the Or Generator lazier, and override shri…
bvenners Nov 26, 2022
bb89ca0
Make shrinks method for Eithers more lazy. Override its shrinksForVal…
bvenners Nov 26, 2022
a22f0e2
Made shrinks method for Vectors lazier, and implemented a shrinksForV…
bvenners Nov 26, 2022
35f69b2
Made Set generator shrinks lazier, and implemented its shrinksForValu…
bvenners Nov 26, 2022
8b33b13
Made SortedSet's shrinks method lazier, and implement its shrinksForV…
bvenners Nov 26, 2022
79755c5
Adjust a test that was now flickering because of the recent change to…
bvenners Nov 26, 2022
ef553ad
Made the map generator's shrinks method lazier, and implements its sh…
bvenners Nov 26, 2022
d4a40d3
Adjust a few tests now that I'm shrinking to empty on collection gene…
bvenners Nov 26, 2022
6057820
Made SortedMap generator's shrinks method lazier, and implemented its…
bvenners Nov 26, 2022
304d344
Change NonZeroFiniteDouble canonicals method to a lazy form that comp…
cheeseng Nov 26, 2022
22ca364
Merge branch 'feature-rose-tree-after-next' of https://github.com/sca…
cheeseng Nov 26, 2022
77eb096
Change NonZeroFloat canonicals method to a lazy form that computes th…
cheeseng Nov 26, 2022
b8dbf67
Change NonZeroFiniteFloat canonicals method to a lazy form that compu…
cheeseng Nov 27, 2022
4af4ad4
Change NonZeroInt canonicals method to a lazy form that computes the …
cheeseng Nov 27, 2022
9ecc83f
Change NonZeroLong canonicals method to a lazy form that computes the…
cheeseng Nov 27, 2022
8b3561b
Change NegDouble canonicals method to a lazy form that computes the n…
cheeseng Nov 27, 2022
8f2262b
Change NegFiniteDouble canonicals method to a lazy form that computes…
cheeseng Nov 27, 2022
f3b8dfe
Change NegFloat canonicals method to a lazy form that computes the ne…
cheeseng Nov 27, 2022
5bb4122
Change NegFiniteFloat canonicals method to a lazy form that computes …
cheeseng Nov 27, 2022
ffa5361
Change NegInt canonicals method to a lazy form that computes the next…
cheeseng Nov 27, 2022
dd11b5c
Change NegLong canonicals method to a lazy form that computes the nex…
cheeseng Nov 27, 2022
9efd884
Change NegZDouble canonicals method to a lazy form that computes the …
cheeseng Nov 27, 2022
38574ea
Change NegZFiniteDouble canonicals method to a lazy form that compute…
cheeseng Nov 27, 2022
b519982
Change NegZFloat canonicals method to a lazy form that computes the n…
cheeseng Nov 27, 2022
834ca92
Change NegZFiniteFloat canonicals method to a lazy form that computes…
cheeseng Nov 27, 2022
7352177
Change NegZLong canonicals method to a lazy form that computes the ne…
cheeseng Nov 27, 2022
7341ff1
Change NumericChar canonicals method to a lazy form that computes the…
cheeseng Nov 27, 2022
72a9f47
Change orGenerator's canonicals to use #:::.
cheeseng Nov 27, 2022
ae006a2
Fixed a compile error when build Generator.scala under scala 3, and f…
cheeseng Nov 27, 2022
607ff68
Merge branch 'cheeseng-feature-rose-tree-after-next-221126' into feat…
bvenners Nov 28, 2022
f92944b
Removed the unnecessary check for -1 in canonicals shrink.
cheeseng Nov 28, 2022
520c0e7
Merge branch 'feature-rose-tree-after-next' of https://github.com/sca…
cheeseng Nov 28, 2022
adfcecc
Get map2ForFuture to compile with latest changes from upstream.
cheeseng Nov 28, 2022
022a68c
Dropped Randomizer from shrinks and canonicals methods.
bvenners Nov 30, 2022
46d1c66
Don't name unused rnd variables, in prep for dropping rnd in map2.
bvenners Nov 30, 2022
c0e732d
Drop Randomizer from the RoseTree map2 method.
bvenners Nov 30, 2022
e317c6f
Drop Randomizer from depthFirstShrinks in RoseTree.
bvenners Nov 30, 2022
a6eec3d
Removed Randomizer from RoseTree's depthFirstShrinksForFuture function.
cheeseng Nov 30, 2022
21cb204
Removed Randomizer from combineFirstDepthShrinksForFuture.
cheeseng Nov 30, 2022
cd98cd4
Dropped Randomizer from shrinks and canonicals methods.
bvenners Nov 30, 2022
aa12955
Don't name unused rnd variables, in prep for dropping rnd in map2.
bvenners Nov 30, 2022
887f022
Drop Randomizer from the RoseTree map2 method.
bvenners Nov 30, 2022
171fdad
Drop Randomizer from depthFirstShrinks in RoseTree.
bvenners Nov 30, 2022
6dc70b4
Merge branch 'cheeseng-feature-rose-tree-after-next-221128' into feat…
bvenners Nov 30, 2022
62f23e1
Merge branch 'feature-cs-rnd-removal' of github.com:cheeseng/scalates…
bvenners Nov 30, 2022
017b55e
Simply a bit of code in RoseTree.
bvenners Nov 30, 2022
6d03abb
Merge branch 'cheeseng-feature-cs-rnd-removal' into feature-rose-tree…
bvenners Nov 30, 2022
88bade1
Simply some code in RoseTree.
bvenners Nov 30, 2022
ff3ca26
Remove the unused combineFirstDepthShrinks method and its test.
bvenners Nov 30, 2022
23320cd
Don't build a set of processed values during shrinking. We will recom…
bvenners Dec 1, 2022
8aef406
Merge branch 'feature-rose-tree-after-next' of https://github.com/sca…
cheeseng Dec 1, 2022
6a8595d
We do not need map2ForFuture! Just use map2 in checkForAll[A, B] of …
cheeseng Dec 1, 2022
c7a35d4
Changed checkForAll[A, B, C] of FuturePropCheckerAsserting to use Ros…
cheeseng Dec 1, 2022
b7d3418
Changed checkForAll[A, B, C, D] of FuturePropCheckerAsserting to use …
cheeseng Dec 1, 2022
454e536
Changed the missed part in checkForAll[A, B] and checkForAll[A, B, C]…
cheeseng Dec 1, 2022
27e4804
Changed checkForAll[A, B, C, D, E] of FuturePropCheckerAsserting to u…
cheeseng Dec 1, 2022
e787d0e
Changed checkForAll[A, B, C, D, E] of FuturePropCheckerAsserting to u…
cheeseng Dec 1, 2022
81935b7
Removed combineFirstDepthShrinksForFuture from RoseTree.
cheeseng Dec 1, 2022
1cf588d
Merge branch 'cheeseng-feature-rose-tree-future-map2' into feature-ro…
bvenners Dec 1, 2022
c760605
Added unit test for RoseTree's map2 function.
cheeseng Dec 2, 2022
0c8c84f
Changed to use #::: in RoseTree's map2 function.
cheeseng Dec 2, 2022
79caac4
Fixed blocking problem when running tests built under Scala 2.11 and …
cheeseng Dec 2, 2022
e964f89
Added a max iteration check to RoseTree's depthFirstShrinks and depth…
cheeseng Dec 3, 2022
585112d
Removed processed value set check in RoseTree's depthFirstShrinksForF…
cheeseng Dec 3, 2022
fc9aea8
Refactored RoseTree's map2 function to take the function arg in secon…
cheeseng Dec 4, 2022
7cded2b
Merge branch 'cheeseng-feature-rose-tree-max-iteration' into feature-…
bvenners Dec 4, 2022
1459d68
Merge branch 'feature-rose-tree-map2-fun-refactor' of github.com:chee…
bvenners Dec 4, 2022
d5627f8
Merge branch 'cheeseng-feature-rose-tree-map2-fun-refactor' into feat…
bvenners Dec 4, 2022
7970855
Added isDefinedAt to Generator.
cheeseng Dec 6, 2022
c0b27b5
Added filterFun to RoseTree's depthFirstShrinks function, and passed …
cheeseng Dec 7, 2022
f1c3c29
Changed Generator's isDefinedAt to isValid, and added RoseTree.map2Wi…
cheeseng Dec 8, 2022
f2859de
Added unit test for RoseTree.map2WithFilter.
cheeseng Dec 8, 2022
3c4ce2a
Use RoseTree.map2WithFilter in checkForAll[A, B, C].
cheeseng Dec 8, 2022
1c62c19
Use RoseTree.map2WithFilter in checkForAll[A, B, C, D].
cheeseng Dec 8, 2022
a7a8236
Added genABIsValid and genABCIsValid reusable function in PropChecker…
cheeseng Dec 8, 2022
7865398
Fixed compiler warning in PropCheckerAsserting.scala related to type …
cheeseng Dec 8, 2022
b21b52e
Use RoseTree.map2WithFilter in checkForAll[A, B, C, D, E].
cheeseng Dec 8, 2022
22d3230
Use RoseTree.map2WithFilter in checkForAll[A, B, C, D, E, F].
cheeseng Dec 8, 2022
d4a5c0c
Moved genXXXIsValid function to object PropCheckerAsserting.
cheeseng Dec 8, 2022
15f7dda
Changed FuturePropCheckerAsserting to use RoseTree.map2WithFilter also.
cheeseng Dec 8, 2022
c0cd60c
Added isValid function implementation to Generator's havingSize and h…
cheeseng Dec 9, 2022
d59dc49
Added more isValid for more implementation of having size/between.
cheeseng Dec 9, 2022
a396f36
First round of code change to support filtering for havingSizesDeterm…
cheeseng Dec 12, 2022
bf89d99
Added unit tests of shrinking with havingSize, havingLength, havingSi…
cheeseng Dec 13, 2022
decbdbd
Added unit tests of shrinking with havingSize, havingSizesBetween and…
cheeseng Dec 13, 2022
63c92d0
Added unit tests of shrinking with havingSize, havingSizesBetween and…
cheeseng Dec 13, 2022
69a82d7
Added unit tests of shrinking with havingSize, havingSizesBetween and…
cheeseng Dec 13, 2022
9647d5f
Added unit tests of shrinking with havingSize, havingSizesBetween and…
cheeseng Dec 13, 2022
42a79c4
Rewritten list generator using the similar approach the vector is wri…
cheeseng Dec 15, 2022
2569c48
First step to refactor generation code to nextImpl function, next fun…
cheeseng Dec 17, 2022
9179b05
First version that shrinkees obey the rule defined by filter function…
cheeseng Dec 30, 2022
4ded9b6
Reverted the need of ByteGenerator class.
cheeseng Dec 30, 2022
82eeb1e
Made shrinkees for short generator to follow filter rules also.
cheeseng Dec 30, 2022
9751f67
Rewritten unit tests for shrinkees to be nicer.
cheeseng Dec 30, 2022
14157b6
Made shrinkees for int generator to follow filter rules also.
cheeseng Dec 30, 2022
1158bdb
Made shrinkees for long generator to follow filter rules also.
cheeseng Dec 30, 2022
02cf817
Made shrinkees for float generator to follow filter rules also.
cheeseng Dec 30, 2022
413795e
Made shrinkees for long generator to follow filter rules also.
cheeseng Dec 30, 2022
7f75512
Made shrinkees for PosInt generator to follow filter rules also.
cheeseng Dec 31, 2022
3009908
Made shrinkees for PosZInt generator to follow filter rules also.
cheeseng Dec 31, 2022
1bf862e
Made shrinkees for PosLong generator to follow filter rules also.
cheeseng Dec 31, 2022
125fdc2
Made shrinkees for PosZLong generator to follow filter rules also.
cheeseng Dec 31, 2022
26b4925
Made shrinkees for PosFloat generator to follow filter rules also.
cheeseng Jan 1, 2023
05b26bf
Made shrinkees for PosFiniteFloat generator to follow filter rules also.
cheeseng Jan 1, 2023
e31e868
Made shrinkees for PosZFloat generator to follow filter rules also.
cheeseng Jan 2, 2023
053b4ae
Made shrinkees for PosZFiniteFloat generator to follow filter rules a…
cheeseng Jan 2, 2023
9bf3606
Made shrinkees for PosDouble generator to follow filter rules also.
cheeseng Jan 2, 2023
887a3f1
Made shrinkees for PosFiniteDouble generator to follow filter rules a…
cheeseng Jan 2, 2023
4141a8f
Made shrinkees for PosZDouble generator to follow filter rules also.
cheeseng Jan 2, 2023
dce342e
Made shrinkees for PosZFiniteDouble generator to follow filter rules …
cheeseng Jan 2, 2023
589bd8b
Made shrinkees for NegInt generator to follow filter rules also.
cheeseng Jan 3, 2023
de96f69
Made shrinkees for NegZInt generator to follow filter rules also.
cheeseng Jan 3, 2023
ac2ca36
Made shrinkees for NegLong generator to follow filter rules also.
cheeseng Jan 3, 2023
4d2c2d4
Made shrinkees for NegZLong generator to follow filter rules also.
cheeseng Jan 3, 2023
1001c1b
Made shrinkees for NegFloat generator to follow filter rules also.
cheeseng Jan 3, 2023
9caf5ea
Made shrinkees for NegFiniteFloat generator to follow filter rules also.
cheeseng Jan 3, 2023
c972920
Made shrinkees for NegZFloat generator to follow filter rules also.
cheeseng Jan 3, 2023
343a1a0
Made shrinkees for NegZFiniteFloat generator to follow filter rules a…
cheeseng Jan 3, 2023
62f0073
Made shrinkees for NegDouble generator to follow filter rules also.
cheeseng Jan 3, 2023
8ea1fc8
Made shrinkees for NegFiniteDouble generator to follow filter rules a…
cheeseng Jan 7, 2023
b3c4420
Made shrinkees for NegFiniteDouble generator to follow filter rules a…
cheeseng Jan 7, 2023
6cc416c
Made shrinkees for NegZFiniteDouble generator to follow filter rules …
cheeseng Jan 7, 2023
348432d
Made shrinkees for NonZeroInt generator to follow filter rules also.
cheeseng Jan 7, 2023
51c2fa5
Made shrinkees for NonZeroLong generator to follow filter rules also.
cheeseng Jan 7, 2023
aab0ccc
Made shrinkees for NonZeroFloat generator to follow filter rules also.
cheeseng Jan 7, 2023
82f1c83
Made shrinkees for NonZeroFiniteFloat generator to follow filter rule…
cheeseng Jan 7, 2023
a86f30c
Made shrinkees for NonZeroDouble generator to follow filter rules also.
cheeseng Jan 7, 2023
7226a5f
Made shrinkees for NonZeroFiniteDouble generator to follow filter rul…
cheeseng Jan 7, 2023
1b367e7
Made shrinkees for FiniteDouble generator to follow filter rules also.
cheeseng Jan 8, 2023
c60f717
Made shrinkees for FiniteFloat generator to follow filter rules also.
cheeseng Jan 8, 2023
95850ee
Re-enabled unit tests for having length/size of list generator.
cheeseng Jan 8, 2023
d10d348
Made shrinkees for NumericChar generator to follow filter rules also,…
cheeseng Jan 8, 2023
5f01056
Made shrinkees for String generator to follow filter rules also.
cheeseng Jan 8, 2023
56e96d6
Made shrinkees for Option generator to follow filter rules also.
cheeseng Jan 9, 2023
9da2c80
Made shrinkees for Or generator to follow filter rules also.
cheeseng Jan 9, 2023
ebee981
Made shrinkees for Either generator to follow filter rules also.
cheeseng Jan 9, 2023
d677c9d
Removed the need to RoseTree's map2WithFilter function.
cheeseng Jan 10, 2023
5b7634d
Added the missing Vector generator unit test for shrinking bug.
cheeseng Jan 11, 2023
3d57a5a
Added the missing Set generator unit test for shrinking bug.
cheeseng Jan 11, 2023
ae2d8d8
Added the missing SortedSet generator unit test for shrinking bug.
cheeseng Jan 11, 2023
b050ad1
Added the missing Map generator unit test for shrinking bug.
cheeseng Jan 11, 2023
f5d7ffd
Added the missing SortedMap generator unit test for shrinking bug.
cheeseng Jan 11, 2023
071f5ae
Fixed scala-js build error.
cheeseng Jan 12, 2023
058e1cb
Added missing havingXXX tests for List generator.
cheeseng Jan 13, 2023
b4d35b7
Fixed the need of overriding equals and hashCode in NumericChar by ma…
cheeseng Jan 14, 2023
9ddaceb
Refactored few more generators to take sizeParam and isValidFun in se…
cheeseng Jan 14, 2023
eae0624
Made shrinkees for char generator to follow filter rules also.
cheeseng Jan 14, 2023
16e8b2c
Added isValidFun to nextImpl function, and get int generator's nextIm…
cheeseng Jan 16, 2023
31a90d4
Changed short generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
87147d8
Changed byte generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
a715151
Changed long generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
bf52708
Changed char generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
4c219f0
Changed float generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
002ec65
Changed double generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
c3eef48
Changed PosInt generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
d0c18b1
Changed PosZInt generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
5183cb3
Changed PosLong generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 16, 2023
7937960
Changed PosZLong generator's nextImpl to pass isValidFun to NextRoseT…
cheeseng Jan 16, 2023
d37d1dc
Changed PosFloat generator's nextImpl to pass isValidFun to NextRoseT…
cheeseng Jan 16, 2023
d33f17e
Changed PosFiniteFloat generator's nextImpl to pass isValidFun to Nex…
cheeseng Jan 16, 2023
d28de8a
Changed PosZFloat generator's nextImpl to pass isValidFun to NextRose…
cheeseng Jan 17, 2023
4b2eb9d
Changed PosZFiniteFloat generator's nextImpl to pass isValidFun to Ne…
cheeseng Jan 17, 2023
49fcb22
Changed PosDouble generator's nextImpl to pass isValidFun to NextRose…
cheeseng Jan 17, 2023
0fd68de
Changed PosFiniteDouble generator's nextImpl to pass isValidFun to Ne…
cheeseng Jan 17, 2023
eb885de
Changed PosZDouble generator's nextImpl to pass isValidFun to NextRos…
cheeseng Jan 17, 2023
e506f83
Changed PosZFiniteDouble generator's nextImpl to pass isValidFun to N…
cheeseng Jan 17, 2023
16e1949
Changed NegInt generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 17, 2023
1e6503e
Changed NegZInt generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 17, 2023
ee7d0f0
Changed NegLong generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 17, 2023
03e0c63
Changed NegZLong generator's nextImpl to pass isValidFun to NextRoseT…
cheeseng Jan 17, 2023
04289cb
Changed NegFloat generator's nextImpl to pass isValidFun to NextRoseT…
cheeseng Jan 17, 2023
a8a57f5
Changed NegFiniteFloat generator's nextImpl to pass isValidFun to Nex…
cheeseng Jan 17, 2023
442d235
Changed NegZFloat generator's nextImpl to pass isValidFun to NextRose…
cheeseng Jan 17, 2023
0c20179
Changed NegZFiniteFloat generator's nextImpl to pass isValidFun to Ne…
cheeseng Jan 17, 2023
e7e8076
Changed NegDouble generator's nextImpl to pass isValidFun to NextRose…
cheeseng Jan 17, 2023
5827fcd
Changed NegFiniteDouble generator's nextImpl to pass isValidFun to Ne…
cheeseng Jan 17, 2023
52d94fa
Changed NegZDouble generator's nextImpl to pass isValidFun to NextRos…
cheeseng Jan 18, 2023
dea5c25
Changed NegZFiniteDouble generator's nextImpl to pass isValidFun to N…
cheeseng Jan 18, 2023
d56b205
Changed NonZeroInt generator's nextImpl to pass isValidFun to NextRos…
cheeseng Jan 18, 2023
50b4ede
Changed NonZeroLong generator's nextImpl to pass isValidFun to NextRo…
cheeseng Jan 18, 2023
72244ab
Changed NonZeroFloat generator's nextImpl to pass isValidFun to NextR…
cheeseng Jan 18, 2023
de4ae65
Changed NonZeroFiniteFloat generator's nextImpl to pass isValidFun to…
cheeseng Jan 18, 2023
85c9dc3
Changed NonZeroDouble generator's nextImpl to pass isValidFun to Next…
cheeseng Jan 18, 2023
5a374d8
Changed NonZeroFiniteDouble generator's nextImpl to pass isValidFun t…
cheeseng Jan 18, 2023
d3af58a
Changed FiniteFloat generator's nextImpl to pass isValidFun to NextRo…
cheeseng Jan 18, 2023
a2525a2
Changed FiniteDouble generator's nextImpl to pass isValidFun to NextR…
cheeseng Jan 18, 2023
9cede98
Changed NumericChar generator's nextImpl to pass isValidFun to NextRo…
cheeseng Jan 18, 2023
743a316
Changed string generator's nextImpl to pass isValidFun to NextRoseTre…
cheeseng Jan 18, 2023
0218a5a
Changed Option generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 18, 2023
c41f834
Changed Or generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 19, 2023
ebd75a6
Changed Either generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 19, 2023
f14e564
Get list generator to pass filter tests.
cheeseng Jan 19, 2023
4a8ab81
Changed vector generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 19, 2023
d9725b4
Changed set generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 19, 2023
85dd707
Changed sorted set generator's nextImpl to pass isValidFun to NextRos…
cheeseng Jan 19, 2023
6a92d1f
Changed map generator's nextImpl to pass isValidFun to NextRoseTree.
cheeseng Jan 19, 2023
a496f1d
Changed sorted map generator's nextImpl to pass isValidFun to NextRos…
cheeseng Jan 19, 2023
6a4b0d4
Merge branch 'cheeseng-feature-rose-tree-after-next-is-defined-at' in…
bvenners Jan 30, 2023
a9dec34
Merge branch 'main' of https://github.com/scalatest/scalatest into fe…
cheeseng Apr 11, 2023
86e3ab5
Bumped version up to 3.3.0-SNAP4.
cheeseng Apr 11, 2023
c452a23
Merge branch 'feature-rose-tree-after-next-merge-main-230411' into fe…
bvenners Apr 11, 2023
5a4c773
Added scaladoc to new functions without scaladoc in Generator.scala.
cheeseng Jun 8, 2023
325b964
Merge branch 'feature-pull-changes-from-3.2-230612' of https://github…
cheeseng Jun 15, 2023
368efaa
Merge branch 'main' of https://github.com/scalatest/scalatest into fe…
cheeseng Jun 15, 2023
060b94a
Removed println from PropCheckerAsserting.scala.
cheeseng Jun 15, 2023
82b3403
Merge branch 'feature-pull-main-to-rose-tree-230615' of https://githu…
cheeseng Jun 19, 2023
f281c61
Merge branch 'feature-prop-checker-asserting-remove-println' of https…
cheeseng Jun 19, 2023
b0a1170
Merge branch 'feature-scala-js-1.13.2' of https://github.com/cheeseng…
cheeseng Jun 24, 2023
2e4a9f2
Merge branch 'main' of https://github.com/scalatest/scalatest into fe…
cheeseng Aug 30, 2023
9be1e34
Merge branch 'main' of https://github.com/scalatest/scalatest into fe…
cheeseng Sep 30, 2023
c9fdfc5
Renamed depthFirstShrinks to shrinkSearch.
cheeseng May 24, 2024
a8bd850
Merge branch 'main' of https://github.com/scalatest/scalatest into fe…
cheeseng May 24, 2024
1b16371
Added some Scaladoc comments for ye olde RoseTree, and fixed the comment
bvenners May 24, 2024
195d46b
Merge pull request #2325 from scalatest/feature-rose-tree-after-next-…
bvenners May 24, 2024
7a9f5ed
First version of better shrinkSearch, no longer returning LazyListOrS…
cheeseng May 24, 2024
2d31f76
Changed returned type of shrinkSearch to Option[(T, E)].
cheeseng May 27, 2024
cb2ffc0
Changed shrinkSearchForFuture to return Future[Option[(T, E)]].
cheeseng May 27, 2024
1a9ec08
Removed comment that's no longer applicable with latest changes.
cheeseng May 27, 2024
eb8cb9f
Tweaked scaladoc for RoseTree.
bvenners May 29, 2024
a51bf2d
Remove an extraneous map.
bvenners May 29, 2024
4e033b3
Merge branch 'main' of https://github.com/scalatest/scalatest into fe…
cheeseng May 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
470 changes: 0 additions & 470 deletions jvm/common-test/src/main/scala/org/scalatest/prop/package.scala

This file was deleted.

735 changes: 519 additions & 216 deletions jvm/core/src/main/scala/org/scalatest/enablers/PropCheckerAsserting.scala

Large diffs are not rendered by default.

103 changes: 50 additions & 53 deletions jvm/core/src/main/scala/org/scalatest/prop/CommonGenerators.scala
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import org.scalatest.prop.Generator.function1Generator
import scala.collection.immutable.SortedSet
import scala.collection.immutable.SortedMap

import org.scalactic.ColCompatHelper.LazyListOrStream

/**
* Provides various specialized [[Generator]]s that are often useful.
*
Expand Down Expand Up @@ -151,13 +153,9 @@ trait CommonGenerators {
val (allEdges, nextNextRnd) = Randomizer.shuffle(fromToEdges, nextRnd)
(allEdges.take(maxLength), nextNextRnd)
}
def next(szp: SizeParam, edges: List[T], rnd: Randomizer): (T, List[T], Randomizer) = {
edges match {
case head :: tail => (head, tail, rnd)
case _ =>
val (nextValue, nextRandomizer) = chooser.choose(from, to)(rnd)
(nextValue, Nil, nextRandomizer)
}
def nextImpl(szp: SizeParam, isValidFun: (T, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[T], Randomizer) = {
val (nextValue, nextRandomizer) = chooser.choose(from, to)(rnd)
(Rose(nextValue), nextRandomizer)
}
}
}
Expand Down Expand Up @@ -850,15 +848,10 @@ trait CommonGenerators {
def specificValues[T](first: T, second: T, rest: T*): Generator[T] =
new Generator[T] {
private val seq: Seq[T] = first +: second +: rest
def next(szp: SizeParam, edges: List[T], rnd: Randomizer): (T, List[T], Randomizer) = {
edges match {
case head :: tail =>
(head, tail, rnd)
case _ =>
val (nextInt, nextRandomizer) = rnd.chooseInt(0, seq.length - 1)
val nextT = seq(nextInt)
(nextT, Nil, nextRandomizer)
}
def nextImpl(szp: SizeParam, isValidFun: (T, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[T], Randomizer) = {
val (nextInt, nextRandomizer) = rnd.chooseInt(0, seq.length - 1)
val nextT = seq(nextInt)
(Rose(nextT), nextRandomizer)
}
}

Expand All @@ -877,13 +870,8 @@ trait CommonGenerators {
*/
def specificValue[T](theValue: T): Generator[T] =
new Generator[T] {
def next(szp: SizeParam, edges: List[T], rnd: Randomizer): (T, List[T], Randomizer) = {
edges match {
case head :: tail =>
(head, tail, rnd)
case _ =>
(theValue, Nil, rnd)
}
def nextImpl(szp: SizeParam, isValidFun: (T, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[T], Randomizer) = {
(Rose(theValue), rnd)
}
}

Expand Down Expand Up @@ -947,15 +935,10 @@ trait CommonGenerators {
distribution flatMap { case (w, g) =>
Vector.fill(w)(g)
}
def next(szp: SizeParam, edges: List[T], rnd: Randomizer): (T, List[T], Randomizer) = {
edges match {
case head :: tail =>
(head, tail, rnd)
case _ =>
val (nextInt, nextRandomizer) = rnd.chooseInt(0, gens.length - 1)
val nextGen = gens(nextInt)
nextGen.next(szp, Nil, nextRandomizer)
}
def nextImpl(szp: SizeParam, isValidFun: (T, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[T], Randomizer) = {
val (nextInt, nextRandomizer) = rnd.chooseInt(0, gens.length - 1)
val nextGen = gens(nextInt)
nextGen.nextImpl(szp, isValidFun, nextRandomizer)
}
}
}
Expand Down Expand Up @@ -997,15 +980,10 @@ trait CommonGenerators {
val distributees: Vector[Generator[T]] = (first +: second +: rest).toVector
new Generator[T] {
// gens contains, for each distribution pair, weight generators.
def next(szp: SizeParam, edges: List[T], rnd: Randomizer): (T, List[T], Randomizer) = {
edges match {
case head :: tail =>
(head, tail, rnd)
case _ =>
val (nextInt, nextRandomizer) = rnd.chooseInt(0, distributees.length - 1)
val nextGen = distributees(nextInt)
nextGen.next(szp, Nil, nextRandomizer) // TODO: Is it correct to pass size and maxSize here?
}
def nextImpl(szp: SizeParam, isValidFun: (T, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[T], Randomizer) = {
val (nextInt, nextRandomizer) = rnd.chooseInt(0, distributees.length - 1)
val nextGen = distributees(nextInt)
nextGen.nextImpl(szp, isValidFun, nextRandomizer) // TODO: Is it correct to pass size and maxSize here?
}
}
}
Expand Down Expand Up @@ -2383,9 +2361,9 @@ trait CommonGenerators {
def loop(currentCount: Int, edges: List[A], rnd: Randomizer, acc: Map[String, PosZInt]): Map[String, PosZInt] = {
if (currentCount >= count) acc
else {
val (nextA, nextEdges, nextRnd) = genOfA.next(SizeParam(PosZInt(0), PosZInt(100), PosZInt(100)), edges, rnd) // TODO: I think this need to mimic forAll.
if (pf.isDefinedAt(nextA)) {
val category = pf(nextA)
val (nextRoseTreeOfA, nextEdges, nextRnd) = genOfA.next(SizeParam(PosZInt(0), PosZInt(100), PosZInt(100)), edges, rnd) // TODO: I think this need to mimic forAll.
if (pf.isDefinedAt(nextRoseTreeOfA.value)) {
val category = pf(nextRoseTreeOfA.value)
val prevTotal = acc.getOrElse(category, PosZInt(0))
val nextAcc = acc + (category -> PosZInt.ensuringValid(prevTotal + 1))
loop(currentCount + 1, nextEdges, nextRnd, nextAcc)
Expand Down Expand Up @@ -2413,16 +2391,35 @@ trait CommonGenerators {
*/
lazy val first1000Primes: Generator[Int] =
new Generator[Int] { thisIntGenerator =>
def next(szp: SizeParam, edges: List[Int], rnd: Randomizer): (Int, List[Int], Randomizer) = {
edges match {
case head :: tail => (head, tail, rnd)
case _ =>
import CommonGenerators.primeNumbers
val (index, nextRandomizer) = rnd.chooseInt(0, primeNumbers.length - 1)
(primeNumbers(index), Nil, nextRandomizer)
}
def nextImpl(szp: SizeParam, isValidFun: (Int, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[Int], Randomizer) = {
import CommonGenerators.primeNumbers
val (index, nextRandomizer) = rnd.chooseInt(0, primeNumbers.length - 1)
(Rose(primeNumbers(index)), nextRandomizer)
}
}

def lazily[T](gen: => Generator[T]): Generator[T] = {
new Generator[T] {
private lazy val underlying: Generator[T] = gen

override def initEdges(maxLength: PosZInt, rnd: Randomizer): (List[T], Randomizer) = underlying.initEdges(maxLength, rnd)

override def canonicals: LazyListOrStream[RoseTree[T]] = underlying.canonicals

// gens contains, for each distribution pair, weight generators.
def nextImpl(szp: SizeParam, isValidFun: (T, SizeParam) => Boolean, rnd: Randomizer): (RoseTree[T], Randomizer) = {
gen.nextImpl(szp, isValidFun, rnd)
}

override def map[U](f: T => U): Generator[U] = underlying.map(f)

override def flatMap[U](f: T => Generator[U]): Generator[U] = underlying.flatMap(f)

override def filter(p: T => Boolean): Generator[T] = underlying.filter(p)

override def withFilter(p: T => Boolean): Generator[T] = underlying.withFilter(p)
}
}
}

/**
Expand Down Expand Up @@ -2535,4 +2532,4 @@ object CommonGenerators extends CommonGenerators {
7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829,
7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919
)
}
}