diff options
Diffstat (limited to 'utils/src/test/java/org/onap')
-rw-r--r-- | utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderObjectTest.java | 89 | ||||
-rw-r--r-- | utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java | 48 |
2 files changed, 137 insertions, 0 deletions
diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderObjectTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderObjectTest.java new file mode 100644 index 00000000..44086f30 --- /dev/null +++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderObjectTest.java @@ -0,0 +1,89 @@ +/* + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.common.utils.coder; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import org.junit.Before; +import org.junit.Test; + +public class StandardCoderObjectTest { + private static final Gson gson = new Gson(); + + private static final String PROP1 = "abc"; + private static final String PROP2 = "ghi"; + private static final String PROP2b = "jkl"; + private static final String VAL1 = "def"; + private static final String VAL2 = "mno"; + private static final String JSON = "{'abc':'def','ghi':{'jkl':'mno'}}".replace('\'', '"'); + + private StandardCoderObject sco; + + /** + * Creates a standard object, populated with some data. + * + * @throws Exception if an error occurs + */ + @Before + public void setUp() throws Exception { + sco = new StandardCoderObject(gson.fromJson(JSON, JsonElement.class)); + } + + @Test + public void testStandardCoderObject() { + assertNull(new StandardCoderObject().getData()); + } + + @Test + public void testStandardCoderObjectJsonElement() { + assertNotNull(sco.getData()); + assertEquals(JSON, gson.toJson(sco.getData())); + } + + @Test + public void testGetString() throws Exception { + // one field + assertEquals(VAL1, sco.getString(PROP1)); + + // multiple fields + assertEquals(VAL2, sco.getString(PROP2, PROP2b)); + + // not found + assertNull(sco.getString("xyz")); + + // read from null object + assertNull(new StandardCoderObject().getString()); + assertNull(new StandardCoderObject().getString(PROP1)); + + JsonElement obj = gson.fromJson("{'abc':[]}".replace('\'', '"'), JsonElement.class); + sco = new StandardCoderObject(obj); + + // not a primitive + assertNull(sco.getString(PROP1)); + + // not a JSON object + assertNull(sco.getString(PROP1, PROP2)); + } +} diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java index 25cce748..7583d776 100644 --- a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java +++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java @@ -22,6 +22,7 @@ package org.onap.policy.common.utils.coder; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; @@ -196,4 +197,51 @@ public class StandardCoderTest { assertThatThrownBy(() -> coder.decode(file, JsonElement.class)).isInstanceOf(CoderException.class) .hasCause(ioe); } + + @Test + public void testToStandard() throws Exception { + MyObject obj = new MyObject(); + obj.abc = "xyz"; + StandardCoderObject sco = coder.toStandard(obj); + assertNotNull(sco.getData()); + assertEquals("{'abc':'xyz'}".replace('\'', '"'), sco.getData().toString()); + + // class instead of object -> exception + assertThatThrownBy(() -> coder.toStandard(String.class)).isInstanceOf(CoderException.class); + } + + @Test + public void testFromStandard() throws Exception { + MyObject obj = new MyObject(); + obj.abc = "pdq"; + StandardCoderObject sco = coder.toStandard(obj); + + MyObject obj2 = coder.fromStandard(sco, MyObject.class); + assertEquals(obj.toString(), obj2.toString()); + + // null class -> exception + assertThatThrownBy(() -> coder.fromStandard(sco, null)).isInstanceOf(CoderException.class); + } + + @Test + public void testStandardTypeAdapter() throws Exception { + String json = "{'abc':'def'}".replace('\'', '"'); + StandardCoderObject sco = coder.fromJson(json, StandardCoderObject.class); + assertNotNull(sco.getData()); + assertEquals(json, sco.getData().toString()); + assertEquals(json, coder.toJson(sco)); + + // invalid json -> exception + assertThatThrownBy(() -> coder.fromJson(new StringReader("["), StandardCoderObject.class)); + } + + + private static class MyObject { + private String abc; + + @Override + public String toString() { + return "MyObject [abc=" + abc + "]"; + } + } } |