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]

Reply via email to