Author: onealj Date: Mon Aug 15 07:27:03 2016 New Revision: 1756356 URL: http://svn.apache.org/viewvc?rev=1756356&view=rev Log: add (meta) unit test for POITestCase
Added: poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java - copied, changed from r1756350, poi/trunk/src/testcases/org/apache/poi/POITestCase.java Modified: poi/trunk/src/testcases/org/apache/poi/POITestCase.java Modified: poi/trunk/src/testcases/org/apache/poi/POITestCase.java URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/POITestCase.java?rev=1756356&r1=1756355&r2=1756356&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/POITestCase.java (original) +++ poi/trunk/src/testcases/org/apache/poi/POITestCase.java Mon Aug 15 07:27:03 2016 @@ -32,13 +32,16 @@ import java.security.PrivilegedActionExc 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); Copied: poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java (from r1756350, poi/trunk/src/testcases/org/apache/poi/POITestCase.java) URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java?p2=poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java&p1=poi/trunk/src/testcases/org/apache/poi/POITestCase.java&r1=1756350&r2=1756356&rev=1756356&view=diff ============================================================================== --- poi/trunk/src/testcases/org/apache/poi/POITestCase.java (original) +++ poi/trunk/src/testcases/org/apache/poi/TestPOITestCase.java Mon Aug 15 07:27:03 2016 @@ -17,145 +17,110 @@ package org.apache.poi; -import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import java.lang.reflect.AccessibleObject; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.security.AccessController; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; -import java.util.ArrayList; -import java.util.List; +import java.util.Collections; +import java.util.Locale; import java.util.Map; -import org.apache.poi.util.SuppressForbidden; +import org.apache.poi.POITestCase; +import org.junit.Ignore; +import org.junit.Test; /** - * Util class for POI JUnit TestCases, which provide additional features + * A class for testing the POI Junit TestCase utility class */ -public final class POITestCase { - public static void assertContains(String haystack, String needle) { - assertNotNull(haystack); - assertTrue( - "Unable to find expected text '" + needle + "' in text:\n" + haystack, - haystack.contains(needle) - ); - } - - public static void assertNotContained(String haystack, String needle) { - assertNotNull(haystack); - assertFalse( - "Unexpectedly found text '" + needle + "' in text:\n" + haystack, - haystack.contains(needle) - ); - } - - /** - * @param map haystack - * @param key needle - */ - public static <T> void assertContains(Map<T, ?> map, T key) { - if (map.containsKey(key)) { - return; - } - fail("Unable to find " + key + " in " + map); +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<String, String> 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!!! */ - public static <R,T> R getFieldValue(final Class<? super T> clazz, final T instance, final Class<R> fieldType, final String fieldName) { - assertTrue("Reflection of private fields is only allowed for POI classes.", clazz.getName().startsWith("org.apache.poi.")); - try { - return AccessController.doPrivileged(new PrivilegedExceptionAction<R>() { - @Override - @SuppressWarnings("unchecked") - @SuppressForbidden("For test usage only") - public R run() throws Exception { - Field f = clazz.getDeclaredField(fieldName); - f.setAccessible(true); - return (R) f.get(instance); - } - }); - } catch (PrivilegedActionException pae) { - throw new RuntimeException("Cannot access field '" + fieldName + "' of class " + clazz, pae.getException()); - } + @Ignore + @Test + public void getFieldValue() { + /* + final Class<? super T> clazz; + final T instance; + final Class<R> 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!!! */ - public static <R,T> R callMethod(final Class<? super T> clazz, final T instance, final Class<R> returnType, final String methodName, - final Class<?>[] parameterTypes, final Object[] parameters) { - assertTrue("Reflection of private methods is only allowed for POI classes.", clazz.getName().startsWith("org.apache.poi.")); - try { - return AccessController.doPrivileged(new PrivilegedExceptionAction<R>() { - @Override - @SuppressWarnings("unchecked") - @SuppressForbidden("For test usage only") - public R run() throws Exception { - Method m = clazz.getDeclaredMethod(methodName, parameterTypes); - m.setAccessible(true); - return (R) m.invoke(instance, parameters); - } - }); - } catch (PrivilegedActionException pae) { - throw new RuntimeException("Cannot access method '" + methodName + "' of class " + clazz, pae.getException()); - } + @Ignore + @Test + public void callMethod() { + /* + final Class<? super T> clazz; + final T instance; + final Class<R> 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!!! */ - public static void assertReflectEquals(final Object expected, Object actual) throws Exception { - final List<Field> fields; - try { - fields = AccessController.doPrivileged(new PrivilegedExceptionAction<List<Field>>() { - @Override - @SuppressForbidden("Test only") - public List<Field> run() throws Exception { - List<Field> flds = new ArrayList<Field>(); - for (Class<?> c = expected.getClass(); c != null; c = c.getSuperclass()) { - Field[] fs = c.getDeclaredFields(); - AccessibleObject.setAccessible(fs, true); - for (Field f : fs) { - // JaCoCo Code Coverage adds it's own field, don't look at this one here - if(f.getName().equals("$jacocoData")) { - continue; - } - - flds.add(f); - } - } - return flds; - } - }); - } catch (PrivilegedActionException pae) { - throw pae.getException(); - } - - for (Field f : fields) { - Class<?> t = f.getType(); - if (t.isArray()) { - if (Object[].class.isAssignableFrom(t)) { - assertArrayEquals((Object[])f.get(expected), (Object[])f.get(actual)); - } else if (byte[].class.isAssignableFrom(t)) { - assertArrayEquals((byte[])f.get(expected), (byte[])f.get(actual)); - } else { - fail("Array type is not yet implemented ... add it!"); - } - } else { - assertEquals(f.get(expected), f.get(actual)); - } - } + @Ignore + @Test + public void assertReflectEquals() throws Exception { + /* + final Object expected; + final Object actual; + POITestCase.assertReflectEquals(expected, actual); + */ } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org