ae5858e79ac401bed7dc1c18336f3544713ccc34
[policy/drools-pdp.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.drools.pooling.extractor;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNull;
25 import java.lang.reflect.Method;
26 import org.junit.Before;
27 import org.junit.Test;
28
29 public class MethodExtractorTest {
30
31     private static final String VALUE = "the value";
32     private static final Integer INT_VALUE = 10;
33
34     private Method meth;
35     private MethodExtractor ext;
36
37     @Before
38     public void setUp() throws Exception {
39         meth = MyClass.class.getMethod("getValue");
40         ext = new MethodExtractor(meth);
41     }
42
43     @Test
44     public void testExtract() throws Exception {
45         assertEquals(VALUE, ext.extract(new MyClass()));
46
47         // repeat
48         assertEquals(VALUE, ext.extract(new MyClass()));
49
50         // null value
51         MyClass obj = new MyClass();
52         meth = MyClass.class.getMethod("getNullValue");
53         ext = new MethodExtractor(meth);
54         assertEquals(null, ext.extract(obj));
55
56         // different value type
57         meth = MyClass.class.getMethod("getIntValue");
58         ext = new MethodExtractor(meth);
59         assertEquals(INT_VALUE, ext.extract(new MyClass()));
60     }
61
62     @Test
63     public void testExtract_ArgEx() {
64         // pass it the wrong class type
65         assertNull(ext.extract(this));
66     }
67
68     @Test
69     public void testExtract_InvokeEx() throws Exception {
70         // invoke method that throws an exception
71         meth = MyClass.class.getMethod("throwException");
72         ext = new MethodExtractor(meth);
73         assertEquals(null, ext.extract(new MyClass()));
74     }
75
76     private static class MyClass {
77
78         @SuppressWarnings("unused")
79         public String getValue() {
80             return VALUE;
81         }
82
83         @SuppressWarnings("unused")
84         public int getIntValue() {
85             return INT_VALUE;
86         }
87
88         @SuppressWarnings("unused")
89         public String getNullValue() {
90             return null;
91         }
92
93         @SuppressWarnings("unused")
94         public String throwException() {
95             throw new IllegalStateException("expected");
96         }
97     }
98
99 }