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.assertNull;
21
22 import org.apache.commons.functor.BaseFunctorTest;
23 import org.apache.commons.functor.BinaryFunction;
24 import org.apache.commons.functor.core.Constant;
25 import org.apache.commons.functor.core.LeftIdentity;
26 import org.apache.commons.functor.core.RightIdentity;
27 import org.junit.Test;
28
29
30
31
32
33 public class TestBinaryCompositeBinaryFunction extends BaseFunctorTest {
34
35
36
37
38 protected Object makeFunctor() {
39 return new BinaryCompositeBinaryFunction<Object, Object, Object>(
40 RightIdentity.FUNCTION,
41 Constant.of("left"),
42 RightIdentity.FUNCTION);
43 }
44
45
46
47
48 @Test
49 @SuppressWarnings("unchecked")
50 public void testEvaluateRaw() throws Exception {
51 BinaryFunction f = new BinaryCompositeBinaryFunction(
52 RightIdentity.FUNCTION,
53 Constant.of("K"),
54 RightIdentity.FUNCTION);
55 assertEquals("right",f.evaluate("left","right"));
56 assertNull("right",f.evaluate("left",null));
57 assertEquals("right",f.evaluate(null,"right"));
58 }
59
60 @Test
61 public void testEvaluate() throws Exception {
62 BinaryFunction<String, String, String> f = new BinaryCompositeBinaryFunction<String, String, String>(
63 RightIdentity.<String, String>function(),
64 Constant.of("K"),
65 RightIdentity.<String, String>function());
66 assertEquals("right",f.evaluate("left","right"));
67 assertNull("right",f.evaluate("left",null));
68 assertEquals("right",f.evaluate(null,"right"));
69 }
70
71 @Test
72 public void testEvaluateObject() throws Exception {
73 BinaryFunction<Object, Object, Object> f = new BinaryCompositeBinaryFunction<Object, Object, Object>(
74 RightIdentity.FUNCTION,
75 Constant.of("K"),
76 RightIdentity.FUNCTION);
77 assertEquals("right",f.evaluate("left","right"));
78 assertNull("right",f.evaluate("left",null));
79 assertEquals("right",f.evaluate(null,"right"));
80 }
81
82 @Test
83 public void testEquals() throws Exception {
84 BinaryFunction<Object, Object, Object> f = new BinaryCompositeBinaryFunction<Object, Object, Object>(
85 LeftIdentity.FUNCTION,
86 Constant.of("left"),
87 Constant.of("right"));
88 assertEquals(f,f);
89 assertObjectsAreEqual(f,new BinaryCompositeBinaryFunction<Object, Object, Object>(
90 LeftIdentity.FUNCTION,
91 Constant.of("left"),
92 Constant.of("right")));
93 assertObjectsAreNotEqual(f,new BinaryCompositeBinaryFunction<Object, Object, Object>(
94 RightIdentity.FUNCTION,
95 Constant.of("left"),
96 Constant.of("right")));
97 assertObjectsAreNotEqual(f,new BinaryCompositeBinaryFunction<Object, Object, Object>(
98 RightIdentity.FUNCTION,
99 RightIdentity.FUNCTION,
100 Constant.of("right")));
101 assertObjectsAreNotEqual(f,new BinaryCompositeBinaryFunction<Object, Object, Object>(
102 LeftIdentity.FUNCTION,
103 Constant.of("left"),
104 RightIdentity.FUNCTION));
105 }
106
107 }