Skip to content

Commit 33d5e83

Browse files
committed
Add P tests
Signed-off-by: Gábor Lipták <gliptak@gmail.com>
1 parent 1e6ca6e commit 33d5e83

File tree

1 file changed

+159
-0
lines changed

1 file changed

+159
-0
lines changed

core/src/test/java/fj/PTest.java

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
package fj;
2+
3+
import org.junit.Test;
4+
5+
import static fj.Function.identity;
6+
import static org.hamcrest.core.Is.is;
7+
import static org.junit.Assert.assertThat;
8+
9+
public class PTest {
10+
@Test
11+
public void testPF(){
12+
final F<Integer, P1<Integer>> p1f = P.p1();
13+
final P1<Integer> p1 = p1f.f(1);
14+
F<Integer, F<Integer, P2<Integer, Integer>>> p2f = P.p2();
15+
final P2<Integer, Integer> p2 = p2f.f(1).f(2);
16+
assertThat(P2.<Integer,Integer>__1().f(p2), is(P1.<Integer>__1().f(p1)));
17+
final F<Integer, F<Integer, F<Integer, P3<Integer, Integer, Integer>>>> p3f = P.p3();
18+
final P3<Integer, Integer, Integer> p3 = p3f.f(1).f(2).f(3);
19+
assertThat(P3.<Integer,Integer, Integer>__1().f(p3), is(P2.<Integer,Integer>__1().f(p2)));
20+
assertThat(P3.<Integer,Integer, Integer>__2().f(p3), is(P2.<Integer,Integer>__2().f(p2)));
21+
final F<Integer, F<Integer, F<Integer, F<Integer, P4<Integer, Integer, Integer, Integer>>>>> p4f = P.p4();
22+
final P4<Integer, Integer, Integer, Integer> p4 = p4f.f(1).f(2).f(3).f(4);
23+
assertThat(P4.<Integer,Integer,Integer,Integer>__1().f(p4), is(P3.<Integer,Integer,Integer>__1().f(p3)));
24+
assertThat(P4.<Integer,Integer,Integer,Integer>__2().f(p4), is(P3.<Integer,Integer,Integer>__2().f(p3)));
25+
assertThat(P4.<Integer,Integer,Integer,Integer>__3().f(p4), is(P3.<Integer,Integer,Integer>__3().f(p3)));
26+
final F<Integer, F<Integer, F<Integer, F<Integer, F<Integer, P5<Integer, Integer, Integer, Integer, Integer>>>>>> p5f = P.p5();
27+
final P5<Integer, Integer, Integer, Integer, Integer> p5 = p5f.f(1).f(2).f(3).f(4).f(5);
28+
assertThat(P5.<Integer,Integer,Integer,Integer,Integer>__1().f(p5), is(P4.<Integer,Integer,Integer,Integer>__1().f(p4)));
29+
assertThat(P5.<Integer,Integer,Integer,Integer,Integer>__2().f(p5), is(P4.<Integer,Integer,Integer,Integer>__2().f(p4)));
30+
assertThat(P5.<Integer,Integer,Integer,Integer,Integer>__3().f(p5), is(P4.<Integer,Integer,Integer,Integer>__3().f(p4)));
31+
assertThat(P5.<Integer,Integer,Integer,Integer,Integer>__4().f(p5), is(P4.<Integer,Integer,Integer,Integer>__4().f(p4)));
32+
final F<Integer, F<Integer, F<Integer, F<Integer, F<Integer, F<Integer,
33+
P6<Integer, Integer, Integer, Integer, Integer, Integer>>>>>>> p6f = P.p6();
34+
final P6<Integer, Integer, Integer, Integer, Integer, Integer> p6 = p6f.f(1).f(2).f(3).f(4).f(5).f(6);
35+
assertThat(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__1().f(p6),
36+
is(P5.<Integer,Integer,Integer,Integer,Integer>__1().f(p5)));
37+
assertThat(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__2().f(p6),
38+
is(P5.<Integer,Integer,Integer,Integer,Integer>__2().f(p5)));
39+
assertThat(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__3().f(p6),
40+
is(P5.<Integer,Integer,Integer,Integer,Integer>__3().f(p5)));
41+
assertThat(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__4().f(p6),
42+
is(P5.<Integer,Integer,Integer,Integer,Integer>__4().f(p5)));
43+
assertThat(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__5().f(p6),
44+
is(P5.<Integer,Integer,Integer,Integer,Integer>__5().f(p5)));
45+
final F<Integer, F<Integer, F<Integer, F<Integer, F<Integer, F<Integer, F<Integer,
46+
P7<Integer, Integer, Integer, Integer, Integer, Integer, Integer>>>>>>>> p7f = P.p7();
47+
final P7<Integer, Integer, Integer, Integer, Integer, Integer, Integer> p7 =
48+
p7f.f(1).f(2).f(3).f(4).f(5).f(6).f(7);
49+
assertThat(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__1().f(p7),
50+
is(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__1().f(p6)));
51+
assertThat(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__2().f(p7),
52+
is(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__2().f(p6)));
53+
assertThat(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__3().f(p7),
54+
is(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__3().f(p6)));
55+
assertThat(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__4().f(p7),
56+
is(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__4().f(p6)));
57+
assertThat(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__5().f(p7),
58+
is(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__5().f(p6)));
59+
assertThat(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__6().f(p7),
60+
is(P6.<Integer,Integer,Integer,Integer,Integer,Integer>__6().f(p6)));
61+
final F<Integer, F<Integer, F<Integer, F<Integer, F<Integer, F<Integer,
62+
F<Integer, F<Integer, P8<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer>>>>>>>>> p8f = P.p8();
63+
final P8<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer> p8 =
64+
p8f.f(1).f(2).f(3).f(4).f(5).f(6).f(7).f(8);
65+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__1().f(p8),
66+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__1().f(p7)));
67+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__2().f(p8),
68+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__2().f(p7)));
69+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__3().f(p8),
70+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__3().f(p7)));
71+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__4().f(p8),
72+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__4().f(p7)));
73+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__5().f(p8),
74+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__5().f(p7)));
75+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__6().f(p8),
76+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__6().f(p7)));
77+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__7().f(p8),
78+
is(P7.<Integer,Integer,Integer,Integer,Integer,Integer,Integer>__7().f(p7)));
79+
assertThat(P8.<Integer,Integer,Integer,Integer,Integer,Integer,Integer,Integer>__8().f(p8), is(8));
80+
}
81+
82+
@Test
83+
public void testPProject1() {
84+
final P1<Integer> p1 = P.p(1);
85+
assertThat(p1.map(identity()), is(p1));
86+
}
87+
88+
@Test
89+
public void testPProject2() {
90+
final P2<Integer, Integer> p2 = P.p(1, 2);
91+
assertThat(p2.map1(identity()), is(p2));
92+
assertThat(p2.map2(identity()), is(p2));
93+
}
94+
95+
@Test
96+
public void testPProject3() {
97+
final P3<Integer, Integer, Integer> p3 = P.p(1, 2, 3);
98+
assertThat(p3.map1(identity()), is(p3));
99+
assertThat(p3.map2(identity()), is(p3));
100+
assertThat(p3.map3(identity()), is(p3));
101+
}
102+
103+
@Test
104+
public void testPProject4() {
105+
final P4<Integer, Integer, Integer, Integer> p4 = P.p(1, 2, 3, 4);
106+
assertThat(p4.map1(identity()), is(p4));
107+
assertThat(p4.map2(identity()), is(p4));
108+
assertThat(p4.map3(identity()), is(p4));
109+
assertThat(p4.map4(identity()), is(p4));
110+
}
111+
112+
@Test
113+
public void testPProject5() {
114+
final P5<Integer, Integer, Integer, Integer, Integer> p5 = P.p(1, 2, 3, 4, 5);
115+
assertThat(p5.map1(identity()), is(p5));
116+
assertThat(p5.map2(identity()), is(p5));
117+
assertThat(p5.map3(identity()), is(p5));
118+
assertThat(p5.map4(identity()), is(p5));
119+
assertThat(p5.map5(identity()), is(p5));
120+
}
121+
122+
@Test
123+
public void testPProject6() {
124+
final P6<Integer, Integer, Integer, Integer, Integer, Integer> p6 = P.p(1, 2, 3, 4, 5, 6);
125+
assertThat(p6.map1(identity()), is(p6));
126+
assertThat(p6.map2(identity()), is(p6));
127+
assertThat(p6.map3(identity()), is(p6));
128+
assertThat(p6.map4(identity()), is(p6));
129+
assertThat(p6.map5(identity()), is(p6));
130+
assertThat(p6.map6(identity()), is(p6));
131+
}
132+
133+
@Test
134+
public void testPProject7() {
135+
final P7<Integer, Integer, Integer, Integer, Integer, Integer, Integer> p7 =
136+
P.p(1, 2, 3, 4, 5, 6, 7);
137+
assertThat(p7.map1(identity()), is(p7));
138+
assertThat(p7.map2(identity()), is(p7));
139+
assertThat(p7.map3(identity()), is(p7));
140+
assertThat(p7.map4(identity()), is(p7));
141+
assertThat(p7.map5(identity()), is(p7));
142+
assertThat(p7.map6(identity()), is(p7));
143+
assertThat(p7.map7(identity()), is(p7));
144+
}
145+
146+
@Test
147+
public void testPProject8() {
148+
final P8<Integer, Integer, Integer, Integer, Integer, Integer, Integer, Integer> p8 =
149+
P.p(1, 2, 3, 4, 5, 6, 7, 8);
150+
assertThat(p8.map1(identity()), is(p8));
151+
assertThat(p8.map2(identity()), is(p8));
152+
assertThat(p8.map3(identity()), is(p8));
153+
assertThat(p8.map4(identity()), is(p8));
154+
assertThat(p8.map5(identity()), is(p8));
155+
assertThat(p8.map6(identity()), is(p8));
156+
assertThat(p8.map7(identity()), is(p8));
157+
assertThat(p8.map8(identity()), is(p8));
158+
}
159+
}

0 commit comments

Comments
 (0)