001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.functor.core.composite; 018 019import static org.junit.Assert.assertEquals; 020import static org.junit.Assert.assertFalse; 021import static org.junit.Assert.assertTrue; 022 023import java.util.Arrays; 024 025import org.apache.commons.functor.BaseFunctorTest; 026import org.apache.commons.functor.NullaryPredicate; 027import org.apache.commons.functor.core.Constant; 028import org.junit.Test; 029 030/** 031 * @version $Revision: 1365329 $ $Date: 2012-07-24 19:34:23 -0300 (Tue, 24 Jul 2012) $ 032 */ 033public class TestNullaryOr extends BaseFunctorTest { 034 035 // Functor Testing Framework 036 // ------------------------------------------------------------------------ 037 038 @Override 039 protected Object makeFunctor() { 040 return new NullaryOr(Constant.FALSE, Constant.TRUE); 041 } 042 043 // Tests 044 // ------------------------------------------------------------------------ 045 046 @Test 047 public void testConstructors() { 048 NullaryOr or = new NullaryOr(Constant.FALSE); 049 assertEquals(Boolean.FALSE, or.test()); 050 NullaryOr or2 = new NullaryOr((Iterable<NullaryPredicate>)Arrays.asList((NullaryPredicate)Constant.truePredicate())); 051 assertEquals(Boolean.TRUE, or2.test()); 052 NullaryOr or3 = new NullaryOr((NullaryPredicate)null); 053 assertEquals(Boolean.FALSE, or3.test()); 054 NullaryOr or4 = new NullaryOr((Iterable<NullaryPredicate>)null); 055 assertEquals(Boolean.FALSE, or4.test()); 056 } 057 058 @Test 059 public void testTrue() throws Exception { 060 assertTrue((new NullaryOr(Constant.TRUE)).test()); 061 assertTrue((new NullaryOr(Constant.FALSE, Constant.TRUE)).test()); 062 assertTrue((new NullaryOr(Constant.FALSE, Constant.FALSE, Constant.TRUE)).test()); 063 064 NullaryOr p = new NullaryOr(Constant.TRUE); 065 assertTrue(p.test()); 066 for (int i=0;i<10;i++) { 067 p.or(Constant.of(i%2==0)); 068 assertTrue(p.test()); 069 } 070 071 NullaryOr q = new NullaryOr(Constant.TRUE); 072 assertTrue(q.test()); 073 for (int i=0;i<10;i++) { 074 q.or(Constant.of(i%2==0)); 075 assertTrue(q.test()); 076 } 077 078 NullaryOr r = new NullaryOr(p,q); 079 assertTrue(r.test()); 080 } 081 082 @Test 083 public void testFalse() throws Exception { 084 assertFalse(new NullaryOr().test()); 085 assertFalse(new NullaryOr(Constant.FALSE).test()); 086 assertFalse(new NullaryOr(Constant.FALSE,Constant.FALSE).test()); 087 assertFalse(new NullaryOr(Constant.FALSE,Constant.FALSE,Constant.FALSE).test()); 088 089 NullaryOr p = new NullaryOr(Constant.FALSE); 090 assertFalse(p.test()); 091 for (int i=0;i<10;i++) { 092 p.or(Constant.FALSE); 093 assertFalse(p.test()); 094 } 095 096 NullaryOr q = new NullaryOr(Constant.FALSE); 097 assertFalse(q.test()); 098 for (int i=0;i<10;i++) { 099 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}