blob: e0df37a227688bb13045313b475b359530d2c028 [file] [log] [blame]
/*
*
* Derby - Class org.apache.derbyTesting.functionTests.tests.i18n.JapanCodeConversionTest
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.derbyTesting.functionTests.tests.i18n;
import java.nio.charset.Charset;
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Statement;
import junit.framework.Test;
import org.apache.derbyTesting.junit.BaseJDBCTestCase;
import org.apache.derbyTesting.junit.BaseTestSuite;
import org.apache.derbyTesting.junit.JDBC;
import org.apache.derbyTesting.junit.SupportFilesSetup;
import org.apache.derbyTesting.junit.TestConfiguration;
/**
* Test that files encoded in EUC-JP and SJIS can be imported from and
* exported to.
*/
public class JapanCodeConversionTest extends BaseJDBCTestCase {
public JapanCodeConversionTest(String name) {
super(name);
}
public static Test suite() {
// This test requires support for specific encodings which are
// not guaranteed to be supported by all JVMs. Run the test only
// if the encodings are supported.
if (Charset.isSupported("EUC_JP") && Charset.isSupported("SJIS")) {
return new SupportFilesSetup(
TestConfiguration.embeddedSuite(JapanCodeConversionTest.class),
new String[] { "functionTests/tests/i18n/data/jap_EUC_JP.dat" },
(String[]) null);
}
return new BaseTestSuite(
"JapanCodeConversionTest - skipped because of " +
"missing support for EUC_JP and SJIS");
}
protected void tearDown() throws Exception {
dropTable("T1_EUC_JP");
dropTable("T1_EUC_JP_IMPORT_AS_EUC_JP");
dropTable("T1_EUC_JP_IMPORT_AS_SJIS");
super.tearDown();
}
/**
* The expected test data. Should match the rows in the jap_EUC_JP.dat
* file, from which we import data into the test tables.
*/
private static final String[][] TABLE = {
{"1", "15:32:06", "\u30a4\u30d9\u30f3\u30c8\u30a2\u30e9\u30fc\u30e0\u304c\u6709\u52b9\u3067\u3059\u3002"},
{"2", "15:32:10", "DR:DRAUTO\u306f0 (Off)\u3067\u3059\u3002"},
{"3", "15:32:28", "INFORMIX-OnLine\u304c\u521d\u671f\u5316\u3055\u308c\u3001\u30c7\u30a3\u30b9\u30af\u306e\u521d\u671f\u5316\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"},
{"4", "15:32:29", "\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f:\u7d99\u7d9a\u6642\u9593\u306f 0\u79d2\u3067\u3057\u305f"},
{"5", "15:32:29", "\u3059\u3079\u3066\u306eDB\u9818\u57df\u306e\u30c7\u30fc\u30bf\u30b9\u30ad\u30c3\u30d7\u306f\u73fe\u5728\u30aa\u30d5\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002"},
{"6", "15:32:30", "On-Line\u30e2\u30fc\u30c9"},
{"7", "15:32:31", "sysmaster\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u4f5c\u6210\u4e2d\u3067\u3059..."},
{"8", "15:33:22", "\u8ad6\u7406\u30ed\u30b0 1\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"},
{"9", "15:33:23", "\u30ea\u30bf\u30fc\u30f3\u30b3\u30fc\u30c9 1\u3092\u623b\u3057\u3066\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f:/bin/sh /bin/sh -c /work1/MOSES_7.22.UC1A5_27/sqldist/etc/log_full.sh 2 23 \u8ad6\u7406\u30ed\u30b0 1\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 \u8ad6\u7406"},
{"10", "15:33:40", "\u8ad6\u7406\u30ed\u30b0 2\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"},
{"11", "15:33:41", "\u30ea\u30bf\u30fc\u30f3\u30b3\u30fc\u30c9 1\u3092\u623b\u3057\u3066\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f:/bin/sh /bin/sh -c /work1/MOSES_7.22.UC1A5_27/sqldist/etc/log_full.sh 2 23 \u8ad6\u7406\u30ed\u30b0 2\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 \u8ad6\u7406"},
{"12", "15:33:43", "\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f:\u7d99\u7d9a\u6642\u9593\u306f 2\u79d2\u3067\u3057\u305f"},
{"13", "15:34:29", "\u8ad6\u7406\u30ed\u30b0 3\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"},
{"14", "15:34:30", "\u30ea\u30bf\u30fc\u30f3\u30b3\u30fc\u30c9 1\u3092\u623b\u3057\u3066\u30d7\u30ed\u30bb\u30b9\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f:/bin/sh /bin/sh -c /work1/MOSES_7.22.UC1A5_27/sqldist/etc/log_full.sh 2 23 \u8ad6\u7406\u30ed\u30b0 3\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 \u8ad6\u7406"},
{"15", "15:35:35", "sysmaster\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u4f5c\u6210\u306f\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002"},
{"16", "15:39:10", "\u30c1\u30a7\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f:\u7d99\u7d9a\u6642\u9593\u306f 8\u79d2\u3067\u3057\u305f"},
};
/**
* Import data from the EUC-JP-encoded file jap_EUC_JP.dat, and verify
* that the data is as expected. Then export the data to files encoded
* in EUC-JP and SJIS, and verify that these files can be imported from.
*/
public void testImportExport() throws SQLException {
CallableStatement imp = prepareCall(
"call SYSCS_UTIL.SYSCS_IMPORT_TABLE(null, ?, ?, null, null, ?, 0)");
CallableStatement exp = prepareCall(
"call SYSCS_UTIL.SYSCS_EXPORT_TABLE(null, ?, ?, null, null, ?)");
Statement s = createStatement();
// table for data in EUC_JP encoding
s.execute("create table T1_EUC_JP"
+ "(jnum int, jtime time, jstring char(200))");
// import data in EUC_JP encoding
imp.setString(1, "T1_EUC_JP");
imp.setString(2, "extin/jap_EUC_JP.dat");
imp.setString(3, "EUC_JP");
assertUpdateCount(imp, 0);
// verify imported data
JDBC.assertFullResultSet(
s.executeQuery("SELECT * FROM T1_EUC_JP ORDER BY jnum"),
TABLE);
// export to file with EUC_JP encoding
exp.setString(1, "T1_EUC_JP");
exp.setString(2, "extout/jap_EUC_JP.dump");
exp.setString(3, "EUC_JP");
assertUpdateCount(exp, 0);
// export to file with SJIS encoding
exp.setString(1, "T1_EUC_JP");
exp.setString(2, "extout/jap_SJIS.dump");
exp.setString(3, "SJIS");
assertUpdateCount(exp, 0);
// import as EUC_JP and compare to original
s.execute("create table T1_EUC_JP_IMPORT_AS_EUC_JP"
+ "(jnum int, jtime time, jstring char(200))");
imp.setString(1, "T1_EUC_JP_IMPORT_AS_EUC_JP");
imp.setString(2, "extout/jap_EUC_JP.dump");
imp.setString(3, "EUC_JP");
assertUpdateCount(imp, 0);
// verify imported data
JDBC.assertFullResultSet(
s.executeQuery(
"SELECT * FROM T1_EUC_JP_IMPORT_AS_EUC_JP ORDER BY jnum"),
TABLE);
// import as SJIS and compare to original
s.execute("create table T1_EUC_JP_IMPORT_AS_SJIS"
+ "(jnum int, jtime time, jstring char(200))");
imp.setString(1, "T1_EUC_JP_IMPORT_AS_SJIS");
imp.setString(2, "extout/jap_SJIS.dump");
imp.setString(3, "SJIS");
assertUpdateCount(imp, 0);
// verify imported data
JDBC.assertFullResultSet(
s.executeQuery(
"SELECT * FROM T1_EUC_JP_IMPORT_AS_SJIS ORDER BY jnum"),
TABLE);
}
}