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