View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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   * @version $Revision: 1365329 $ $Date: 2012-07-24 19:34:23 -0300 (Tue, 24 Jul 2012) $
32   */
33  public class TestNullaryOr extends BaseFunctorTest {
34  
35      // Functor Testing Framework
36      // ------------------------------------------------------------------------
37  
38      @Override
39      protected Object makeFunctor() {
40          return new NullaryOr(Constant.FALSE, Constant.TRUE);
41      }
42  
43      // Tests
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 }