#58597: Fix tests to not do setAccessible(), add some doPrivileged, too.

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1713891 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Uwe Schindler 2015-11-11 16:57:39 +00:00
parent da19b14670
commit 73a8488838
16 changed files with 200 additions and 225 deletions

View File

@ -38,7 +38,7 @@ public class RawDataBlock
private byte[] _data; private byte[] _data;
private boolean _eof; private boolean _eof;
private boolean _hasData; private boolean _hasData;
private static POILogger log = POILogFactory.getLogger(RawDataBlock.class); static POILogger log = POILogFactory.getLogger(RawDataBlock.class);
/** /**
* Constructor RawDataBlock * Constructor RawDataBlock

View File

@ -46,7 +46,7 @@ public final class POILogFactory {
* The name of the class to use. Initialised the * The name of the class to use. Initialised the
* first time we need it * first time we need it
*/ */
private static String _loggerClassName = null; static String _loggerClassName = null;
/** /**
* Construct a POILogFactory. * Construct a POILogFactory.

View File

@ -32,7 +32,6 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
@ -46,6 +45,7 @@ import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import org.apache.poi.EncryptedDocumentException; import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.POITestCase;
import org.apache.poi.POIXMLException; import org.apache.poi.POIXMLException;
import org.apache.poi.openxml4j.OpenXML4JTestDataSamples; import org.apache.poi.openxml4j.OpenXML4JTestDataSamples;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
@ -579,11 +579,8 @@ public final class TestPackage {
assertTrue(tempFile2.delete()); assertTrue(tempFile2.delete());
} }
private static ContentTypeManager getContentTypeManager(OPCPackage pkg) private static ContentTypeManager getContentTypeManager(OPCPackage pkg) {
throws IOException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { return POITestCase.getFieldValue(OPCPackage.class, pkg, ContentTypeManager.class, "contentTypeManager");
Field f = OPCPackage.class.getDeclaredField("contentTypeManager");
f.setAccessible(true);
return (ContentTypeManager)f.get(pkg);
} }
@Test @Test

View File

@ -34,7 +34,6 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.ConnectException; import java.net.ConnectException;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.MalformedURLException; import java.net.MalformedURLException;
@ -54,6 +53,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import org.apache.poi.POIDataSamples; import org.apache.poi.POIDataSamples;
import org.apache.poi.POITestCase;
import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess; import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.poifs.crypt.dsig.DigestInfo; import org.apache.poi.poifs.crypt.dsig.DigestInfo;
@ -247,9 +247,7 @@ public class TestSignatureInfo {
XSSFWorkbook wb = new XSSFWorkbook(pkg); XSSFWorkbook wb = new XSSFWorkbook(pkg);
wb.setSheetName(0, "manipulated"); wb.setSheetName(0, "manipulated");
// ... I don't know, why commit is protected ... // ... I don't know, why commit is protected ...
Method m = XSSFWorkbook.class.getDeclaredMethod("commit"); POITestCase.callMethod(XSSFWorkbook.class, wb, Void.class, "commit", new Class[0], new Object[0]);
m.setAccessible(true);
m.invoke(wb);
// todo: test a manipulation on a package part, which is not signed // todo: test a manipulation on a package part, which is not signed
// ... maybe in combination with #56164 // ... maybe in combination with #56164

View File

@ -20,12 +20,9 @@
package org.apache.poi.xslf.usermodel; package org.apache.poi.xslf.usermodel;
import java.io.File; import java.io.File;
import java.lang.reflect.Field;
import org.apache.poi.POIDataSamples; import org.apache.poi.POIDataSamples;
import org.apache.poi.xslf.util.PPTX2PNG; import org.apache.poi.xslf.util.PPTX2PNG;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
/** /**
@ -34,32 +31,6 @@ import org.junit.Test;
* @author Yegor Kozlov * @author Yegor Kozlov
*/ */
public class TestPPTX2PNG { public class TestPPTX2PNG {
private static boolean jaxpDebugEnable = false;
@BeforeClass
public static void activateJaxpDebug() {
jaxpDebugEnable = setDebugFld(true);
}
@AfterClass
public static void resetJaxpDebug() {
setDebugFld(jaxpDebugEnable);
}
private static boolean setDebugFld(boolean enable) {
// enable jaxp debugging because of jaxb/stax error in gump build
try {
Class<?> clz = Class.forName("javax.xml.stream.FactoryFinder");
Field fld = clz.getDeclaredField("debug");
fld.setAccessible(true);
boolean isDebug = (Boolean)fld.get(null);
fld.set(null, enable);
return isDebug;
} catch (Exception e) {
// ignore
return false;
}
}
@Test @Test
public void render() throws Exception { public void render() throws Exception {

View File

@ -28,8 +28,8 @@ import static org.junit.Assert.fail;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field;
import org.apache.poi.POITestCase;
import org.apache.poi.ss.usermodel.BaseTestWorkbook; import org.apache.poi.ss.usermodel.BaseTestWorkbook;
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Row;
@ -106,9 +106,7 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook {
@SuppressWarnings("resource") @SuppressWarnings("resource")
SXSSFWorkbook wb = new SXSSFWorkbook(null, 10, false, true); SXSSFWorkbook wb = new SXSSFWorkbook(null, 10, false, true);
Field f = SXSSFWorkbook.class.getDeclaredField("_sharedStringSource"); SharedStringsTable sss = POITestCase.getFieldValue(SXSSFWorkbook.class, wb, SharedStringsTable.class, "_sharedStringSource");
f.setAccessible(true);
SharedStringsTable sss = (SharedStringsTable)f.get(wb);
assertNotNull(sss); assertNotNull(sss);
@ -119,7 +117,7 @@ public final class TestSXSSFWorkbook extends BaseTestWorkbook {
row.createCell(2).setCellValue("A"); row.createCell(2).setCellValue("A");
XSSFWorkbook xssfWorkbook = (XSSFWorkbook) SXSSFITestDataProvider.instance.writeOutAndReadBack(wb); XSSFWorkbook xssfWorkbook = (XSSFWorkbook) SXSSFITestDataProvider.instance.writeOutAndReadBack(wb);
sss = (SharedStringsTable)f.get(wb); sss = POITestCase.getFieldValue(SXSSFWorkbook.class, wb, SharedStringsTable.class, "_sharedStringSource");
assertEquals(2, sss.getUniqueCount()); assertEquals(2, sss.getUniqueCount());
assertTrue(wb.dispose()); assertTrue(wb.dispose());

View File

@ -19,12 +19,18 @@ package org.apache.poi.hwpf.model;
import java.lang.reflect.AccessibleObject; import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Arrays; import java.util.Arrays;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.hwpf.HWPFDocFixture; import org.apache.poi.hwpf.HWPFDocFixture;
import org.apache.poi.hwpf.model.types.DOPAbstractType; import org.apache.poi.hwpf.model.types.DOPAbstractType;
import org.apache.poi.util.SuppressForbidden;
// TODO: Add DocumentProperties#equals ???
public final class TestDocumentProperties public final class TestDocumentProperties
extends TestCase extends TestCase
@ -43,9 +49,21 @@ public final class TestDocumentProperties
DocumentProperties newDocProperties = DocumentProperties newDocProperties =
new DocumentProperties(buf, 0, size); new DocumentProperties(buf, 0, size);
Field[] fields = DocumentProperties.class.getSuperclass().getDeclaredFields(); final Field[] fields;
AccessibleObject.setAccessible(fields, true); try {
fields = AccessController.doPrivileged(new PrivilegedExceptionAction<Field[]>() {
@Override
@SuppressForbidden("Test only")
public Field[] run() throws Exception {
final Field[] fields = DocumentProperties.class.getSuperclass().getDeclaredFields();
AccessibleObject.setAccessible(fields, true);
return fields;
}
});
} catch (PrivilegedActionException pae) {
throw pae.getException();
}
for (int x = 0; x < fields.length; x++) for (int x = 0; x < fields.length; x++)
{ {
// JaCoCo Code Coverage adds it's own field, don't look at this one here // JaCoCo Code Coverage adds it's own field, don't look at this one here

View File

@ -21,8 +21,15 @@ import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
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.Collection; import java.util.Collection;
import org.apache.poi.util.SuppressForbidden;
/** /**
* Parent class for POI JUnit TestCases, which provide additional * Parent class for POI JUnit TestCases, which provide additional
* features * features
@ -67,4 +74,45 @@ public class POITestCase {
} }
fail("Unable to find " + needle + " in " + haystack); fail("Unable to find " + needle + " in " + haystack);
} }
/** 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) {
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 AssertionError("Cannot access field '" + fieldName + "' of class " + clazz);
}
}
/** 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) {
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 AssertionError("Cannot access method '" + methodName + "' of class " + clazz);
}
}
} }

View File

@ -17,13 +17,13 @@
package org.apache.poi.hssf.record.aggregates; package org.apache.poi.hssf.record.aggregates;
import java.lang.reflect.Field;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import junit.framework.AssertionFailedError; import junit.framework.AssertionFailedError;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.POITestCase;
import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.SharedFormulaRecord; import org.apache.poi.hssf.record.SharedFormulaRecord;
@ -176,21 +176,7 @@ public final class TestSharedValueManager extends TestCase {
* {@link RowRecordsAggregate}. * {@link RowRecordsAggregate}.
*/ */
public static SharedValueManager extractFromRRA(RowRecordsAggregate rra) { public static SharedValueManager extractFromRRA(RowRecordsAggregate rra) {
Field f; return POITestCase.getFieldValue(RowRecordsAggregate.class, rra, SharedValueManager.class, "_sharedValueManager");
try {
f = RowRecordsAggregate.class.getDeclaredField("_sharedValueManager");
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
}
f.setAccessible(true);
try {
return (SharedValueManager) f.get(rra);
} catch (IllegalArgumentException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
} }
public void testBug52527() { public void testBug52527() {

View File

@ -23,6 +23,7 @@ import static org.junit.Assert.fail;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import org.apache.poi.POITestCase;
import org.apache.poi.hssf.HSSFITestDataProvider; import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.model.HSSFFormulaParser;
@ -45,21 +46,7 @@ public final class TestHSSFName extends BaseTestNamedRange {
* @return a reference to the wrapped {@link NameRecord} * @return a reference to the wrapped {@link NameRecord}
*/ */
public static NameRecord getNameRecord(HSSFName definedName) { public static NameRecord getNameRecord(HSSFName definedName) {
return POITestCase.getFieldValue(HSSFName.class, definedName, NameRecord.class, "_definedNameRec");
Field f;
try {
f = HSSFName.class.getDeclaredField("_definedNameRec");
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
}
f.setAccessible(true);
try {
return (NameRecord) f.get(definedName);
} catch (IllegalArgumentException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
} }
public TestHSSFName() { public TestHSSFName() {

View File

@ -18,6 +18,8 @@
package org.apache.poi.hssf.usermodel; package org.apache.poi.hssf.usermodel;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.POITestCase;
import org.apache.poi.ddf.EscherContainerRecord; import org.apache.poi.ddf.EscherContainerRecord;
import org.apache.poi.ddf.EscherSpgrRecord; import org.apache.poi.ddf.EscherSpgrRecord;
import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.HSSFTestDataSamples;
@ -228,17 +230,7 @@ public class TestShapeGroup extends TestCase{
} }
private static EscherSpgrRecord getSpgrRecord(HSSFShapeGroup group) { private static EscherSpgrRecord getSpgrRecord(HSSFShapeGroup group) {
Field spgrField = null; return POITestCase.getFieldValue(HSSFShapeGroup.class, group, EscherSpgrRecord.class, "_spgrRecord");
try {
spgrField = group.getClass().getDeclaredField("_spgrRecord");
spgrField.setAccessible(true);
return (EscherSpgrRecord) spgrField.get(group);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
} }
public void testClearShapes(){ public void testClearShapes(){

View File

@ -20,12 +20,12 @@ package org.apache.poi.poifs.storage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.Random; import java.util.Random;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.util.DummyPOILogger; import org.apache.poi.util.DummyPOILogger;
import org.apache.poi.util.POILogger;
/** /**
* Class to test RawDataBlock functionality * Class to test RawDataBlock functionality
@ -82,50 +82,53 @@ public final class TestRawDataBlock extends TestCase {
*/ */
public void testShortConstructor() throws Exception { public void testShortConstructor() throws Exception {
// Get the logger to be used // Get the logger to be used
POILogger oldLogger = RawDataBlock.log;
DummyPOILogger logger = new DummyPOILogger(); DummyPOILogger logger = new DummyPOILogger();
Field fld = RawDataBlock.class.getDeclaredField("log"); try {
fld.setAccessible(true); RawDataBlock.log = logger;
fld.set(null, logger); assertEquals(0, logger.logged.size());
assertEquals(0, logger.logged.size());
// Test for various data sizes
// Test for various data sizes for (int k = 1; k <= 512; k++)
for (int k = 1; k <= 512; k++) {
{ byte[] data = new byte[ k ];
byte[] data = new byte[ k ];
for (int j = 0; j < k; j++)
for (int j = 0; j < k; j++) {
{ data[ j ] = ( byte ) j;
data[ j ] = ( byte ) j; }
} RawDataBlock block = null;
RawDataBlock block = null;
logger.reset();
logger.reset(); assertEquals(0, logger.logged.size());
assertEquals(0, logger.logged.size());
// Have it created
// Have it created block = new RawDataBlock(new ByteArrayInputStream(data));
block = new RawDataBlock(new ByteArrayInputStream(data)); assertNotNull(block);
assertNotNull(block);
// Check for the warning is there for <512
// Check for the warning is there for <512 if(k < 512) {
if(k < 512) { assertEquals(
assertEquals( "Warning on " + k + " byte short block",
"Warning on " + k + " byte short block", 1, logger.logged.size()
1, logger.logged.size() );
);
// Build the expected warning message, and check
// Build the expected warning message, and check String bts = k + " byte";
String bts = k + " byte"; if(k > 1) {
if(k > 1) { bts += "s";
bts += "s"; }
}
assertEquals(
assertEquals( "7 - Unable to read entire block; "+bts+" read before EOF; expected 512 bytes. Your document was either written by software that ignores the spec, or has been truncated!",
"7 - Unable to read entire block; "+bts+" read before EOF; expected 512 bytes. Your document was either written by software that ignores the spec, or has been truncated!", logger.logged.get(0)
logger.logged.get(0) );
); } else {
} else { assertEquals(0, logger.logged.size());
assertEquals(0, logger.logged.size()); }
} }
} finally {
RawDataBlock.log = oldLogger;
} }
} }
@ -136,46 +139,49 @@ public final class TestRawDataBlock extends TestCase {
*/ */
public void testSlowInputStream() throws Exception { public void testSlowInputStream() throws Exception {
// Get the logger to be used // Get the logger to be used
DummyPOILogger logger = new DummyPOILogger(); POILogger oldLogger = RawDataBlock.log;
Field fld = RawDataBlock.class.getDeclaredField("log"); DummyPOILogger logger = new DummyPOILogger();
fld.setAccessible(true); try {
fld.set(null, logger); RawDataBlock.log = logger;
assertEquals(0, logger.logged.size()); assertEquals(0, logger.logged.size());
// Test for various ok data sizes // Test for various ok data sizes
for (int k = 1; k < 512; k++) { for (int k = 1; k < 512; k++) {
byte[] data = new byte[ 512 ]; byte[] data = new byte[ 512 ];
for (int j = 0; j < data.length; j++) { for (int j = 0; j < data.length; j++) {
data[j] = (byte) j; data[j] = (byte) j;
} }
// Shouldn't complain, as there is enough data, // Shouldn't complain, as there is enough data,
// even if it dribbles through // even if it dribbles through
RawDataBlock block = RawDataBlock block =
new RawDataBlock(new SlowInputStream(data, k)); new RawDataBlock(new SlowInputStream(data, k));
assertFalse(block.eof()); assertFalse(block.eof());
} }
// But if there wasn't enough data available, will // But if there wasn't enough data available, will
// complain // complain
for (int k = 1; k < 512; k++) { for (int k = 1; k < 512; k++) {
byte[] data = new byte[ 511 ]; byte[] data = new byte[ 511 ];
for (int j = 0; j < data.length; j++) { for (int j = 0; j < data.length; j++) {
data[j] = (byte) j; data[j] = (byte) j;
} }
logger.reset(); logger.reset();
assertEquals(0, logger.logged.size()); assertEquals(0, logger.logged.size());
// Should complain, as there isn't enough data // Should complain, as there isn't enough data
RawDataBlock block = RawDataBlock block =
new RawDataBlock(new SlowInputStream(data, k)); new RawDataBlock(new SlowInputStream(data, k));
assertNotNull(block); assertNotNull(block);
assertEquals( assertEquals(
"Warning on " + k + " byte short block", "Warning on " + k + " byte short block",
1, logger.logged.size() 1, logger.logged.size()
); );
} }
} finally {
RawDataBlock.log = oldLogger;
}
} }
/** /**

View File

@ -19,12 +19,11 @@ package org.apache.poi.poifs.storage;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field;
import junit.framework.TestCase; import junit.framework.TestCase;
import org.apache.poi.poifs.common.POIFSConstants; import org.apache.poi.poifs.common.POIFSConstants;
import org.apache.poi.util.DummyPOILogger; import org.apache.poi.util.DummyPOILogger;
import org.apache.poi.util.POILogger;
/** /**
* Class to test RawDataBlockList functionality * Class to test RawDataBlockList functionality
@ -57,26 +56,29 @@ public final class TestRawDataBlockList extends TestCase {
*/ */
public void testShortConstructor() throws Exception { public void testShortConstructor() throws Exception {
// Get the logger to be used // Get the logger to be used
POILogger oldLogger = RawDataBlock.log;
DummyPOILogger logger = new DummyPOILogger(); DummyPOILogger logger = new DummyPOILogger();
Field fld = RawDataBlock.class.getDeclaredField("log"); try {
fld.setAccessible(true); RawDataBlock.log = logger;
fld.set(null, logger); assertEquals(0, logger.logged.size());
assertEquals(0, logger.logged.size());
// Test for various short sizes
// Test for various short sizes for (int k = 2049; k < 2560; k++)
for (int k = 2049; k < 2560; k++)
{
byte[] data = new byte[ k ];
for (int j = 0; j < k; j++)
{ {
data[ j ] = ( byte ) j; byte[] data = new byte[ k ];
for (int j = 0; j < k; j++)
{
data[ j ] = ( byte ) j;
}
// Check we logged the error
logger.reset();
new RawDataBlockList(new ByteArrayInputStream(data), POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS);
assertEquals(1, logger.logged.size());
} }
} finally {
// Check we logged the error RawDataBlock.log = oldLogger;
logger.reset();
new RawDataBlockList(new ByteArrayInputStream(data), POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS);
assertEquals(1, logger.logged.size());
} }
} }
} }

View File

@ -947,15 +947,4 @@ public class TestMathX extends AbstractNumericTestCase {
d = 2d/3; s = 3.33; d = 2d/3; s = 3.33;
assertEquals("floor ", 0, MathX.floor(d, s)); assertEquals("floor ", 0, MathX.floor(d, s));
} }
public void testCoverage() throws Exception {
// get the default constructor
final Constructor<MathX> c = MathX.class.getDeclaredConstructor(new Class[] {});
// make it callable from the outside
c.setAccessible(true);
// call it
c.newInstance((Object[]) null);
}
} }

View File

@ -240,19 +240,6 @@ public class TestHexDump {
byteOut.close(); byteOut.close();
} }
@Test
public void testConstruct() throws Exception {
// to cover private constructor
// get the default constructor
final Constructor<HexDump> c = HexDump.class.getDeclaredConstructor(new Class[] {});
// make it callable from the outside
c.setAccessible(true);
// call it
assertNotNull(c.newInstance((Object[]) null));
}
@Test @Test
public void testMain() throws Exception { public void testMain() throws Exception {
File file = TempFile.createTempFile("HexDump", ".dat"); File file = TempFile.createTempFile("HexDump", ".dat");

View File

@ -22,8 +22,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import java.lang.reflect.Field;
import org.junit.Test; import org.junit.Test;
/** /**
@ -42,11 +40,9 @@ public final class TestPOILogger extends POILogger {
*/ */
@Test @Test
public void testVariousLogTypes() throws Exception { public void testVariousLogTypes() throws Exception {
Field f = POILogFactory.class.getDeclaredField("_loggerClassName"); String oldLCN = POILogFactory._loggerClassName;
f.setAccessible(true);
String oldLCN = (String)f.get(null);
try { try {
f.set(null, TestPOILogger.class.getName()); POILogFactory._loggerClassName = TestPOILogger.class.getName();
POILogger log = POILogFactory.getLogger( "foo" ); POILogger log = POILogFactory.getLogger( "foo" );
assertTrue(log instanceof TestPOILogger); assertTrue(log instanceof TestPOILogger);
@ -71,7 +67,7 @@ public final class TestPOILogger extends POILogger {
log.log(POILogger.ERROR, "log\nforging", "\nevil","\nlog"); log.log(POILogger.ERROR, "log\nforging", "\nevil","\nlog");
assertEquals("log forging evil log", tlog.lastLog); assertEquals("log forging evil log", tlog.lastLog);
} finally { } finally {
f.set(null, oldLCN); POILogFactory._loggerClassName = oldLCN;
} }
} }