carnold 2005/05/09 13:32:22
Modified: tests build.xml
Added: tests/src/java/org/apache/log4j EncodingTest.java
tests/src/java/org/apache/log4j/util BinaryCompare.java
tests/witness/encoding UTF-16.log UTF-16BE.log UTF-16LE.log
UTF-8.log ascii.log latin1.log
Log:
Bug 34825: Added tests of Writer.setEncoding
Revision Changes Path
1.102 +11 -1 logging-log4j/tests/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/logging-log4j/tests/build.xml,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -r1.101 -r1.102
--- build.xml 25 Feb 2005 13:46:02 -0000 1.101
+++ build.xml 9 May 2005 20:32:22 -0000 1.102
@@ -151,6 +151,7 @@
</target>
<target name="cleanOutputDir">
+ <mkdir dir="output"/>
<delete>
<fileset dir="./output/" includes="**"/>
</delete>
@@ -192,7 +193,8 @@
NDC,
Plugins,
CachedDateFormat,
- Schema
+ Schema,
+ Encoding
"/>
@@ -714,6 +716,14 @@
</junit>
</target>
+ <target name="Encoding" depends="check, build, cleanOutputDir">
+ <junit printsummary="yes" fork="yes" haltonfailure="yes">
+ <classpath refid="tests.classpath"/>
+ <formatter type="plain" usefile="false"/>
+ <test name="org.apache.log4j.EncodingTest" />
+ </junit>
+ </target>
+
<!-- ================================================================= -->
<!-- ========================= long Tests ========================= -->
1.1
logging-log4j/tests/src/java/org/apache/log4j/EncodingTest.java
Index: EncodingTest.java
===================================================================
/*
* Copyright 1999,2005 The Apache Software Foundation.
*
* Licensed 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.log4j;
import junit.framework.TestCase;
import org.apache.log4j.util.BinaryCompare;
/**
* Tests support for encoding specification.
* @author Curt Arnold
* @since 1.3
*/
public class EncodingTest extends TestCase {
/**
* Construct an instance of EncodingTest.
* @param name test name
*/
public EncodingTest(final String name) {
super(name);
}
/**
* Resets configuration after each test.
*/
public void tearDown() {
Logger.getRootLogger().getLoggerRepository().resetConfiguration();
}
/**
* Test us-ascii encoding.
* @throws Exception if test failure
*/
public void testASCII() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/ascii.log", "US-ASCII");
common(root);
assertTrue(BinaryCompare.compare("output/ascii.log",
"witness/encoding/ascii.log"));
}
/**
* Test iso-8859-1 encoding.
* @throws Exception if test failure
*/
public void testLatin1() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/latin1.log", "iso-8859-1");
common(root);
assertTrue(BinaryCompare.compare("output/latin1.log",
"witness/encoding/latin1.log"));
}
/**
* Test utf-8 encoding.
* @throws Exception if test failure.
*/
public void testUtf8() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-8.log", "UTF-8");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-8.log",
"witness/encoding/UTF-8.log"));
}
/**
* Test utf-16 encoding.
* @throws Exception if test failure.
*/
public void testUtf16() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-16.log", "UTF-16");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-16.log",
"witness/encoding/UTF-16.log"));
}
/**
* Test utf-16be encoding.
* @throws Exception if test failure.
*/
public void testUtf16BE() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-16BE.log", "UTF-16BE");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-16BE.log",
"witness/encoding/UTF-16BE.log"));
}
/**
* Test utf16-le encoding.
* @throws Exception if test failure.
*/
public void testUtf16LE() throws Exception {
Logger root = Logger.getRootLogger();
configure(root, "output/UTF-16LE.log", "UTF-16LE");
common(root);
assertTrue(BinaryCompare.compare("output/UTF-16LE.log",
"witness/encoding/UTF-16LE.log"));
}
/**
* Configure logging.
* @param logger logger
* @param filename logging file name
* @param encoding encoding
*/
private void configure(final Logger logger, final String filename,
final String encoding) {
PatternLayout layout = new PatternLayout();
layout.setConversionPattern("%p - %m\\n");
layout.activateOptions();
FileAppender appender = new FileAppender();
appender.setFile(filename);
appender.setEncoding(encoding);
appender.setAppend(false);
appender.setLayout(layout);
appender.activateOptions();
logger.addAppender(appender);
logger.setLevel(Level.INFO);
}
/**
* Common logging requests.
* @param logger logger
*/
private void common(final Logger logger) {
logger.info("Hello, World");
// pi can be encoded in iso-8859-1
logger.info("\u00b9");
// one each from Latin, Arabic, Armenian, Bengali, CJK and Cyrillic
logger.info("A\u0605\u0530\u0986\u4E03\u0400");
}
}
1.1
logging-log4j/tests/src/java/org/apache/log4j/util/BinaryCompare.java
Index: BinaryCompare.java
===================================================================
/*
* Copyright 1999,2005 The Apache Software Foundation.
*
* Licensed 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.log4j.util;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public final class BinaryCompare {
/**
* Class can not be constructed.
*/
private BinaryCompare() {
}
public static boolean compare(final String file1, final String file2)
throws FileNotFoundException, IOException {
BufferedInputStream in1 = new BufferedInputStream(new FileInputStream(
file1));
BufferedInputStream in2 = new BufferedInputStream(new FileInputStream(
file2));
int byte1 = 0;
int byte2 = 0;
for (int pos = 0; byte1 != -1; pos++) {
byte1 = in1.read();
byte2 = in2.read();
if (byte1 != byte2) {
if (byte2 == -1) {
System.out.println("File [" + file2 +
"] longer than file [" + file1 + "].");
} else if (byte1 == -1) {
System.out.println("File [" + file1 +
"] longer than file [" + file2 + "].");
} else {
System.out.println("Files differ at offset " + pos + ":
[" +
file1 + "] has " + Integer.toHexString(byte1) + ", ["
+
file2 + "] has " + Integer.toHexString(byte2) + ".");
}
return false;
}
}
return true;
}
}
1.1 logging-log4j/tests/witness/encoding/UTF-16.log
<<Binary file>>
1.1 logging-log4j/tests/witness/encoding/UTF-16BE.log
<<Binary file>>
1.1 logging-log4j/tests/witness/encoding/UTF-16LE.log
<<Binary file>>
1.1 logging-log4j/tests/witness/encoding/UTF-8.log
Index: UTF-8.log
===================================================================
INFO - Hello, World
INFO - ¹
INFO - Aআ七Ѐ
1.1 logging-log4j/tests/witness/encoding/ascii.log
Index: ascii.log
===================================================================
INFO - Hello, World
INFO - ?
INFO - A?????
1.1 logging-log4j/tests/witness/encoding/latin1.log
Index: latin1.log
===================================================================
INFO - Hello, World
INFO - �
INFO - A?????
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]