1
1
package fj ;
2
2
3
+ import fj .data .Enumerator ;
3
4
import fj .data .Option ;
5
+ import fj .data .Set ;
4
6
import fj .data .Stream ;
5
7
import org .junit .Test ;
6
8
@@ -16,4 +18,26 @@ public void lifted_sum_of_two_numbers() {
16
18
assertThat (optionMonoid .sum (some (3 ), some (5 )), is (some (8 )));
17
19
assertThat (optionMonoid .sumLeft (Stream .arrayStream (some (3 ), some (5 ))), is (some (8 )));
18
20
}
21
+
22
+ @ Test
23
+ public void intersection_monoid_test () {
24
+ Bounded <Integer > integersBounded = Bounded .bounded (0 , 10 );
25
+ Monoid <Set <Integer >> intersectionMonoid = Monoid .setIntersectionMonoid (integersBounded , Enumerator .intEnumerator , Ord .intOrd );
26
+ Set <Integer > first = Set .set (Ord .intOrd , 1 , 2 , 3 , 4 );
27
+ Set <Integer > second = Set .set (Ord .intOrd , 3 , 4 , 5 , 6 );
28
+ Set <Integer > zero = intersectionMonoid .zero ();
29
+ Set <Integer > actual = intersectionMonoid .sum (intersectionMonoid .sum (zero , first ), second );
30
+ assertThat (actual , is (Set .set (Ord .intOrd , 3 , 4 )));
31
+ }
32
+
33
+ @ Test
34
+ public void union_monoid_test () {
35
+ Monoid <Set <Integer >> intersectionMonoid = Monoid .setMonoid (Ord .intOrd );
36
+ Set <Integer > first = Set .set (Ord .intOrd , 1 , 2 , 3 , 4 );
37
+ Set <Integer > second = Set .set (Ord .intOrd , 3 , 4 , 5 , 6 );
38
+ Set <Integer > zero = intersectionMonoid .zero ();
39
+ Set <Integer > actual = intersectionMonoid .sum (intersectionMonoid .sum (zero , first ), second );
40
+ assertThat (actual , is (Set .set (Ord .intOrd , 1 , 2 , 3 , 4 , 5 , 6 )));
41
+ }
42
+
19
43
}
0 commit comments