|
1 load(libdir + "parallelarray-helpers.js"); |
|
2 |
|
3 // Test that we are able to compare numbers even if the typesets are |
|
4 // not "clean" because we have previously added strings and numbers. |
|
5 // Also test that we distinguish between bools/numbers etc for strict |
|
6 // equality but not loose equality. |
|
7 |
|
8 function theTest() { |
|
9 var ints = range(0, 1024); |
|
10 var doubles = ints.map(v => v + 0.1); |
|
11 var bools = ints.map(v => (v % 2) == 0); |
|
12 var strings = ints.map(v => String(v)); |
|
13 |
|
14 function looselyCompareToDoubles(e, i) { |
|
15 return doubles[i] == e; |
|
16 } |
|
17 print("doubles"); |
|
18 assertArraySeqParResultsEq(doubles, "map", looselyCompareToDoubles); |
|
19 print("bools"); |
|
20 assertArraySeqParResultsEq(bools, "map", looselyCompareToDoubles); |
|
21 // ion bails out when converting a string to a double right now, |
|
22 // so par exec cannot proceed |
|
23 print("strings"); |
|
24 assertParallelExecWillBail(function (mode) { |
|
25 strings.mapPar(looselyCompareToDoubles, mode) |
|
26 }); |
|
27 print("ints"); |
|
28 assertArraySeqParResultsEq(ints, "map", looselyCompareToDoubles); |
|
29 |
|
30 function strictlyCompareToDoubles(e, i) { |
|
31 return doubles[i] === e; |
|
32 } |
|
33 print("doubles, strict"); |
|
34 assertArraySeqParResultsEq(doubles, "map", strictlyCompareToDoubles); |
|
35 print("bools, strict"); |
|
36 assertArraySeqParResultsEq(bools, "map", strictlyCompareToDoubles); |
|
37 print("strings, strict"); |
|
38 assertArraySeqParResultsEq(strings, "map", strictlyCompareToDoubles); |
|
39 print("ints, strict"); |
|
40 assertArraySeqParResultsEq(ints, "map", strictlyCompareToDoubles); |
|
41 } |
|
42 |
|
43 if (getBuildConfiguration().parallelJS) |
|
44 theTest(); |