Skip to content

Commit 46153ea

Browse files
committed
Merge pull request functionaljava#157 from functionaljava/test-instability
Perform analysis on test instability
2 parents 589552b + 558653e commit 46153ea

9 files changed

Lines changed: 75 additions & 26 deletions

File tree

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ allprojects {
4343
fjConsumeVersion = "4.3"
4444

4545
signModule = false
46+
useRetroLambda = true
4647

4748
projectTitle = "Functional Java"
4849
projectName = "functionaljava"
@@ -61,6 +62,7 @@ allprojects {
6162
primaryEmail = "functionaljava@googlegroups.com"
6263

6364
dependencyJunit = "junit:junit:4.11"
65+
6466
}
6567

6668
version = fjVersion

core/build.gradle

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11

2-
apply plugin: 'me.tatarka.retrolambda'
2+
if (useRetroLambda) {
3+
apply plugin: 'me.tatarka.retrolambda'
4+
}
5+
36

47
ext {
58
signModule = true
@@ -16,8 +19,10 @@ configureUpload(signingEnabled, signModule)
1619

1720
uploadArchives.enabled = true
1821

19-
retrolambda {
20-
jdk System.getenv("JAVA8_HOME")
21-
oldJdk System.getenv("JAVA7_HOME")
22-
javaVersion JavaVersion.VERSION_1_7
22+
if (useRetroLambda) {
23+
retrolambda {
24+
jdk System.getenv("JAVA8_HOME")
25+
oldJdk System.getenv("JAVA7_HOME")
26+
javaVersion JavaVersion.VERSION_1_7
27+
}
2328
}

core/src/main/java/fj/P1.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,16 @@ public <X> P1<X> map(final F<A, X> f) {
209209
return P.lazy(() -> f.f(self._1()));
210210
}
211211

212+
public P1<A> memo() {
213+
return weakMemo();
214+
}
215+
212216
/**
213217
* Returns a P1 that remembers its value.
214218
*
215219
* @return A P1 that calls this P1 once and remembers the value for subsequent calls.
216220
*/
217-
public P1<A> memo() { return new Memo<>(this); }
221+
public P1<A> hardMemo() { return new Memo<>(this); }
218222

219223
/**
220224
* Like <code>memo</code>, but the memoized value is wrapped into a <code>WeakReference</code>

core/src/main/java/fj/data/Stream.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1495,7 +1495,7 @@ private static final class Cons<A> extends Stream<A> {
14951495

14961496
Cons(final A head, final P1<Stream<A>> tail) {
14971497
this.head = head;
1498-
this.tail = tail.weakMemo();
1498+
this.tail = tail.memo();
14991499
}
15001500

15011501
public A head() {

demo/build.gradle

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11

22
apply plugin: 'application'
3-
apply plugin: 'me.tatarka.retrolambda'
43

5-
mainClassName = "fj.demo.euler.Problem2"
4+
if (useRetroLambda) {
5+
apply plugin: 'me.tatarka.retrolambda'
6+
}
67

8+
mainClassName = "fj.demo.euler.Problem2"
79

8-
retrolambda {
9-
jdk System.getenv("JAVA8_HOME")
10-
oldJdk System.getenv("JAVA7_HOME")
11-
javaVersion JavaVersion.VERSION_1_7
10+
if (useRetroLambda) {
11+
retrolambda {
12+
jdk System.getenv("JAVA8_HOME")
13+
oldJdk System.getenv("JAVA7_HOME")
14+
javaVersion JavaVersion.VERSION_1_7
15+
}
1216
}
1317

1418
dependencies {

props-core/build.gradle

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11

2-
apply plugin: 'me.tatarka.retrolambda'
2+
if (useRetroLambda) {
3+
apply plugin: 'me.tatarka.retrolambda'
34

4-
retrolambda {
5-
jdk System.getenv("JAVA8_HOME")
6-
oldJdk System.getenv("JAVA7_HOME")
7-
javaVersion JavaVersion.VERSION_1_7
5+
retrolambda {
6+
jdk System.getenv("JAVA8_HOME")
7+
oldJdk System.getenv("JAVA7_HOME")
8+
javaVersion JavaVersion.VERSION_1_7
9+
}
810
}
911

1012
dependencies {
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package fj.data;
2+
3+
import fj.Equal;
4+
import fj.test.Gen;
5+
import fj.test.Property;
6+
import fj.test.reflect.CheckParams;
7+
import fj.test.runner.PropertyTestRunner;
8+
import org.junit.runner.RunWith;
9+
10+
import static fj.test.Arbitrary.*;
11+
import static fj.test.Property.prop;
12+
import static fj.test.Property.property;
13+
14+
/**
15+
* Created by MarkPerry on 18/06/2015.
16+
*/
17+
@RunWith(PropertyTestRunner.class)
18+
@CheckParams(maxSize = 10000)
19+
public class StreamProperties {
20+
21+
public Property bindStackOverflow() {
22+
int max = 5000;
23+
return property(arbitrary(Gen.choose(1, max)), (n) -> {
24+
Stream<Integer> s1 = Stream.range(1, n);
25+
Stream<Integer> s2 = s1.bind(j -> Stream.single(j));
26+
return prop(s1.zip(s2).forall(p2 -> Equal.intEqual.eq(p2._1(), p2._2())));
27+
});
28+
}
29+
30+
}

quickcheck/build.gradle

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11

2-
apply plugin: 'me.tatarka.retrolambda'
2+
if (useRetroLambda) {
3+
apply plugin: 'me.tatarka.retrolambda'
34

4-
archivesBaseName = "${project.projectName}-${project.name}"
5-
6-
retrolambda {
7-
jdk System.getenv("JAVA8_HOME")
8-
oldJdk System.getenv("JAVA7_HOME")
9-
javaVersion JavaVersion.VERSION_1_7
5+
retrolambda {
6+
jdk System.getenv("JAVA8_HOME")
7+
oldJdk System.getenv("JAVA7_HOME")
8+
javaVersion JavaVersion.VERSION_1_7
9+
}
1010
}
1111

12+
archivesBaseName = "${project.projectName}-${project.name}"
13+
1214
dependencies {
1315
compile project(":core")
1416
compile dependencyJunit

quickcheck/src/test/java/fj/data/test/TestCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
public class TestCheck {
2222

23-
@Test(timeout=1000 /*ms*/)
23+
@Test(timeout=5000 /*ms*/)
2424
public void testExceptionsThrownFromGeneratorsArePropagated() {
2525
Gen<Integer> failingGen = Gen.<Integer>value(0).map((i) -> {
2626
throw new RuntimeException("test failure");

0 commit comments

Comments
 (0)