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
23 import java.util.Arrays;
24
25 import org.apache.commons.functor.BaseFunctorTest;
26 import org.apache.commons.functor.NullaryPredicate;
27 import org.apache.commons.functor.core.Constant;
28 import org.junit.Test;
29
30
31
32
33 public class TestNullaryOr extends BaseFunctorTest {
34
35
36
37
38 @Override
39 protected Object makeFunctor() {
40 return new NullaryOr(Constant.FALSE, Constant.TRUE);
41 }
42
43
44
45
46 @Test
47 public void testConstructors() {
48 NullaryOr or = new NullaryOr(Constant.FALSE);
49 assertEquals(Boolean.FALSE, or.test());
50 NullaryOr or2 = new NullaryOr((Iterable<NullaryPredicate>)Arrays.asList((NullaryPredicate)Constant.truePredicate()));
51 assertEquals(Boolean.TRUE, or2.test());
52 NullaryOr or3 = new NullaryOr((NullaryPredicate)null);
53 assertEquals(Boolean.FALSE, or3.test());
54 NullaryOr or4 = new NullaryOr((Iterable<NullaryPredicate>)null);
55 assertEquals(Boolean.FALSE, or4.test());
56 }
57
58 @Test
59 public void testTrue() throws Exception {
60 assertTrue((new NullaryOr(Constant.TRUE)).test());
61 assertTrue((new NullaryOr(Constant.FALSE, Constant.TRUE)).test());
62 assertTrue((new NullaryOr(Constant.FALSE, Constant.FALSE, Constant.TRUE)).test());
63
64 NullaryOr p = new NullaryOr(Constant.TRUE);
65 assertTrue(p.test());
66 for (int i=0;i<10;i++) {
67 p.or(Constant.of(i%2==0));
68 assertTrue(p.test());
69 }
70
71 NullaryOr q = new NullaryOr(Constant.TRUE);
72 assertTrue(q.test());
73 for (int i=0;i<10;i++) {
74 q.or(Constant.of(i%2==0));
75 assertTrue(q.test());
76 }
77
78 NullaryOr r = new NullaryOr(p,q);
79 assertTrue(r.test());
80 }
81
82 @Test
83 public void testFalse() throws Exception {
84 assertFalse(new NullaryOr().test());
85 assertFalse(new NullaryOr(Constant.FALSE).test());
86 assertFalse(new NullaryOr(Constant.FALSE,Constant.FALSE).test());
87 assertFalse(new NullaryOr(Constant.FALSE,Constant.FALSE,Constant.FALSE).test());
88
89 NullaryOr p = new NullaryOr(Constant.FALSE);
90 assertFalse(p.test());
91 for (int i=0;i<10;i++) {
92 p.or(Constant.FALSE);
93 assertFalse(p.test());
94 }
95
96 NullaryOr q = new NullaryOr(Constant.FALSE);
97 assertFalse(q.test());
98 for (int i=0;i<10;i++) {
99 q.or(Constant.FALSE);
100 assertFalse(q.test());
101 }
102
103 NullaryOr r = new NullaryOr(p,q);
104 assertTrue(!r.test());
105 }
106
107 @Test
108 public void testDuplicateAdd() throws Exception {
109 NullaryPredicate p = Constant.TRUE;
110 NullaryOr q = new NullaryOr(p,p);
111 assertTrue(q.test());
112 for (int i=0;i<10;i++) {
113 q.or(p);
114 assertTrue(q.test());
115 }
116 }
117
118 @Test
119 public void testEquals() throws Exception {
120 NullaryOr p = new NullaryOr();
121 assertEquals(p,p);
122
123 NullaryOr q = new NullaryOr();
124 assertObjectsAreEqual(p,q);
125
126 NullaryAnd r = new NullaryAnd();
127 assertObjectsAreNotEqual(p,r);
128
129 for (int i=0;i<3;i++) {
130 p.or(Constant.TRUE);
131 assertObjectsAreNotEqual(p,q);
132 q.or(Constant.TRUE);
133 assertObjectsAreEqual(p,q);
134 r.and(Constant.TRUE);
135 assertObjectsAreNotEqual(p,r);
136
137 p.or(new NullaryOr(Constant.TRUE,Constant.FALSE));
138 assertObjectsAreNotEqual(p,q);
139 q.or(new NullaryOr(Constant.TRUE,Constant.FALSE));
140 assertObjectsAreEqual(p,q);
141 r.and(new NullaryOr(Constant.TRUE,Constant.FALSE));
142 assertObjectsAreNotEqual(p,r);
143 }
144
145 assertObjectsAreNotEqual(p,Constant.TRUE);
146
147 assertObjectsAreNotEqual(p,new NullaryOr((Iterable<NullaryPredicate>)null));
148 assertObjectsAreNotEqual(p,new NullaryOr((NullaryPredicate[])null));
149 assertObjectsAreNotEqual(p,new NullaryOr((NullaryPredicate)null));
150
151 assertTrue(!p.equals(null));
152 }
153
154 }