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.UnaryFunction;
27  import org.apache.commons.functor.UnaryPredicate;
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 TestIdentity extends BaseFunctorTest {
35  
36      // Functor Testing Framework
37      // ------------------------------------------------------------------------
38  
39      protected Object makeFunctor() {
40          return Identity.INSTANCE;
41      }
42  
43      // Tests
44      // ------------------------------------------------------------------------
45  
46      @Test
47      public void testEvaluate() throws Exception {
48          UnaryFunction<Object, Object> f = new Identity<Object>();
49          assertNull(f.evaluate(null));
50          assertEquals("xyzzy",f.evaluate("xyzzy"));
51          assertEquals(new Integer(3),f.evaluate(new Integer(3)));
52          Object obj = new Long(12345L);
53          assertSame(obj,f.evaluate(obj));
54      }
55  
56      @Test
57      public void testTest() throws Exception {
58          UnaryPredicate<Object> p = new Identity<Object>();
59          assertTrue(p.test(Boolean.TRUE));
60          assertTrue(!p.test(Boolean.FALSE));
61          try {
62              p.test("true");
63              fail("Expected ClassCastException");
64          } catch(ClassCastException e) {
65              // expected
66          }
67          try {
68              p.test(null);
69              fail("Expected NullPointerException");
70          } catch(NullPointerException e) {
71              // expected
72          }
73      }
74  
75      @Test
76      public void testEquals() throws Exception {
77          UnaryFunction<Object, Object> f = new Identity<Object>();
78          assertEquals(f,f);
79          assertObjectsAreEqual(f,new Identity<Object>());
80          assertObjectsAreEqual(f,Identity.instance());
81          assertObjectsAreNotEqual(f,Constant.of("abcde"));
82      }
83  
84      @Test
85      public void testConstant() throws Exception {
86          assertEquals(Identity.instance(),Identity.instance());
87      }
88  }