With this patch some testcases are skipped if the default character set is not 8-bit-capable. Typically this is US-ASCII. The testcase issues a message telling what you can do to run the test.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353601 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
47d6d559c9
commit
6bfe3dc2b9
@ -29,6 +29,7 @@ import java.io.OutputStream;
|
|||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.nio.charset.Charset;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -83,6 +84,14 @@ public class TestWrite extends TestCase
|
|||||||
static final boolean[] IS_SUMMARY_INFORMATION = {true, false};
|
static final boolean[] IS_SUMMARY_INFORMATION = {true, false};
|
||||||
static final boolean[] IS_DOCUMENT_SUMMARY_INFORMATION = {false, true};
|
static final boolean[] IS_DOCUMENT_SUMMARY_INFORMATION = {false, true};
|
||||||
|
|
||||||
|
final String IMPROPER_DEFAULT_CHARSET_MESSAGE =
|
||||||
|
"Your default character set is " + getDefaultCharsetName() +
|
||||||
|
". However, this testcase must be run in an environment " +
|
||||||
|
"with a default character set supporting at least " +
|
||||||
|
"8-bit-characters. You can achieve this by setting the " +
|
||||||
|
"LANG environment variable to a proper value, e.g. " +
|
||||||
|
"\"de_DE\".";
|
||||||
|
|
||||||
POIFile[] poiFiles;
|
POIFile[] poiFiles;
|
||||||
|
|
||||||
|
|
||||||
@ -379,6 +388,13 @@ public class TestWrite extends TestCase
|
|||||||
{
|
{
|
||||||
Throwable t = null;
|
Throwable t = null;
|
||||||
final int codepage = CODEPAGE_DEFAULT;
|
final int codepage = CODEPAGE_DEFAULT;
|
||||||
|
if (!hasProperDefaultCharset())
|
||||||
|
{
|
||||||
|
System.err.println(IMPROPER_DEFAULT_CHARSET_MESSAGE +
|
||||||
|
" This testcase is skipped.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
check(Variant.VT_EMPTY, null, codepage);
|
check(Variant.VT_EMPTY, null, codepage);
|
||||||
@ -395,6 +411,7 @@ public class TestWrite extends TestCase
|
|||||||
check(Variant.VT_I2, new Integer(27), codepage);
|
check(Variant.VT_I2, new Integer(27), codepage);
|
||||||
check(Variant.VT_I4, new Long(28), codepage);
|
check(Variant.VT_I4, new Long(28), codepage);
|
||||||
check(Variant.VT_FILETIME, new Date(), codepage);
|
check(Variant.VT_FILETIME, new Date(), codepage);
|
||||||
|
|
||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
"", codepage);
|
"", codepage);
|
||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
@ -404,13 +421,14 @@ public class TestWrite extends TestCase
|
|||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
"\u00e4\u00f6\u00fc", codepage);
|
"\u00e4\u00f6\u00fc", codepage);
|
||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4", codepage);
|
"\u00e4\u00f6\u00fc\u00df", codepage);
|
||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4\u00d6", codepage);
|
"\u00e4\u00f6\u00fc\u00df\u00c4", codepage);
|
||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc", codepage);
|
"\u00e4\u00f6\u00fc\u00df\u00c4\u00d6", codepage);
|
||||||
check(Variant.VT_LPSTR,
|
check(Variant.VT_LPSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df", codepage);
|
"\u00e4\u00f6\u00fc\u00df\u00c4\u00d6\u00dc", codepage);
|
||||||
|
|
||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
"", codepage);
|
"", codepage);
|
||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
@ -420,13 +438,13 @@ public class TestWrite extends TestCase
|
|||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
"\u00e4\u00f6\u00fc", codepage);
|
"\u00e4\u00f6\u00fc", codepage);
|
||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4", codepage);
|
"\u00e4\u00f6\u00fc\u00df", codepage);
|
||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4\u00d6", codepage);
|
"\u00e4\u00f6\u00fc\u00df\u00c4", codepage);
|
||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc", codepage);
|
"\u00e4\u00f6\u00fc\u00df\u00c4\u00d6", codepage);
|
||||||
check(Variant.VT_LPWSTR,
|
check(Variant.VT_LPWSTR,
|
||||||
"\u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df", codepage);
|
"\u00e4\u00f6\u00fc\u00df\u00c4\u00d6\u00dc", codepage);
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@ -455,6 +473,13 @@ public class TestWrite extends TestCase
|
|||||||
for (int i = 0; i < validCodepages.length; i++)
|
for (int i = 0; i < validCodepages.length; i++)
|
||||||
{
|
{
|
||||||
final int cp = validCodepages[i];
|
final int cp = validCodepages[i];
|
||||||
|
if (cp == -1 && !hasProperDefaultCharset())
|
||||||
|
{
|
||||||
|
System.err.println(IMPROPER_DEFAULT_CHARSET_MESSAGE +
|
||||||
|
" This testcase is skipped for the default codepage.");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
final long t = cp == CODEPAGE_UTF16 ? Variant.VT_LPWSTR
|
final long t = cp == CODEPAGE_UTF16 ? Variant.VT_LPWSTR
|
||||||
: Variant.VT_LPSTR;
|
: Variant.VT_LPSTR;
|
||||||
try
|
try
|
||||||
@ -599,8 +624,12 @@ public class TestWrite extends TestCase
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (value != null && !value.equals(objRead))
|
if (value != null && !value.equals(objRead))
|
||||||
|
{
|
||||||
fail("Expected: \"" + value + "\" but was: \"" + objRead +
|
fail("Expected: \"" + value + "\" but was: \"" + objRead +
|
||||||
"\". Codepage: " + codepage + ".");
|
"\". Codepage: " + codepage +
|
||||||
|
(codepage == -1 ?
|
||||||
|
" (" + System.getProperty("file.encoding") + ")." : "."));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
assertEquals(value, objRead);
|
assertEquals(value, objRead);
|
||||||
}
|
}
|
||||||
@ -854,6 +883,35 @@ public class TestWrite extends TestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>Returns the display name of the default character set.</p>
|
||||||
|
*
|
||||||
|
* @return the display name of the default character set.
|
||||||
|
*/
|
||||||
|
private String getDefaultCharsetName()
|
||||||
|
{
|
||||||
|
final String charSetName = System.getProperty("file.encoding");
|
||||||
|
final Charset charSet = Charset.forName(charSetName);
|
||||||
|
return charSet.displayName();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <p>In order to execute tests with characters beyond US-ASCII, this
|
||||||
|
* method checks whether the application has is runing in an environment
|
||||||
|
* where the default character set is 16-bit-capable.</p>
|
||||||
|
*/
|
||||||
|
private boolean hasProperDefaultCharset()
|
||||||
|
{
|
||||||
|
final String charSetName = System.getProperty("file.encoding");
|
||||||
|
final Charset charSet = Charset.forName(charSetName);
|
||||||
|
return charSet.newEncoder().canEncode('\u00e4');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Runs the test cases stand-alone.</p>
|
* <p>Runs the test cases stand-alone.</p>
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user