blob: 3d83784753f8a85af4a75e0405900d1521bf962a [file] [log] [blame]
package org.apache.maven.plugins.changes;
/*
* 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.
*/
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assume.assumeThat;
import static org.hamcrest.CoreMatchers.startsWith;
import org.apache.maven.plugins.changes.ChangesCheckMojo;
import org.junit.Test;
/**
* @author Dennis Lundberg
* @version $Id$
* @since 2.4
*/
public class ChangesCheckMojoTestCase
{
@Test
public void testIsValidDate()
throws Exception
{
String pattern;
// null pattern
pattern = null;
assertFalse( ChangesCheckMojo.isValidDate( null, pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "2010-12-16", pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern ) );
// empty pattern
pattern = "";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "2010-12-16", pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern ) );
// valid pattern
pattern = "yyyy-MM-dd";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "2010-DD-MM", pattern ) );
assertTrue( ChangesCheckMojo.isValidDate( "2010-12-16", pattern ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern ) );
}
@Test
public void testIsValidateWithLocale()
throws Exception
{
String pattern, locale = null;
// null locale
pattern = "yyyy-MM-dd";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern, locale ) );
assertTrue( ChangesCheckMojo.isValidDate( "2010-12-06", pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern, locale ) );
// unknown locale specified, should use default locale
locale = "ab_CD";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern, locale ) );
assertTrue( ChangesCheckMojo.isValidDate( "2010-12-06", pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern, locale ) );
// pattern with months as number
pattern = "yyyy-MM-dd";
// Czech locale
locale = "cs_CZ";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern, locale ) );
assertTrue( ChangesCheckMojo.isValidDate( "2010-12-06", pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern, locale ) );
// English locale
locale = "en_US";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern, locale ) );
assertTrue( ChangesCheckMojo.isValidDate( "2010-12-06", pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern, locale ) );
// pattern with months as text
pattern = "dd MMM yyyy";
// English locale
locale = "en_US";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern, locale ) );
assertTrue( ChangesCheckMojo.isValidDate( "06 Dec 2010", pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern, locale ) );
}
// In JDK 9, the Unicode Consortium's Common Locale Data Repository (CLDR) data is enabled as the default locale data,
// so that you can use standard locale data without any further action.
// In JDK 8, although CLDR locale data is bundled with the JRE, it isn’t enabled by default.
// source: https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-A20F2989-BFA9-482D-8618-6CBB4BAAE310
@Test
public void testCompat()
{
// @TODO fix for Java 9+
// System.setProperty( "java.locale.providers", "COMPAT,CLDR" ) is not picked up...
assumeThat( System.getProperty( "java.version" ), startsWith( "1." ) );
// pattern with months as text
String pattern = "dd MMM yyyy";
String originalJavaLocaleProviders = null;
if ( !System.getProperty( "java.version" ).startsWith( "1." ) )
{
originalJavaLocaleProviders = System.setProperty( "java.locale.providers", "COMPAT,CLDR" );
}
try
{
// Czech locale
String locale = "cs_CZ";
assertFalse( ChangesCheckMojo.isValidDate( null, pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "", pattern, locale ) );
assertTrue( ChangesCheckMojo.isValidDate( "06 XII 2010", pattern, locale ) );
assertFalse( ChangesCheckMojo.isValidDate( "pending", pattern, locale ) );
}
finally
{
if ( originalJavaLocaleProviders != null )
{
System.setProperty( "java.locale.providers", originalJavaLocaleProviders );
}
else
{
System.clearProperty( "java.locale.providers" );
}
}
}
}