@@ -74,9 +74,10 @@ abstract class ParallelIterableCheck[T](collName: String) extends Properties(col
74
74
val am1 : Map [Any , Any ] = m1.asInstanceOf [Map [Any , Any ]]
75
75
val am2 : ParMap [Any , Any ] = m2.asInstanceOf [ParMap [Any , Any ]]
76
76
am1.forall { case (k, v) => am2.get(k).contains(v) } && am2.forall { case (k, v) => am1.get(k).contains(v) }
77
- case (i1 : Set [T ], i2 : ParSet [T ]) =>
78
- i1.forall(i2) && i2.forall(i1)
79
- case _ => t1.iterator.sameElements(t2) && t2.sameElements(t1)
77
+ case _ =>
78
+ val s1 = t1.toSet
79
+ val s2 = t2.toSet
80
+ s1.forall(s2) && s2.forall(s1)
80
81
}
81
82
82
83
def printDebugInfo [A , CC [X ] <: ParIterable [X ], C <: ParIterable [A ], S <: Iterable [A ] with IterableOps [A , Iterable , S ]](coll : ParIterableLike [A , CC , C , S ]): Unit = {
@@ -161,6 +162,48 @@ abstract class ParallelIterableCheck[T](collName: String) extends Properties(col
161
162
results.reduceLeft(_ && _)
162
163
}
163
164
165
+ property(" mappings must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
166
+ val results = for ((f, ind) <- mapFunctions.zipWithIndex) yield {
167
+ val ms = t.map(f)
168
+ val mp = coll.map(f)
169
+ val invs = checkDataStructureInvariants(ms, mp)
170
+ if (! areEqual(ms, mp) || ! invs) {
171
+ println(t)
172
+ println(coll)
173
+ println(" mapped to: " )
174
+ println(ms)
175
+ println(mp)
176
+ println(" sizes: " )
177
+ println(ms.size)
178
+ println(mp.size)
179
+ println(" valid: " + invs)
180
+ }
181
+ (" op index: " + ind) |: (areEqual(ms, mp) && invs)
182
+ }
183
+ results.reduceLeft(_ && _)
184
+ }
185
+
186
+ property(" collects must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
187
+ val results = for ((f, ind) <- partialMapFunctions.zipWithIndex) yield {
188
+ val ps = t.collect(f)
189
+ val pp = coll.collect(f)
190
+ if (! areEqual(ps, pp)) {
191
+ println(t)
192
+ println(coll)
193
+ println(" collected to: " )
194
+ println(ps)
195
+ println(pp)
196
+ }
197
+ (" op index: " + ind) |: areEqual(ps, pp)
198
+ }
199
+ results.reduceLeft(_ && _)
200
+ }
201
+
202
+ property(" flatMaps must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
203
+ (for ((f, ind) <- flatMapFunctions.zipWithIndex)
204
+ yield (" op index: " + ind) |: areEqual(t.flatMap(f), coll.flatMap(f))).reduceLeft(_ && _)
205
+ }
206
+
164
207
property(" filters must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
165
208
(for ((p, ind) <- filterPredicates.zipWithIndex) yield {
166
209
val tf = t.filter(p)
@@ -311,6 +354,38 @@ abstract class ParallelIterableCheck[T](collName: String) extends Properties(col
311
354
}).reduceLeft(_ && _)
312
355
}
313
356
357
+ property(" ++s must be equal" ) = forAll(collectionTriplets) { case (t, coll, colltoadd) =>
358
+ try {
359
+ val toadd = colltoadd
360
+ val tr = t ++ toadd.iterator
361
+ val cr = coll ++ toadd.iterator
362
+ if (! areEqual(tr, cr)) {
363
+ println(" from: " + t)
364
+ println(" and: " + coll.iterator.toList)
365
+ println(" adding: " + toadd)
366
+ println(tr.toList)
367
+ println(cr.iterator.toList)
368
+ }
369
+ (" adding " |: areEqual(tr, cr)) &&
370
+ (for ((trav, ind) <- addAllIterables.zipWithIndex) yield {
371
+ val tadded = t ++ trav
372
+ val cadded = coll ++ trav
373
+ if (! areEqual(tadded, cadded)) {
374
+ println(" ----------------------" )
375
+ println(" from: " + t)
376
+ println(" and: " + coll)
377
+ println(" adding: " + trav)
378
+ println(tadded)
379
+ println(cadded)
380
+ }
381
+ (" traversable " + ind) |: areEqual(tadded, cadded)
382
+ }).reduceLeft(_ && _)
383
+ } catch {
384
+ case e : java.lang.Exception =>
385
+ throw e
386
+ }
387
+ }
388
+
314
389
if (hasStrictOrder) property(" copies to array must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
315
390
val tarr = newArray(t.size)
316
391
val collarr = newArray(coll.size)
@@ -362,84 +437,3 @@ abstract class ParallelIterableCheck[T](collName: String) extends Properties(col
362
437
}
363
438
364
439
}
365
-
366
- /**
367
- * Properties for collections whose elements are single values (as opposed to pairs of values)
368
- */
369
- trait SimpleValuesCheck [T ] { this : ParallelIterableCheck [T ] =>
370
-
371
- property(" mappings must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
372
- val results = for ((f, ind) <- mapFunctions.zipWithIndex) yield {
373
- val ms = t.map(f)
374
- val mp = coll.map(f)
375
- val invs = checkDataStructureInvariants(ms, mp)
376
- if (! areEqual(ms, mp) || ! invs) {
377
- println(t)
378
- println(coll)
379
- println(" mapped to: " )
380
- println(ms)
381
- println(mp)
382
- println(" sizes: " )
383
- println(ms.size)
384
- println(mp.size)
385
- println(" valid: " + invs)
386
- }
387
- (" op index: " + ind) |: (areEqual(ms, mp) && invs)
388
- }
389
- results.reduceLeft(_ && _)
390
- }
391
-
392
- property(" collects must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
393
- val results = for ((f, ind) <- partialMapFunctions.zipWithIndex) yield {
394
- val ps = t.collect(f)
395
- val pp = coll.collect(f)
396
- if (! areEqual(ps, pp)) {
397
- println(t)
398
- println(coll)
399
- println(" collected to: " )
400
- println(ps)
401
- println(pp)
402
- }
403
- (" op index: " + ind) |: areEqual(ps, pp)
404
- }
405
- results.reduceLeft(_ && _)
406
- }
407
-
408
- property(" flatMaps must be equal" ) = forAllNoShrink(collectionPairs) { case (t, coll) =>
409
- (for ((f, ind) <- flatMapFunctions.zipWithIndex)
410
- yield (" op index: " + ind) |: areEqual(t.flatMap(f), coll.flatMap(f))).reduceLeft(_ && _)
411
- }
412
-
413
- property(" ++s must be equal" ) = forAll(collectionTriplets) { case (t, coll, colltoadd) =>
414
- try {
415
- val toadd = colltoadd
416
- val tr = t ++ toadd.iterator
417
- val cr = coll ++ toadd.iterator
418
- if (! areEqual(tr, cr)) {
419
- println(" from: " + t)
420
- println(" and: " + coll.iterator.toList)
421
- println(" adding: " + toadd)
422
- println(tr.toList)
423
- println(cr.iterator.toList)
424
- }
425
- (" adding " |: areEqual(tr, cr)) &&
426
- (for ((trav, ind) <- addAllIterables.zipWithIndex) yield {
427
- val tadded = t ++ trav
428
- val cadded = coll ++ trav
429
- if (! areEqual(tadded, cadded)) {
430
- println(" ----------------------" )
431
- println(" from: " + t)
432
- println(" and: " + coll)
433
- println(" adding: " + trav)
434
- println(tadded)
435
- println(cadded)
436
- }
437
- (" traversable " + ind) |: areEqual(tadded, cadded)
438
- }).reduceLeft(_ && _)
439
- } catch {
440
- case e : java.lang.Exception =>
441
- throw e
442
- }
443
- }
444
-
445
- }
0 commit comments