1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.functor.core.composite;
18
19 import static org.junit.Assert.assertEquals;
20 import static org.junit.Assert.assertFalse;
21 import static org.junit.Assert.assertTrue;
22 import static org.junit.Assert.fail;
23
24 import org.apache.commons.functor.BaseFunctorTest;
25 import org.apache.commons.functor.core.Constant;
26 import org.junit.Test;
27
28
29
30
31
32 public class TestCompositeUnaryPredicate extends BaseFunctorTest {
33
34
35
36
37 protected Object makeFunctor() {
38 return Composite.predicate(Constant.TRUE);
39 }
40
41
42
43
44 @Test
45 public void testTest() throws Exception {
46 assertTrue(Composite.predicate(Constant.TRUE).test(null));
47 assertTrue(Composite.predicate(Constant.TRUE, Constant.of(3)).test("xyzzy"));
48 assertFalse(Composite.predicate(Constant.FALSE, Constant.of(4)).test("xyzzy"));
49 }
50
51 @Test
52 @SuppressWarnings("unchecked")
53 public void testNullNotAllowed() throws Exception {
54 try {
55 new CompositeUnaryPredicate(null);
56 fail("Expected IllegalArgumentException");
57 } catch(IllegalArgumentException e) {
58
59 }
60 try {
61 Composite.function(Constant.TRUE, null);
62 fail("Expected IllegalArgumentException");
63 } catch(IllegalArgumentException e) {
64
65 }
66 }
67
68 @Test
69 public void testOf() throws Exception {
70 CompositeUnaryPredicate<Object> f = new CompositeUnaryPredicate<Object>(Constant.TRUE);
71 assertTrue(f.test(null));
72 for (int i=0;i<10;i++) {
73 f = f.of(Constant.FALSE);
74 assertTrue(f.test(null));
75 }
76 }
77
78 @Test
79 public void testEquals() throws Exception {
80 CompositeUnaryPredicate<Object> f = new CompositeUnaryPredicate<Object>(Constant.TRUE);
81 assertEquals(f,f);
82 CompositeUnaryPredicate<Object> g = new CompositeUnaryPredicate<Object>(Constant.TRUE);
83 assertObjectsAreEqual(f,g);
84
85 for (int i=0;i<3;i++) {
86 f = f.of(Constant.of("x"));
87 assertObjectsAreNotEqual(f,g);
88 g = g.of(Constant.of("x"));
89 assertObjectsAreEqual(f,g);
90 f = f.of(Constant.of("y")).of(Constant.of("z"));
91 assertObjectsAreNotEqual(f,g);
92 g = g.of(Constant.of("y")).of(Constant.of("z"));
93 assertObjectsAreEqual(f,g);
94 }
95
96 assertObjectsAreNotEqual(f,Constant.FALSE);
97 }
98
99 }