/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.util; import org.mule.tck.junit4.AbstractMuleTestCase; import org.mule.tck.size.SmallTest; import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; @SmallTest public class SystemUtilsTestCase extends AbstractMuleTestCase { @Test public void testEnvironment() throws Exception { Map env = SystemUtils.getenv(); assertNotNull(env); assertFalse(env.isEmpty()); assertSame(env, SystemUtils.getenv()); String envVarToTest = "PATH"; if (SystemUtils.IS_OS_WINDOWS) { // Depending on the presence of Cygwin, it might be one or the other. if (env.get(envVarToTest) == null) { envVarToTest = "Path"; } } assertNotNull(env.get(envVarToTest)); } @Test public void testParsePropertyDefinitions() { Map expected = Collections.EMPTY_MAP; String input; assertEquals(expected, SystemUtils.parsePropertyDefinitions(null)); assertEquals(expected, SystemUtils.parsePropertyDefinitions("")); assertEquals(expected, SystemUtils.parsePropertyDefinitions(" ")); assertEquals(expected, SystemUtils.parsePropertyDefinitions("foo")); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-D")); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-D=")); expected = Collections.singletonMap("-D", "true"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-D-D")); expected = Collections.singletonMap("-D-D", "true"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-D-D-D")); expected = Collections.singletonMap("-D-D-D", "true"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-D-D-D-D")); assertEquals(Collections.EMPTY_MAP, SystemUtils.parsePropertyDefinitions("-D=noKey")); assertEquals(Collections.EMPTY_MAP, SystemUtils.parsePropertyDefinitions("=-D")); assertEquals(Collections.EMPTY_MAP, SystemUtils.parsePropertyDefinitions("foo =foo foo")); expected = Collections.singletonMap("k", "true"); assertEquals(expected, SystemUtils.parsePropertyDefinitions(" -Dk ")); expected = Collections.singletonMap("key", "true"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-Dkey")); expected = Collections.singletonMap("k", "v"); assertEquals(expected, SystemUtils.parsePropertyDefinitions(" -Dk=v ")); expected = Collections.singletonMap("key", "value"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-Dkey=value")); expected = Collections.singletonMap("key", "quoted"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-Dkey=\"quoted\"")); expected = MapUtils.mapWithKeysAndValues(HashMap.class, new String[] {"key", "foo"}, new String[] {"-Dvalue", "bar"}); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-Dkey=-Dvalue -Dfoo=bar")); assertEquals(Collections.EMPTY_MAP, SystemUtils.parsePropertyDefinitions("-D=-Dfoo-D== =foo")); expected = Collections.singletonMap("key", "split value"); assertEquals(expected, SystemUtils.parsePropertyDefinitions("-Dkey=\"split value\"")); expected = MapUtils.mapWithKeysAndValues(HashMap.class, new String[] {"key1", "key2"}, new String[] {"split one", "split two"}); input = "-Dkey1=\"split one\" -Dkey2=\"split two\" "; assertEquals(expected, SystemUtils.parsePropertyDefinitions(input)); expected = Collections.singletonMap("key", "open end"); input = "-Dkey=\"open end"; assertEquals(expected, SystemUtils.parsePropertyDefinitions(input)); expected = MapUtils.mapWithKeysAndValues(HashMap.class, new String[] {"keyOnly", "mule.foo", "mule.bar"}, new String[] {"true", "xfoo", "xbar"}); input = " standalone key=value -D -D= -DkeyOnly -D=noKey -Dmule.foo=xfoo -Dmule.bar=xbar "; assertEquals(expected, SystemUtils.parsePropertyDefinitions(input)); } }