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;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertNull;
21  import static org.junit.Assert.assertSame;
22  import static org.junit.Assert.assertTrue;
23  import static org.junit.Assert.fail;
24  
25  import org.apache.commons.functor.BaseFunctorTest;
26  import org.apache.commons.functor.BinaryFunction;
27  import org.apache.commons.functor.BinaryPredicate;
28  import org.junit.Test;
29  
30  /**
31   * @version $Revision: 1171255 $ $Date: 2011-09-15 22:27:39 +0200 (Thu, 15 Sep 2011) $
32   * @author Rodney Waldhoff
33   */
34  public class TestLeftIdentity extends BaseFunctorTest {
35  
36      // Functor Testing Framework
37      // ------------------------------------------------------------------------
38  
39      protected Object makeFunctor() {
40          return LeftIdentity.FUNCTION;
41      }
42  
43      // Tests
44      // ------------------------------------------------------------------------
45  
46      @Test
47      public void testEvaluate() throws Exception {
48          BinaryFunction<Object, Object, Object> f = LeftIdentity.FUNCTION;
49          assertNull(f.evaluate(null,null));
50          assertNull(f.evaluate(null,"xyzzy"));
51          assertEquals("xyzzy",f.evaluate("xyzzy","abcdefg"));
52          assertEquals("xyzzy",f.evaluate("xyzzy",null));
53          assertEquals(new Integer(3),f.evaluate(new Integer(3),null));
54          Object obj = new Long(12345L);
55          assertSame(obj,f.evaluate(obj,null));
56          assertSame(obj,f.evaluate(obj,obj));
57      }
58  
59      @Test
60      public void testTest() throws Exception {
61          BinaryPredicate<Boolean, Object> p = LeftIdentity.PREDICATE;
62          assertTrue(p.test(Boolean.TRUE,null));
63          assertTrue(!p.test(Boolean.FALSE,null));
64          try {
65              p.test(null, null);
66              fail("Expected NullPointerException");
67          } catch (NullPointerException npe) {
68          }
69      }
70  
71      @Test
72      public void testEquals() throws Exception {
73          BinaryFunction<Object, Object, Object> f = LeftIdentity.<Object, Object>function();
74          assertEquals(f,f);
75          assertObjectsAreEqual(f,LeftIdentity.FUNCTION);
76          assertObjectsAreEqual(f,LeftIdentity.FUNCTION);
77          assertObjectsAreNotEqual(f,RightIdentity.FUNCTION);
78          assertObjectsAreNotEqual(f,Constant.of("abcde"));
79          assertObjectsAreNotEqual(f,Constant.of(true));
80      }
81  
82      @Test
83      public void testConstant() throws Exception {
84          assertEquals(LeftIdentity.function(),LeftIdentity.function());
85      }
86  }