Skip to content

Commit 3ceef52

Browse files
committed
Convert to property based tests to use runner. add test for hardMemo
(also, previously, they did not fails the test if a property failed.
1 parent 9c28f6f commit 3ceef52

File tree

1 file changed

+28
-48
lines changed

1 file changed

+28
-48
lines changed
Lines changed: 28 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package fj;
22

33
import fj.test.Property;
4+
import fj.test.runner.PropertyTestRunner;
45
import org.junit.Test;
6+
import org.junit.runner.RunWith;
57

68
import static fj.test.Arbitrary.arbInteger;
79
import static fj.test.CheckResult.summary;
@@ -12,99 +14,77 @@
1214
/**
1315
* Created by mperry on 14/07/2014.
1416
*/
17+
@RunWith(PropertyTestRunner.class)
1518
public class MemoisationTest {
1619

17-
@Test
18-
public void test1() {
19-
final Property p = property(arbInteger, a -> {
20-
P1<Integer> t = P.p(a).memo();
21-
return prop(t._1() == t._1());
20+
public Property test1() {
21+
return property(arbInteger, a -> {
22+
P1<Integer> t = P.lazy(() -> a).memo();
23+
return prop(t._1().equals(t._1())).and(prop(t._1().equals(a)));
2224
});
23-
summary.println(p.check());
2425
}
2526

26-
@Test
27-
public void test2() {
28-
final Property p = property(arbInteger, arbInteger, (a, b) -> {
29-
P2<Integer, Integer> t = P.p(a, b).memo();
30-
return prop(t._1() == t._1() && t._2() == t._2());
27+
public Property test1_hardMemo() {
28+
return property(arbInteger, a -> {
29+
P1<Integer> t = P.lazy(() -> new Integer(a)).hardMemo();
30+
return prop(t._1() == t._1()).and(prop(t._1().equals(a)));
3131
});
32-
summary.println(p.check());
33-
}
34-
35-
static P2<Integer, Integer> pair = P.p(0, 0);
36-
37-
static Integer count(int i) {
38-
if (i == 1) {
39-
pair = P.p(pair._1() + 1, pair._2());
40-
return pair._1();
41-
} else if (i == 2) {
42-
pair = P.p(pair._1(), pair._2() + 1);
43-
return pair._2();
44-
} else {
45-
return -1;
46-
}
4732
}
4833

4934
@Test
50-
public void testRecomputeP2() {
51-
P2<Integer, Integer> t = P.lazy(u -> count(1), u -> count(2)).memo();
52-
System.out.println("tuple: " + t + " 1:" + t._1() + " 2: " + t._2());
53-
assertTrue(t._1() == t._1() && t._2() == t._2());
35+
public Property test2() {
36+
return property(arbInteger, arbInteger, (a, b) -> {
37+
P2<Integer, Integer> t = P.lazy(u -> new Integer(a), u -> new Integer(b)).memo();
38+
return prop(t._1().equals(t._1()) && t._1().equals(a) && t._2().equals(t._2()) && t._2().equals(b) );
39+
});
5440
}
5541

5642
@Test
57-
public void test3() {
58-
final Property p = property(arbInteger, arbInteger, arbInteger, (a, b, c) -> {
43+
public Property test3() {
44+
return property(arbInteger, arbInteger, arbInteger, (a, b, c) -> {
5945
P3<Integer, Integer, Integer> t = P.p(a, b, c).memo();
6046
return prop(t._1() == t._1() && t._2() == t._2() && t._3() == t._3());
6147
});
62-
summary.println(p.check());
6348
}
6449

6550
@Test
66-
public void test4() {
67-
final Property p = property(arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d) -> {
51+
public Property test4() {
52+
return property(arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d) -> {
6853
P4<Integer, Integer, Integer, Integer> t = P.p(a, b, c, d).memo();
6954
return prop(t._1() == t._1() && t._2() == t._2() && t._3() == t._3() && t._4() == t._4());
7055
});
71-
summary.println(p.check());
7256
}
7357

7458
@Test
75-
public void test5() {
76-
final Property p = property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e) -> {
59+
public Property test5() {
60+
return property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e) -> {
7761
P5<Integer, Integer, Integer, Integer, Integer> t = P.p(a, b, c, d, e).memo();
7862
return prop(t._1() == t._1() && t._2() == t._2() && t._3() == t._3() && t._4() == t._4() && t._5() == t._5());
7963
});
80-
summary.println(p.check());
8164
}
8265

8366
@Test
84-
public void test6() {
85-
final Property p = property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e, f) -> {
67+
public Property test6() {
68+
return property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e, f) -> {
8669
P6<Integer, Integer, Integer, Integer, Integer, Integer> t = P.p(a, b, c, d, e, f).memo();
8770
return prop(t._1() == t._1() && t._2() == t._2() && t._3() == t._3() && t._4() == t._4() && t._5() == t._5() && t._6() == t._6());
8871
});
89-
summary.println(p.check());
9072
}
9173

9274
@Test
93-
public void test7() {
94-
final Property p = property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e, f, g) -> {
75+
public Property test7() {
76+
return property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e, f, g) -> {
9577
P7<Integer, Integer, Integer, Integer, Integer, Integer, Integer> t = P.p(a, b, c, d, e, f, g).memo();
9678
return prop(t._1() == t._1() && t._2() == t._2() && t._3() == t._3() && t._4() == t._4() && t._5() == t._5() && t._6() == t._6() && t._7() == t._7());
9779
});
98-
summary.println(p.check());
9980
}
10081

10182
@Test
102-
public void test8() {
103-
final Property p = property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e, f, g, h) -> {
83+
public Property test8() {
84+
return property(arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, arbInteger, (a, b, c, d, e, f, g, h) -> {
10485
P8<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer> t = P.p(a, b, c, d, e, f, g, h).memo();
10586
return prop(t._1() == t._1() && t._2() == t._2() && t._3() == t._3() && t._4() == t._4() && t._5() == t._5() && t._6() == t._6() && t._7() == t._7() && t._8() == t._8());
10687
});
107-
summary.println(p.check());
10888
}
10989

11090
}

0 commit comments

Comments
 (0)