Add unit tests for property sources and utilities
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/44254d2e Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/44254d2e Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/44254d2e Branch: refs/heads/LOG4J2-1431 Commit: 44254d2edcd91cdfcb6fd1e92dde2cabb00057dc Parents: fd39ef4 Author: Matt Sicker <[email protected]> Authored: Sun Feb 5 15:30:48 2017 -0600 Committer: Matt Sicker <[email protected]> Committed: Sat Aug 26 15:50:56 2017 -0500 ---------------------------------------------------------------------- .../util/EnvironmentPropertySourceTest.java | 58 ++++++++++++++++ .../util/PropertiesPropertySourceTest.java | 59 +++++++++++++++++ .../log4j/util/PropertySourceCamelCaseTest.java | 57 ++++++++++++++++ .../log4j/util/PropertySourceTokenizerTest.java | 69 ++++++++++++++++++++ 4 files changed, 243 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/44254d2e/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceTest.java new file mode 100644 index 0000000..3beea89 --- /dev/null +++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/EnvironmentPropertySourceTest.java @@ -0,0 +1,58 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ +package org.apache.logging.log4j.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import static org.junit.Assert.assertEquals; + +/** + * + */ +@RunWith(Parameterized.class) +public class EnvironmentPropertySourceTest { + + private final PropertySource source = new EnvironmentPropertySource(); + private final CharSequence expected; + private final List<? extends CharSequence> tokens; + + public EnvironmentPropertySourceTest(final CharSequence expected, final List<? extends CharSequence> tokens) { + this.expected = expected; + this.tokens = tokens; + } + + @Parameterized.Parameters(name = "{0}") + public static Object[][] data() { + return new Object[][]{ + {"LOG4J_CONFIGURATION_FILE", Arrays.asList("configuration", "file")}, + {"LOG4J_FOO_BAR_PROPERTY", Arrays.asList("foo", "bar", "property")}, + {"LOG4J_EXACT", Collections.singletonList("EXACT")}, + {"LOG4J_TEST_PROPERTY_NAME", PropertySource.Util.tokenize("Log4jTestPropertyName")}, + }; + } + + @Test + public void testNormalFormFollowsEnvironmentVariableConventions() throws Exception { + assertEquals(expected, source.getNormalForm(tokens)); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/44254d2e/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesPropertySourceTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesPropertySourceTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesPropertySourceTest.java new file mode 100644 index 0000000..2f07972 --- /dev/null +++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertiesPropertySourceTest.java @@ -0,0 +1,59 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ +package org.apache.logging.log4j.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Properties; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import static org.junit.Assert.assertEquals; + +/** + * + */ +@RunWith(Parameterized.class) +public class PropertiesPropertySourceTest { + + private final PropertySource source = new PropertiesPropertySource(new Properties()); + private final CharSequence expected; + private final List<? extends CharSequence> tokens; + + public PropertiesPropertySourceTest(final String expected, final List<CharSequence> tokens) { + this.expected = expected; + this.tokens = tokens; + } + + @Parameterized.Parameters(name = "{0}") + public static Object[][] data() { + return new Object[][]{ + {"log4j2.configurationFile", Arrays.asList("configuration", "file")}, + {"log4j2.fooBarProperty", Arrays.asList("foo", "bar", "property")}, + {"log4j2.EXACT", Collections.singletonList("EXACT")}, + {"log4j2.testPropertyName", PropertySource.Util.tokenize("Log4jTestPropertyName")}, + }; + } + + @Test + public void testNormalFormFollowsCamelCaseConventions() throws Exception { + assertEquals(expected, source.getNormalForm(tokens)); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/44254d2e/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceCamelCaseTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceCamelCaseTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceCamelCaseTest.java new file mode 100644 index 0000000..c746199 --- /dev/null +++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceCamelCaseTest.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ +package org.apache.logging.log4j.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import static org.junit.Assert.assertEquals; + +/** + * + */ +@RunWith(Parameterized.class) +public class PropertySourceCamelCaseTest { + + private final CharSequence expected; + private final List<String> tokens; + + public PropertySourceCamelCaseTest(final CharSequence expected, final List<String> tokens) { + this.expected = expected; + this.tokens = tokens; + } + + @Parameterized.Parameters(name = "{0}") + public static Object[][] data() { + return new Object[][]{ + {"", Collections.singletonList("")}, + {"foo", Collections.singletonList("foo")}, + {"fooBar", Arrays.asList("foo", "bar")}, + {"oneTwoThree", Arrays.asList("one", "two", "three")}, + }; + } + + @Test + public void testJoinAsCamelCase() throws Exception { + assertEquals(expected, PropertySource.Util.joinAsCamelCase(tokens)); + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/44254d2e/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceTokenizerTest.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceTokenizerTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceTokenizerTest.java new file mode 100644 index 0000000..3b25af7 --- /dev/null +++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/PropertySourceTokenizerTest.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ +package org.apache.logging.log4j.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +import static org.junit.Assert.assertEquals; + +/** + * + */ +@RunWith(Parameterized.class) +public class PropertySourceTokenizerTest { + + private final CharSequence value; + private final List<CharSequence> expectedTokens; + + public PropertySourceTokenizerTest(final CharSequence value, final List<CharSequence> expectedTokens) { + this.value = value; + this.expectedTokens = expectedTokens; + } + + @Parameterized.Parameters(name = "{0}") + public static Object[][] data() { + return new Object[][]{ + {"log4j.simple", Collections.singletonList("simple")}, + {"log4j_simple", Collections.singletonList("simple")}, + {"log4j-simple", Collections.singletonList("simple")}, + {"log4j/simple", Collections.singletonList("simple")}, + {"log4j2.simple", Collections.singletonList("simple")}, + {"Log4jSimple", Collections.singletonList("simple")}, + {"LOG4J_simple", Collections.singletonList("simple")}, + {"org.apache.logging.log4j.simple", Collections.singletonList("simple")}, + {"log4j.simpleProperty", Arrays.asList("simple", "property")}, + {"log4j.simple_property", Arrays.asList("simple", "property")}, + {"LOG4J_simple_property", Arrays.asList("simple", "property")}, + {"LOG4J_SIMPLE_PROPERTY", Arrays.asList("simple", "property")}, + {"log4j2-dashed-propertyName", Arrays.asList("dashed", "property", "name")}, + {"Log4jProperty_with.all-the/separators", Arrays.asList("property", "with", "all", "the", "separators")}, + {"org.apache.logging.log4j.config.property", Arrays.asList("config", "property")}, + }; + } + + @Test + public void testTokenize() throws Exception { + List<CharSequence> tokens = PropertySource.Util.tokenize(value); + assertEquals(expectedTokens, tokens); + } +} \ No newline at end of file
