/******************************************************************************* * Copyright (c) 2015 Red Hat, Inc. Distributed under license by Red Hat, Inc. * All rights reserved. This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, and is * available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: Red Hat, Inc. ******************************************************************************/ package com.openshift.internal.util; import static org.junit.Assert.*; import static com.openshift.internal.util.JBossDmrExtentions.*; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jboss.dmr.ModelNode; import org.jboss.dmr.ModelType; import org.junit.Before; import org.junit.Test; /** * @author Jeff Cantrill */ public class JBossDmrExtentionsTest { private ModelNode node = ModelNode.fromJSONString("{\"foo\":\"bar\", \"int\":\"3\", \"bool\":\"true\", \"list\": [\"1\", \"2\", \"3\"]}"); private Map<String, String []> paths = new HashMap<String, String[]>(); private static final String KEY_FOO = "foo"; private static final String KEY_XYZ = "xyz"; private static final String KEY_BOOL = "bool"; private static final String KEY_INT = "int"; private static final String KEY_LIST = "list"; @Before public void setup() { paths.put(KEY_FOO, new String[] {"foo"}); paths.put(KEY_XYZ, new String[] {"xyz"}); paths.put(KEY_BOOL, new String[] {"bool"}); paths.put(KEY_INT, new String[] {"int"}); paths.put(KEY_LIST, new String[] {"list"}); } @Test public void testToJson() { ModelNode complex = new ModelNode(); complex.get("sub1", "sub2"); complex.get("sub1a").set("avalue"); ModelNode node = new ModelNode(); node.get("foo","bar"); node.get("xyz").add(1).add(2).add(3); node.get("xyz").get(1).clear(); node.get("xyz").add(complex); node.get("def").add(new ModelNode()); node.get("abc").set("xyx"); assertEquals("{\"foo\" : {}, \"xyz\" : [1,3,{\"sub1\" : {}, \"sub1a\" : \"avalue\"}], \"abc\" : \"xyx\"}", toJsonString(node, true)); } @Test public void testGettersDoNotAddNodeToJsonTree() { asMap(node, paths, "openshift.map"); assertFalse(node.has("openshift","map")); asSet(node, paths, "openshift.set", ModelType.STRING); assertFalse(node.has("openshift","set")); asInt(node, paths, "openshift.int"); assertFalse(node.has("openshift","int")); asString(node, paths, "openshift.string"); assertFalse(node.has("openshift","string")); asBoolean(node, paths, "openshift.bool"); assertFalse(node.has("openshift","bool")); asList(node, paths, "openshift.list", ModelType.STRING); assertFalse(node.has("openshift","set")); } @Test public void testAsMapWhenPropertyKeysAreNull() { assertNotNull(asMap(new ModelNode(), null, null)); } @Test public void asIntForUndefinedShouldReturnZero() { assertEquals(0, asInt(node, paths, KEY_XYZ)); } @Test public void asIntForAValueShouldReturnValue() { assertEquals(3,asInt(node, paths, KEY_INT)); } @Test public void asBooleanForUndefinedShouldReturnFalse() { assertFalse(asBoolean(node, paths, KEY_XYZ)); } @Test public void asBooleanForAValueShouldReturnValue() { assertTrue(asBoolean(node, paths, KEY_BOOL)); } @Test public void asStringForUndefinedShouldReturnEmptySpace() { assertEquals("", asString(node, paths, KEY_XYZ)); } @Test public void asStringForAValueShouldReturnTheValue() { assertEquals("bar", asString(node, paths, KEY_FOO)); } @Test public void asListForStringReturnsOrderedValues() { List<String> l = asList(node, paths, KEY_LIST, ModelType.STRING); assertEquals("1", l.get(0)); assertEquals("2", l.get(1)); assertEquals("3", l.get(2)); } }