@@ -0,0 +1,3000 @@
+/*%0A * Licensed to the Apache Software Foundation (ASF) under one or more%0A * contributor license agreements.  See the NOTICE file distributed with%0A * this work for additional information regarding copyright ownership.%0A * The ASF licenses this file to You under the Apache License, Version 2.0%0A * (the %22License%22); you may not use this file except in compliance with%0A * the License.  You may obtain a copy of the License at%0A * %0A *      http://www.apache.org/licenses/LICENSE-2.0%0A * %0A * Unless required by applicable law or agreed to in writing, software%0A * distributed under the License is distributed on an %22AS IS%22 BASIS,%0A * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A * See the License for the specific language governing permissions and%0A * limitations under the License.%0A */%0Apackage org.apache.commons.lang3.test;%0A%0Aimport static org.junit.Assert.assertEquals;%0A%0Aimport java.util.Locale;%0Aimport java.util.TimeZone;%0A%0Aimport org.junit.AfterClass;%0Aimport org.junit.BeforeClass;%0Aimport org.junit.Rule;%0Aimport org.junit.Test;%0A%0Apublic class SystemDefaultsSwitchTest %7B%0A%0A    private static Locale TEST_DEFAULT_LOCALE;%0A    private static Locale DEFAULT_LOCALE_BEFORE_TEST;%0A%0A    private static TimeZone DEFAULT_TIMEZONE_BEFORE_TEST;%0A    private static TimeZone TEST_DEFAULT_TIMEZONE;%0A%0A    @BeforeClass%0A    public static void classSetUp() %7B%0A        DEFAULT_LOCALE_BEFORE_TEST = Locale.getDefault();%0A        if (!DEFAULT_LOCALE_BEFORE_TEST.equals(Locale.CANADA)) %7B%0A            Locale.setDefault(Locale.CANADA);%0A        %7D else %7B%0A            // you seem to be from Canada...%0A            Locale.setDefault(Locale.CHINESE);%0A        %7D%0A        TEST_DEFAULT_LOCALE = Locale.getDefault();%0A%0A        DEFAULT_TIMEZONE_BEFORE_TEST = TimeZone.getDefault();%0A        TimeZone utc = TimeZone.getTimeZone(%22UTC%22);%0A        if (!DEFAULT_TIMEZONE_BEFORE_TEST.equals(utc)) %7B%0A            TimeZone.setDefault(utc);%0A        %7D else %7B%0A            TimeZone.setDefault(TimeZone.getTimeZone(%22GMT%22));%0A        %7D%0A        TEST_DEFAULT_TIMEZONE = TimeZone.getDefault();%0A    %7D%0A%0A    @Rule%0A    public SystemDefaultsSwitch defaultsSwitch = new SystemDefaultsSwitch();%0A%0A    @Test%0A    public void testDefaultLocaleNoAnnotation() throws Exception %7B%0A        assertEquals(TEST_DEFAULT_LOCALE, Locale.getDefault());%0A    %7D%0A%0A    @Test%0A    @SystemDefaults(locale = %22en_EN%22)%0A    public void testUseDifferentLocale() throws Exception %7B%0A        assertEquals(new Locale(%22en%22, %22EN%22), Locale.getDefault());%0A    %7D%0A%0A    @Test%0A    public void testDefaultTimeZoneNoAnnotation() throws Exception %7B%0A        assertEquals(TEST_DEFAULT_TIMEZONE, TimeZone.getDefault());%0A    %7D%0A%0A    @Test%0A    @SystemDefaults(timezone = %22CET%22)%0A    public void testUseDifferentTimeZone() throws Exception %7B%0A        assertEquals(TimeZone.getTimeZone(%22CET%22), TimeZone.getDefault());%0A    %7D%0A%0A    @AfterClass%0A    public static void classTearDown() %7B%0A        Locale.setDefault(DEFAULT_LOCALE_BEFORE_TEST);%0A        TimeZone.setDefault(DEFAULT_TIMEZONE_BEFORE_TEST);%0A    %7D%0A%7D%0A

Write basic unit test for SystemDefaultsSwitch