7cfe68f9eb47117d0c32a2664eaaa7baf1732db0
[dmaap/datarouter.git] / datarouter-prov / src / test / java / org / onap / dmaap / datarouter / provisioning / utils / LOGJSONObjectTest.java
1 /*******************************************************************************
2  * ============LICENSE_START==================================================
3  * * org.onap.dmaap
4  * * ===========================================================================
5  * * Copyright © 2017 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  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  * *
22  ******************************************************************************/
23
24 package org.onap.dmaap.datarouter.provisioning.utils;
25
26 import java.io.CharArrayWriter;
27 import java.io.Writer;
28 import org.json.JSONArray;
29 import org.junit.Before;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.powermock.modules.junit4.PowerMockRunner;
33 import java.util.HashMap;
34 import java.util.Map;
35 import static org.hamcrest.Matchers.is;
36 import static org.junit.Assert.assertThat;
37
38
39 @RunWith(PowerMockRunner.class)
40 public class LOGJSONObjectTest {
41
42   private static LOGJSONObject logJO;
43
44   @Before
45   public void setUp() throws Exception {
46     Map<String, Object> map = new HashMap<>();
47     map.put("key", null);
48     logJO = new LOGJSONObject(map);
49   }
50
51   @Test
52   public void Given_Method_Is_Accumulate_And_Value_Is_Valid_Put_Value_Into_New_JSONArray()
53       throws Exception {
54     Map<String, Object> map = new HashMap<>();
55     map.put("key", 3);
56     LOGJSONObject logJObject = new LOGJSONObject(map);
57
58     String s = "key";
59     logJObject.accumulate(s, null);
60     assertThat(logJObject.get("key").toString(), is("[3,null]"));
61   }
62
63   @Test
64   public void Given_Method_Is_Accumulate_And_Value_Is_Null_Dont_Add_Key_Value_Pair()
65       throws Exception {
66     String s = "key";
67     logJO.accumulate(s, null);
68     assertThat(logJO.has("key"), is(false));
69   }
70
71   @Test
72   public void Given_Method_Is_Append_And_Value_Is_Null_Append_New_Value()
73       throws Exception {
74     String s = "key";
75     double d = 2.0;
76     logJO.append(s, d);
77     assertThat(logJO.getJSONArray("key").get(0), is(2.0));
78   }
79
80
81   @Test
82   public void Given_Method_Is_DoubleToString_And_Value_Is_NaN_Return_Null()
83       throws Exception {
84     double d = 2.0;
85     assertThat(logJO.doubleToString(d), is("2"));
86   }
87
88
89   @Test
90   public void Given_Method_Is_GetBoolean_And_Value_Is_False_Return_False()
91       throws Exception {
92     Map<String, Object> map = new HashMap<>();
93     map.put("key", false);
94     LOGJSONObject logJObject = new LOGJSONObject(map);
95
96     String s = "key";
97     assertThat(logJObject.getBoolean(s), is(false));
98   }
99
100   @Test
101   public void Given_Method_Is_GetBoolean_And_Value_Is_True_Return_True()
102       throws Exception {
103     Map<String, Object> map = new HashMap<>();
104     map.put("key", true);
105     LOGJSONObject logJObject = new LOGJSONObject(map);
106
107     String s = "key";
108     assertThat(logJObject.getBoolean(s), is(true));
109   }
110
111   @Test
112   public void Given_Method_Is_GetDouble_And_Value_Is_A_Double_Return_Value()
113       throws Exception {
114     Map<String, Object> map = new HashMap<>();
115     map.put("key", 2.0);
116     LOGJSONObject logJObject = new LOGJSONObject(map);
117
118     String s = "key";
119     assertThat(logJObject.getDouble(s), is(2.0));
120   }
121
122   @Test
123   public void Given_Method_Is_GetInt_And_Value_Is_An_Int_Return_Value()
124       throws Exception {
125     Map<String, Object> map = new HashMap<>();
126     map.put("key", 3);
127     LOGJSONObject logJObject = new LOGJSONObject(map);
128
129     String s = "key";
130     assertThat(logJObject.getInt(s), is(3));
131   }
132
133   @Test
134   public void Given_Method_Is_GetJSONArray_And_Value_Is_A_JSONArray_Return_Value()
135       throws Exception {
136     JSONArray jA = new JSONArray();
137     Map<String, Object> map = new HashMap<>();
138     map.put("key", jA);
139     LOGJSONObject logJObject = new LOGJSONObject(map);
140
141     String s = "key";
142     assertThat(logJObject.getJSONArray(s), is(jA));
143   }
144
145   @Test
146   public void Given_Method_Is_GetJSONObject_And_Value_Is_A_JSONObject_Return_Value()
147       throws Exception {
148     LOGJSONObject logJObj = new LOGJSONObject();
149     logJObj.put("stub_key", 1);
150     Map<String, Object> map = new HashMap<>();
151     map.put("key", logJObj);
152     LOGJSONObject logJObject = new LOGJSONObject(map);
153
154     String s = "key";
155     assertThat(logJObject.getJSONObject(s), is(logJObj));
156   }
157
158   @Test
159   public void Given_Method_Is_GetLong_And_Value_Is_A_Long_Return_Value()
160       throws Exception {
161     long l = 5;
162     Map<String, Object> map = new HashMap<>();
163     map.put("key", l);
164     LOGJSONObject logJObject = new LOGJSONObject(map);
165
166     String s = "key";
167     assertThat(logJObject.getLong(s), is(5L));
168   }
169
170   @Test
171   public void Given_Method_Is_getNames_And_Value_Is_A_LOGJSONObject_Return_StringArray()
172       throws Exception {
173     LOGJSONObject logJObj = new LOGJSONObject();
174     logJObj.put("name", "stub_name");
175     String[] sArray = new String[logJObj.length()];
176     sArray[0] = "name";
177     Map<String, Object> map = new HashMap<>();
178     map.put("key", sArray);
179     LOGJSONObject logJObject = new LOGJSONObject(map);
180
181     String s = "key";
182     assertThat(logJObject.getNames(logJObj), is(sArray));
183   }
184
185   @Test
186   public void Given_Method_Is_GetString_And_Value_Is_A_String_Return_Value()
187       throws Exception {
188     String val = "value";
189     Map<String, Object> map = new HashMap<>();
190     map.put("key", val);
191     LOGJSONObject logJObject = new LOGJSONObject(map);
192
193     String s = "key";
194     assertThat(logJObject.getString(s), is("value"));
195   }
196
197   @Test
198   public void Given_Method_Is_Increment_And_Value_Is_Null_Put_Defualt_Value()
199       throws Exception {
200     Map<String, Object> mapResult = new HashMap<>();
201     mapResult.put("key", 1);
202     LOGJSONObject logJObjectResult = new LOGJSONObject(mapResult);
203
204     String val = null;
205     Map<String, Object> map = new HashMap<>();
206     map.put("key", val);
207     LOGJSONObject logJObject = new LOGJSONObject(map);
208
209     String s = "key";
210     logJObject.increment(s);
211     assertThat(logJObject.get("key"), is(logJObjectResult.get("key")));
212   }
213
214   @Test
215   public void Given_Method_Is_Increment_And_Value_Is_An_Int_Put_Value_Plus_One()
216       throws Exception {
217     Map<String, Object> mapResult = new HashMap<>();
218     mapResult.put("key", 3);
219     LOGJSONObject logJObjectResult = new LOGJSONObject(mapResult);
220
221     int val = 2;
222     Map<String, Object> map = new HashMap<>();
223     map.put("key", val);
224     LOGJSONObject logJObject = new LOGJSONObject(map);
225
226     String s = "key";
227     logJObject.increment(s);
228     assertThat(logJObject.get("key"), is(logJObjectResult.get("key")));
229   }
230
231   @Test
232   public void Given_Method_Is_Increment_And_Value_Is_A_Long_Put_Value_Plus_One()
233       throws Exception {
234     Map<String, Object> mapResult = new HashMap<>();
235     mapResult.put("key", 4L);
236     LOGJSONObject logJObjectResult = new LOGJSONObject(mapResult);
237
238     long val = 3;
239     Map<String, Object> map = new HashMap<>();
240     map.put("key", val);
241     LOGJSONObject logJObject = new LOGJSONObject(map);
242
243     String s = "key";
244     logJObject.increment(s);
245     assertThat(logJObject.get("key"), is(logJObjectResult.get("key")));
246   }
247
248   @Test
249   public void Given_Method_Is_Increment_And_Value_Is_A_Double_Put_Value_Plus_One()
250       throws Exception {
251     Map<String, Object> mapResult = new HashMap<>();
252     mapResult.put("key", 5.0);
253     LOGJSONObject logJObjectResult = new LOGJSONObject(mapResult);
254
255     double val = 4.0;
256     Map<String, Object> map = new HashMap<>();
257     map.put("key", val);
258     LOGJSONObject logJObject = new LOGJSONObject(map);
259
260     String s = "key";
261     logJObject.increment(s);
262     assertThat(logJObject.get("key"), is(logJObjectResult.get("key")));
263   }
264
265   @Test
266   public void Given_Method_Is_Increment_And_Value_Is_A_Float_Put_Value_Plus_One()
267       throws Exception {
268     Map<String, Object> mapResult = new HashMap<>();
269     mapResult.put("key", 5.0);
270     LOGJSONObject logJObjectResult = new LOGJSONObject(mapResult);
271
272     float val = 4.0f;
273     Map<String, Object> map = new HashMap<>();
274     map.put("key", val);
275     LOGJSONObject logJObject = new LOGJSONObject(map);
276
277     String s = "key";
278     logJObject.increment(s);
279     assertThat(logJObject.get("key"), is(logJObjectResult.get("key")));
280   }
281
282   @Test
283   public void Given_Method_Is_Names_And_Object_Contains_Keys_Put_Keys_Into_New_JSONArray()
284       throws Exception {
285     JSONArray ja = new JSONArray();
286     ja.put("key");
287
288     String val = "value";
289     Map<String, Object> map = new HashMap<>();
290     map.put("key", val);
291     LOGJSONObject logJObject = new LOGJSONObject(map);
292
293     String s = "key";
294     assertThat(logJObject.names().get(0), is(ja.get(0)));
295   }
296
297   @Test
298   public void Given_Method_Is_NumberToString_And_Number_is_Not_Null_Return_Reformatted_Number_As_String()
299       throws Exception {
300     Number num = 3.0;
301
302     String val = "value";
303     Map<String, Object> map = new HashMap<>();
304     map.put("key", val);
305     LOGJSONObject logJObject = new LOGJSONObject(map);
306
307     String s = "key";
308     assertThat(logJObject.numberToString(num), is("3"));
309   }
310
311   @Test
312   public void Given_Method_Is_OptBoolean_And_Value_is_Boolean_Return_Value()
313       throws Exception {
314     boolean val = true;
315     Map<String, Object> map = new HashMap<>();
316     map.put("key", val);
317     LOGJSONObject logJObject = new LOGJSONObject(map);
318
319     String s = "key";
320     assertThat(logJObject.optBoolean(s, false), is(true));
321   }
322
323   @Test
324   public void Given_Method_Is_OptBoolean_And_Value_is_Not_Boolean_Return_Default_Value()
325       throws Exception {
326     String val = "not_boolean";
327     Map<String, Object> map = new HashMap<>();
328     map.put("key", val);
329     LOGJSONObject logJObject = new LOGJSONObject(map);
330
331     String s = "key";
332     assertThat(logJObject.optBoolean(s, false), is(false));
333   }
334
335   @Test
336   public void Given_Method_Is_OptDouble_And_Value_is_Double_Return_Value()
337       throws Exception {
338     double val = 2.0;
339     Map<String, Object> map = new HashMap<>();
340     map.put("key", val);
341     LOGJSONObject logJObject = new LOGJSONObject(map);
342
343     String s = "key";
344     assertThat(logJObject.optDouble(s, 0.0), is(2.0));
345   }
346
347   @Test
348   public void Given_Method_Is_OptDouble_And_Value_is_Not_Double_Return_Default_Value()
349       throws Exception {
350     String val = "not_double";
351     Map<String, Object> map = new HashMap<>();
352     map.put("key", val);
353     LOGJSONObject logJObject = new LOGJSONObject(map);
354
355     String s = "key";
356     assertThat(logJObject.optDouble(s, 0.0), is(0.0));
357   }
358
359   @Test
360   public void Given_Method_Is_OptInt_And_Value_is_Int_Return_Value()
361       throws Exception {
362     int val = 1;
363     Map<String, Object> map = new HashMap<>();
364     map.put("key", val);
365     LOGJSONObject logJObject = new LOGJSONObject(map);
366
367     String s = "key";
368     assertThat(logJObject.optInt(s, 0), is(1));
369   }
370
371   @Test
372   public void Given_Method_Is_OptInt_And_Value_Is_Null_Return_Default_Value()
373       throws Exception {
374     Map<String, Object> map = new HashMap<>();
375     map.put("key", null);
376     LOGJSONObject logJObject = new LOGJSONObject(map);
377
378     String s = "key";
379     assertThat(logJObject.optInt(s, 0), is(0));
380   }
381
382   @Test
383   public void Given_Method_Is_OptLong_And_Value_is_Long_Return_Value()
384       throws Exception {
385     long val = 4;
386     Map<String, Object> map = new HashMap<>();
387     map.put("key", val);
388     LOGJSONObject logJObject = new LOGJSONObject(map);
389
390     String s = "key";
391     assertThat(logJObject.optLong(s, 0), is(4L));
392   }
393
394   @Test
395   public void Given_Method_Is_OptLong_And_Value_is_Not_Long_Return_Default_Value()
396       throws Exception {
397     Map<String, Object> map = new HashMap<>();
398     map.put("key", null);
399     LOGJSONObject logJObject = new LOGJSONObject(map);
400
401     String s = "key";
402     assertThat(logJObject.optLong(s, 0), is(0L));
403   }
404
405   @Test
406   public void Given_Method_Is_OptString_And_Value_is_String_Return_Value()
407       throws Exception {
408     String val = "value";
409     Map<String, Object> map = new HashMap<>();
410     map.put("key", val);
411     LOGJSONObject logJObject = new LOGJSONObject(map);
412
413     String s = "key";
414     assertThat(logJObject.optString(s, "default_value"), is("value"));
415   }
416
417   @Test
418   public void Given_Method_Is_putOnce_And_KeyValuePair_Does_Not_Exist_In_logJObject_Put_KeyValuePair_Into_logJObject()
419       throws Exception {
420     String val = "value";
421     Map<String, Object> map = new HashMap<>();
422     LOGJSONObject logJObject = new LOGJSONObject(map);
423
424     String s = "key";
425     assertThat(logJObject.putOnce(s, val).get("key"), is("value"));
426   }
427
428   @Test
429   public void Given_Method_Is_StringToValue_And_Value_Is_Number_Return_Number()
430       throws Exception {
431     String val = "312";
432     Map<String, Object> map = new HashMap<>();
433     LOGJSONObject logJObject = new LOGJSONObject(map);
434
435     assertThat(logJObject.stringToValue(val), is(312));
436   }
437
438   @Test
439   public void Given_Method_Is_ToJSONArray_And_KeyValue_Exists_Return_Value_Array()
440       throws Exception {
441     JSONArray names = new JSONArray();
442     Map<String, Object> map = new HashMap<>();
443     map.put("name", "value");
444     names.put("name");
445     LOGJSONObject logJObject = new LOGJSONObject(map);
446
447     assertThat(logJObject.toJSONArray(names).get(0), is("value"));
448   }
449
450   @Test
451   public void Given_Method_Is_ValueToString_And_Value_Is_JSONArray_Return_Value_To_String()
452       throws Exception {
453     JSONArray val = new JSONArray();
454     Map<String, Object> map = new HashMap<>();
455     map.put("key", "value");
456     val.put("value");
457     LOGJSONObject logJObject = new LOGJSONObject(map);
458
459     assertThat(logJObject.valueToString(val), is("[\"value\"]"));
460   }
461
462   @Test
463   public void Given_Method_Is_writeValue_And_Value_IS_Not_Null_Return_Writer_With_Value()
464       throws Exception {
465     Writer writer = new CharArrayWriter();
466     String val = "value";
467     Map<String, Object> map = new HashMap<>();
468     map.put("key", "value");
469     LOGJSONObject logJObject = new LOGJSONObject(map);
470
471     assertThat(logJObject.writeValue(writer, val, 3, 1).toString(), is("\"value\""));
472   }
473
474   @Test
475   public void Given_Method_Is_write_And_Length_Of_logJObject_Is_One_Write_Value_With_Indent()
476       throws Exception {
477     Writer writer = new CharArrayWriter();
478     String val = "value";
479     Map<String, Object> map = new HashMap<>();
480     map.put("key", "value");
481     LOGJSONObject logJObject = new LOGJSONObject(map);
482
483     assertThat(logJObject.write(writer, 3, 1).toString(), is("{\"key\": \"value\"}"));
484   }
485
486   @Test
487   public void Given_Method_Is_write_And_Length_Of_logJObject_Is_Not_One_Or_Zero_Write_Value_With_New_Indent()
488       throws Exception {
489     Writer writer = new CharArrayWriter();
490     String val = "value";
491     Map<String, Object> map = new HashMap<>();
492     map.put("key", "value");
493     map.put("key1", "value1");
494     LOGJSONObject logJObject = new LOGJSONObject(map);
495
496     assertThat(logJObject.write(writer, 3, 1).toString(), is("{\n    \"key1\": \"value1\",\n    \"key\": \"value\"\n }"));
497   }
498 }