diff --git a/src/testcases/org/apache/poi/POITestCase.java b/src/testcases/org/apache/poi/POITestCase.java index 8fa16c88a8..786c6e1124 100644 --- a/src/testcases/org/apache/poi/POITestCase.java +++ b/src/testcases/org/apache/poi/POITestCase.java @@ -32,13 +32,16 @@ import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Map; import org.apache.poi.util.SuppressForbidden; +import org.apache.poi.util.Internal; /** * Util class for POI JUnit TestCases, which provide additional features */ +@Internal public final class POITestCase { public static void assertContains(String haystack, String needle) { assertNotNull(haystack); @@ -47,6 +50,19 @@ public final class POITestCase { haystack.contains(needle) ); } + + public static void assertContainsIgnoreCase(String haystack, String needle, Locale locale) { + assertNotNull(haystack); + assertNotNull(needle); + String hay = haystack.toLowerCase(locale); + String n = needle.toLowerCase(locale); + assertTrue("Unable to find expected text '" + needle + "' in text:\n" + haystack, + hay.contains(n) + ); + } + public static void assertContainsIgnoreCase(String haystack, String needle) { + assertContainsIgnoreCase(haystack, needle, Locale.ROOT); + } public static void assertNotContained(String haystack, String needle) { assertNotNull(haystack); diff --git a/src/testcases/org/apache/poi/TestPOITestCase.java b/src/testcases/org/apache/poi/TestPOITestCase.java new file mode 100644 index 0000000000..fd9f3d1ad9 --- /dev/null +++ b/src/testcases/org/apache/poi/TestPOITestCase.java @@ -0,0 +1,126 @@ +/* ==================================================================== + 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.poi; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.Collections; +import java.util.Locale; +import java.util.Map; + +import org.apache.poi.POITestCase; +import org.junit.Ignore; +import org.junit.Test; + +/** + * A class for testing the POI Junit TestCase utility class + */ +public final class TestPOITestCase { + @Test + public void assertContains() { + POITestCase.assertContains("There is a needle in this haystack", "needle"); + /*try { + POITestCase.assertContains("There is gold in this haystack", "needle"); + fail("found a needle"); + } catch (final junit.framework.AssertionFailedError e) { + // expected + }*/ + } + + @Test + public void assertContainsIgnoreCase_Locale() { + POITestCase.assertContainsIgnoreCase("There is a Needle in this haystack", "needlE", Locale.ROOT); + // FIXME: test failing case + } + + @Test + public void assertContainsIgnoreCase() { + POITestCase.assertContainsIgnoreCase("There is a Needle in this haystack", "needlE"); + // FIXME: test failing case + } + + @Test + public void assertNotContained() { + POITestCase.assertNotContained("There is a needle in this haystack", "gold"); + // FIXME: test failing case + } + + @Test + public void assertMapContains() { + Map haystack = Collections.singletonMap("needle", "value"); + POITestCase.assertContains(haystack, "needle"); + // FIXME: test failing case + } + + + /** + * Utility method to get the value of a private/protected field. + * Only use this method in test cases!!! + */ + @Ignore + @Test + public void getFieldValue() { + /* + final Class clazz; + final T instance; + final Class fieldType; + final String fieldName; + + final R expected; + final R actual = POITestCase.getFieldValue(clazz, instance, fieldType, fieldName); + assertEquals(expected, actual); + */ + } + + /** + * Utility method to call a private/protected method. + * Only use this method in test cases!!! + */ + @Ignore + @Test + public void callMethod() { + /* + final Class clazz; + final T instance; + final Class returnType; + final String methodName; + final Class[] parameterTypes; + final Object[] parameters; + + final R expected; + final R actual = POITestCase.callMethod(clazz, instance, returnType, methodName, parameterTypes, parameters); + assertEquals(expected, actual); + */ + } + + /** + * Utility method to shallow compare all fields of the objects + * Only use this method in test cases!!! + */ + @Ignore + @Test + public void assertReflectEquals() throws Exception { + /* + final Object expected; + final Object actual; + POITestCase.assertReflectEquals(expected, actual); + */ + } +}