blob: f2afb84e1e48239ec42eded81bdfd2635c989969 [file] [log] [blame]
/*
*
* Derby - Class org.apache.derbyTesting.functionTests.tests.i18n.LocalizedDisplayScriptTest
*
* 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.util.Properties;
import junit.framework.Test;
import org.apache.derbyTesting.functionTests.util.ScriptTestCase;
import org.apache.derbyTesting.junit.BaseTestSuite;
import org.apache.derbyTesting.junit.JDBC;
import org.apache.derbyTesting.junit.SystemPropertyTestSetup;
import org.apache.derbyTesting.junit.TestConfiguration;
import org.apache.derbyTesting.junit.TimeZoneTestSetup;
/**
* LocalizedDisplayScriptTest runs the ij script LocalizedDisplay.sql
* and compares the output to a canon file in the standard master package.
* <BR>
* Its suite() method returns a set of tests where each test is an instance of
* this class for an individual script wrapped in a clean database decorator.
* <BR>
* It can also be used as a command line program
*
*/
public final class LocalizedDisplayScriptTest extends ScriptTestCase {
/** The character encoding used in the script. */
private static final String ENCODING = "EUC_JP";
/**
* Run LocalizedDisplay.sql
* <code>
* example
* java org.apache.derbyTesting.functionTests.tests.i18n.LocalizedSuite
* </code>
*/
public static void main(String[] args)
{
junit.textui.TestRunner.run(getSuite());
}
/**
* Return the suite that runs the Localized script.
*/
public static Test suite() {
BaseTestSuite suite = new BaseTestSuite("LocalizedDisplay");
// This test will fail with JSR169, because lack of support for
// rs.getBigDecimal() will prevent the localization of numeric and
// decimal datatypes, and this test includes a decimal datatype
// (See DERBY-470).
if (JDBC.vmSupportsJSR169())
return suite;
// DERBY-5678: This test uses EUC_JP encoding. Implementations of the
// Java platform are not required to support that encoding. Skip the
// test if the encoding is not supported.
if (!Charset.isSupported(ENCODING)) {
println("Skip LocalizedDisplayScriptTest because the encoding " +
ENCODING + " is not supported");
return suite;
}
BaseTestSuite localizedEmbeddedTests =
new BaseTestSuite("LocalizedDisplay:embedded");
localizedEmbeddedTests.addTest(getSuite());
Test embeddedrun = TestConfiguration.singleUseDatabaseDecorator(localizedEmbeddedTests);
// add the client test
suite.addTest(embeddedrun);
// It's not working to have both embedded and client run in the same
// setting as the database doesn't get deleted until after the suite is done.
// The second run will go against the already created & encoded database,
// resulting in localized display by default, and thus a diff with the
// master.
// Set up the script's run with the network client
BaseTestSuite localizedTests =
new BaseTestSuite("LocalizedDisplay:client");
localizedTests.addTest(getSuite());
Test client = TestConfiguration.clientServerDecorator(
TestConfiguration.singleUseDatabaseDecorator(localizedTests));
// add the client test
suite.addTest(client);
return suite;
}
/*
* A single JUnit test that runs a single Localized script.
*/
private LocalizedDisplayScriptTest(String localizedTest){
super(localizedTest, ENCODING);
}
/**
* Return a localized test based on the script name.
* The test is surrounded in a decorator that sets up the
* desired properties which is wrapped in a decorator
* which sets up the timezone wrapped in a decorator
* that cleans the database.
*/
private static Test getSuite() {
BaseTestSuite suite = new BaseTestSuite("localized Display");
Properties uiProps = new Properties();
uiProps.put("derby.ui.locale","es_AR");
uiProps.put("derby.ui.codeset", ENCODING);
suite.addTest(new TimeZoneTestSetup(new SystemPropertyTestSetup(
new LocalizedDisplayScriptTest("LocalizedDisplay"), uiProps),
"America/Los_Angeles"));
return getIJConfig(suite);
}
}