http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java deleted file mode 100644 index e8d5f2b..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PrintfGTemplateNumberFormatFactory.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.Locale; - -import org.apache.freemarker.core.Environment; -import org.apache.freemarker.core.model.TemplateModelException; -import org.apache.freemarker.core.model.TemplateNumberModel; -import org.apache.freemarker.core.outputformat.impl.HTMLOutputFormat; -import org.apache.freemarker.core.util._StringUtil; -import org.apache.freemarker.core.valueformat.InvalidFormatParametersException; -import org.apache.freemarker.core.valueformat.TemplateFormatUtil; -import org.apache.freemarker.core.valueformat.TemplateNumberFormat; -import org.apache.freemarker.core.valueformat.TemplateNumberFormatFactory; -import org.apache.freemarker.core.valueformat.UnformattableValueException; - -/** - * Formats like {@code %G} in {@code printf}, with the specified number of significant digits. Also has special - * formatter for HTML output format, where it uses the HTML "sup" element for exponents. - */ -public class PrintfGTemplateNumberFormatFactory extends TemplateNumberFormatFactory { - - public static final PrintfGTemplateNumberFormatFactory INSTANCE = new PrintfGTemplateNumberFormatFactory(); - - private PrintfGTemplateNumberFormatFactory() { - // Defined to decrease visibility - } - - @Override - public TemplateNumberFormat get(String params, Locale locale, Environment env) - throws InvalidFormatParametersException { - Integer significantDigits; - if (!params.isEmpty()) { - try { - significantDigits = Integer.valueOf(params); - } catch (NumberFormatException e) { - throw new InvalidFormatParametersException( - "The format parameter must be an integer, but was (shown quoted) " - + _StringUtil.jQuote(params) + "."); - } - } else { - // Use the default of %G - significantDigits = null; - } - return new PrintfGTemplateNumberFormat(significantDigits, locale); - } - - private static class PrintfGTemplateNumberFormat extends TemplateNumberFormat { - - private final Locale locale; - private final String printfFormat; - - private PrintfGTemplateNumberFormat(Integer significantDigits, Locale locale) { - printfFormat = "%" + (significantDigits != null ? "." + significantDigits : "") + "G"; - this.locale = locale; - } - - @Override - public String formatToPlainText(TemplateNumberModel numberModel) - throws UnformattableValueException, TemplateModelException { - final Number n = TemplateFormatUtil.getNonNullNumber(numberModel); - - // printf %G only accepts Double, BigDecimal and Float - final Number gCompatibleN; - if (n instanceof Double || n instanceof BigDecimal || n instanceof Float) { - gCompatibleN = n; - } else { - if (n instanceof BigInteger) { - gCompatibleN = new BigDecimal((BigInteger) n); - } else if (n instanceof Long) { - gCompatibleN = BigDecimal.valueOf(n.longValue()); - } else { - gCompatibleN = Double.valueOf(n.doubleValue()); - } - } - - return String.format(locale, printfFormat, gCompatibleN); - } - - @Override - public Object format(TemplateNumberModel numberModel) - throws UnformattableValueException, TemplateModelException { - String strResult = formatToPlainText(numberModel); - - int expIdx = strResult.indexOf('E'); - if (expIdx == -1) { - return strResult; - } - - String expStr = strResult.substring(expIdx + 1); - int expSignifNumBegin = 0; - while (expSignifNumBegin < expStr.length() && isExpSignifNumPrefix(expStr.charAt(expSignifNumBegin))) { - expSignifNumBegin++; - } - - return HTMLOutputFormat.INSTANCE.fromMarkup( - strResult.substring(0, expIdx) - + "*10<sup>" - + (expStr.charAt(0) == '-' ? "-" : "") + expStr.substring(expSignifNumBegin) - + "</sup>"); - } - - private boolean isExpSignifNumPrefix(char c) { - return c == '+' || c == '-' || c == '0'; - } - - @Override - public boolean isLocaleBound() { - return true; - } - - @Override - public String getDescription() { - return "printf " + printfFormat; - } - - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicAll.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicAll.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicAll.java deleted file mode 100644 index 5767e93..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicAll.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -public class PublicAll { - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithMixedConstructors.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithMixedConstructors.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithMixedConstructors.java deleted file mode 100644 index e521d75..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithMixedConstructors.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -public class PublicWithMixedConstructors { - - private final String s; - - public PublicWithMixedConstructors(Integer x) { - s = "Integer"; - } - - PublicWithMixedConstructors(int x) { - s = "int"; - } - - public String getS() { - return s; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithPackageVisibleConstructor.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithPackageVisibleConstructor.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithPackageVisibleConstructor.java deleted file mode 100644 index 9fdec49..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/PublicWithPackageVisibleConstructor.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -public class PublicWithPackageVisibleConstructor { - - PublicWithPackageVisibleConstructor() { } - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/SeldomEscapedOutputFormat.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/SeldomEscapedOutputFormat.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/SeldomEscapedOutputFormat.java deleted file mode 100644 index b8cab13..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/SeldomEscapedOutputFormat.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -import java.io.IOException; -import java.io.Writer; - -import org.apache.freemarker.core.model.TemplateModelException; -import org.apache.freemarker.core.outputformat.CommonMarkupOutputFormat; - -public class SeldomEscapedOutputFormat extends CommonMarkupOutputFormat<TemplateSeldomEscapedOutputModel> { - - public static final SeldomEscapedOutputFormat INSTANCE = new SeldomEscapedOutputFormat(); - - private SeldomEscapedOutputFormat() { - // hide - } - - @Override - public String getName() { - return "seldomEscaped"; - } - - @Override - public String getMimeType() { - return "text/seldomEscaped"; - } - - @Override - public void output(String textToEsc, Writer out) throws IOException, TemplateModelException { - out.write(escapePlainText(textToEsc)); - } - - @Override - public String escapePlainText(String plainTextContent) { - return plainTextContent.replaceAll("(\\.|\\\\)", "\\\\$1"); - } - - @Override - public boolean isLegacyBuiltInBypassed(String builtInName) { - return false; - } - - @Override - public boolean isAutoEscapedByDefault() { - return false; - } - - @Override - protected TemplateSeldomEscapedOutputModel newTemplateMarkupOutputModel( - String plainTextContent, String markupContent) { - return new TemplateSeldomEscapedOutputModel(plainTextContent, markupContent); - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateDummyOutputModel.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateDummyOutputModel.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateDummyOutputModel.java deleted file mode 100644 index c98df53..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateDummyOutputModel.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -import org.apache.freemarker.core.outputformat.CommonTemplateMarkupOutputModel; - -public class TemplateDummyOutputModel extends CommonTemplateMarkupOutputModel<TemplateDummyOutputModel> { - - TemplateDummyOutputModel(String plainTextContent, String markupContet) { - super(plainTextContent, markupContet); - } - - @Override - public DummyOutputFormat getOutputFormat() { - return DummyOutputFormat.INSTANCE; - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateSeldomEscapedOutputModel.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateSeldomEscapedOutputModel.java b/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateSeldomEscapedOutputModel.java deleted file mode 100644 index b0a21f7..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/userpkg/TemplateSeldomEscapedOutputModel.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * 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.freemarker.core.userpkg; - -import org.apache.freemarker.core.outputformat.CommonTemplateMarkupOutputModel; - -public class TemplateSeldomEscapedOutputModel extends CommonTemplateMarkupOutputModel<TemplateSeldomEscapedOutputModel> { - - TemplateSeldomEscapedOutputModel(String plainTextContent, String markupContet) { - super(plainTextContent, markupContet); - } - - @Override - public SeldomEscapedOutputFormat getOutputFormat() { - return SeldomEscapedOutputFormat.INSTANCE; - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java b/freemarker-core/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java deleted file mode 100644 index 0cd8fc0..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/util/DateUtilTest.java +++ /dev/null @@ -1,1085 +0,0 @@ -/* - * 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.freemarker.core.util; - -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; - -import javax.xml.datatype.DatatypeConfigurationException; -import javax.xml.datatype.DatatypeFactory; -import javax.xml.datatype.XMLGregorianCalendar; - -import org.apache.freemarker.core.util._DateUtil.CalendarFieldsToDateConverter; -import org.apache.freemarker.core.util._DateUtil.DateParseException; -import org.apache.freemarker.core.util._DateUtil.DateToISO8601CalendarFactory; -import org.apache.freemarker.core.util._DateUtil.TrivialCalendarFieldsToDateConverter; - -import junit.framework.TestCase; - -public class DateUtilTest extends TestCase { - - private final TimeZone originalDefaultTZ = TimeZone.getDefault(); - - @Override - protected void setUp() throws Exception { - TimeZone.setDefault(TimeZone.getTimeZone("Europe/Prague")); - } - - @Override - protected void tearDown() throws Exception { - TimeZone.setDefault(originalDefaultTZ); - } - - private final DateFormat df - = new SimpleDateFormat("G yyyy-MM-dd HH:mm:ss:S Z", Locale.US); - { - df.setTimeZone(_DateUtil.UTC); - } - - private CalendarFieldsToDateConverter cf2dc = new TrivialCalendarFieldsToDateConverter(); - - private DateToISO8601CalendarFactory calendarFactory - = new _DateUtil.TrivialDateToISO8601CalendarFactory(); - - public DateUtilTest(String name) { - super(name); - } - - public void testDateToUTCString() throws ParseException { - assertEquals( - "1998-10-30T15:30:00.512Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 1998-10-30 19:30:00:512 +0400"), true)); - assertEquals( - "1998-10-30T15:30:00.5Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 1998-10-30 19:30:00:500 +0400"), true)); - assertEquals( - "1998-10-30T15:30:00.51Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 1998-10-30 19:30:00:510 +0400"), true)); - assertEquals( - "1998-10-30T15:30:00.1Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 1998-10-30 19:30:00:100 +0400"), true)); - assertEquals( - "1998-10-30T15:30:00.01Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 1998-10-30 19:30:00:10 +0400"), true)); - assertEquals( - "1998-10-30T15:30:00.001Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 1998-10-30 19:30:00:1 +0400"), true)); - assertEquals( - "2000-02-08T06:05:04Z", - dateToISO8601UTCDateTimeMSString( - df.parse("AD 2000-02-08 09:05:04:0 +0300"), true)); - assertEquals( - "0099-02-28T06:15:24Z", - dateToISO8601UTCDateTimeString( - df.parse( - "AD 0099-03-02 09:15:24:0 +0300"), true)); - assertEquals( - "0010-02-28T06:15:24Z", - dateToISO8601UTCDateTimeString( - df.parse("AD 0010-03-02 09:15:24:0 +0300"), true)); - assertEquals( - "0001-02-28T06:15:24Z", - dateToISO8601UTCDateTimeString( - df.parse("AD 0001-03-02 09:15:24:0 +0300"), true)); - assertEquals( - "0000-02-29T06:15:24Z", - dateToISO8601UTCDateTimeString( - df.parse("BC 0001-03-02 09:15:24:0 +0300"), true)); - assertEquals( - "-1-02-28T06:15:24Z", - dateToISO8601UTCDateTimeString( - df.parse("BC 2-03-02 09:15:24:0 +0300"), true)); - assertEquals( - "10000-02-28T06:15:24Z", - dateToISO8601UTCDateTimeString( - df.parse("AD 10000-02-28 09:15:24:0 +0300"), true)); - - Date d = df.parse("AD 1998-10-30 19:30:00:512 +0400"); - assertEquals( - "1998-10-30", - dateToISO8601UTCDateString(d)); - assertEquals( - "15:30:00.512Z", - dateToISO8601UTCTimeMSString(d, true)); - assertEquals( - "15:30:00.512", - dateToISO8601UTCTimeMSString(d, false)); - assertEquals( - "1998-10-30", - dateToISO8601UTCDateString( - new java.sql.Date(d.getTime()))); - assertEquals( - "15:30:00.512Z", - dateToISO8601UTCTimeMSString( - new java.sql.Time(d.getTime()), true)); - } - - public void testLocalTime() throws ParseException { - Date dsum = df.parse("AD 2010-05-09 20:00:00:0 UTC"); - Date dwin = df.parse("AD 2010-01-01 20:00:00:0 UTC"); - - TimeZone tzRome = TimeZone.getTimeZone("Europe/Rome"); - if (tzRome.getOffset(0) == 0) { - throw new RuntimeException( - "Can't get time zone for Europe/Rome!"); - } - assertEquals( - "2010-05-09T22:00:00+02:00", - dateToISO8601DateTimeString(dsum, tzRome)); - assertEquals( - "2010-01-01T21:00:00+01:00", - dateToISO8601DateTimeString(dwin, tzRome)); - assertEquals( - "2010-05-09", - dateToISO8601DateString(dsum, tzRome)); - assertEquals( - "2010-01-01", - dateToISO8601DateString(dwin, tzRome)); - assertEquals( - "22:00:00+02:00", - dateToISO8601TimeString(dsum, tzRome)); - assertEquals( - "21:00:00+01:00", - dateToISO8601TimeString(dwin, tzRome)); - - TimeZone tzNY = TimeZone.getTimeZone("America/New_York"); - if (tzNY.getOffset(0) == 0) { - throw new RuntimeException( - "Can't get time zone for America/New_York!"); - } - assertEquals( - "2010-05-09T16:00:00-04:00", - dateToISO8601DateTimeString(dsum, tzNY)); - assertEquals( - "2010-01-01T15:00:00-05:00", - dateToISO8601DateTimeString(dwin, tzNY)); - assertEquals( - "2010-05-09", - dateToISO8601DateString(dsum, tzNY)); - assertEquals( - "2010-01-01", - dateToISO8601DateString(dwin, tzNY)); - assertEquals( - "16:00:00-04:00", - dateToISO8601TimeString(dsum, tzNY)); - assertEquals( - "15:00:00-05:00", - dateToISO8601TimeString(dwin, tzNY)); - - TimeZone tzFixed = TimeZone.getTimeZone("GMT+02:30"); - assertEquals( - "2010-05-09T22:30:00+02:30", - dateToISO8601DateTimeString(dsum, tzFixed)); - assertEquals( - "2010-01-01T22:30:00+02:30", - dateToISO8601DateTimeString(dwin, tzFixed)); - } - - public void testGetTimeZone() throws Exception { - assertTrue(_DateUtil.getTimeZone("GMT") != _DateUtil.UTC); - assertTrue(_DateUtil.getTimeZone("UT1") != _DateUtil.UTC); - assertEquals(_DateUtil.getTimeZone("UTC"), _DateUtil.UTC); - - assertEquals(_DateUtil.getTimeZone("Europe/Rome"), - TimeZone.getTimeZone("Europe/Rome")); - - assertEquals(_DateUtil.getTimeZone("Iceland"), // GMT and no DST - TimeZone.getTimeZone("Iceland")); - - try { - _DateUtil.getTimeZone("Europe/NoSuch"); - fail(); - } catch (UnrecognizedTimeZoneException e) { - // good - } - } - - public void testTimeOnlyDate() throws UnrecognizedTimeZoneException { - Date t = new Date(0L); - SimpleDateFormat tf = new SimpleDateFormat("HH:mm:ss"); - - tf.setTimeZone(_DateUtil.UTC); - assertEquals("00:00:00", tf.format(t)); - assertEquals("00:00:00", - dateToISO8601UTCTimeString(t, false)); - - TimeZone gmt1 = _DateUtil.getTimeZone("GMT+01"); - tf.setTimeZone(gmt1); - assertEquals("01:00:00", tf.format(t)); - assertEquals("01:00:00+01:00", - dateToISO8601TimeString(t, gmt1)); - } - - public void testAccuracy() throws ParseException { - Date d = df.parse("AD 2000-02-08 09:05:04:250 UTC"); - assertEquals("2000-02-08T09:05:04Z", - dateToISO8601UTCDateTimeString(d, true)); - assertEquals("2000-02-08T09:05:04.25Z", - dateToISO8601String(d, true, true, true, - _DateUtil.ACCURACY_MILLISECONDS, null)); - assertEquals("2000-02-08T09:05:04Z", - dateToISO8601String(d, true, true, true, - _DateUtil.ACCURACY_SECONDS, null)); - assertEquals("2000-02-08T09:05Z", - dateToISO8601String(d, true, true, true, - _DateUtil.ACCURACY_MINUTES, null)); - assertEquals("2000-02-08T09Z", - dateToISO8601String(d, true, true, true, - _DateUtil.ACCURACY_HOURS, null)); - - d = df.parse("AD 1998-10-30 19:30:00:000 +0400"); - assertEquals( - "15:30:00Z", - dateToISO8601UTCTimeMSString(d, true)); - assertEquals( - "15:30:00.000Z", - dateToISO8601UTCTimeMSFString(d, true)); - assertEquals( - "1998-10-30T15:30:00Z", - dateToISO8601UTCDateTimeMSString(d, true)); - assertEquals( - "1998-10-30T15:30:00.000Z", - dateToISO8601UTCDateTimeMSFString(d, true)); - - d = df.parse("AD 1998-10-30 19:30:00:100 +0400"); - assertEquals( - "15:30:00.1Z", - dateToISO8601UTCTimeMSString(d, true)); - assertEquals( - "15:30:00.100Z", - dateToISO8601UTCTimeMSFString(d, true)); - assertEquals( - "1998-10-30T15:30:00.1Z", - dateToISO8601UTCDateTimeMSString(d, true)); - assertEquals( - "1998-10-30T15:30:00.100Z", - dateToISO8601UTCDateTimeMSFString(d, true)); - - d = df.parse("AD 1998-10-30 19:30:00:010 +0400"); - assertEquals( - "15:30:00.01Z", - dateToISO8601UTCTimeMSString(d, true)); - assertEquals( - "15:30:00.010Z", - dateToISO8601UTCTimeMSFString(d, true)); - assertEquals( - "1998-10-30T15:30:00.01Z", - dateToISO8601UTCDateTimeMSString(d, true)); - assertEquals( - "1998-10-30T15:30:00.010Z", - dateToISO8601UTCDateTimeMSFString(d, true)); - - d = df.parse("AD 1998-10-30 19:30:00:001 +0400"); - assertEquals( - "15:30:00.001Z", - dateToISO8601UTCTimeMSString(d, true)); - assertEquals( - "15:30:00.001Z", - dateToISO8601UTCTimeMSFString(d, true)); - assertEquals( - "1998-10-30T15:30:00.001Z", - dateToISO8601UTCDateTimeMSString(d, true)); - assertEquals( - "1998-10-30T15:30:00.001Z", - dateToISO8601UTCDateTimeMSFString(d, true)); - } - - public void testXSFormatISODeviations() throws ParseException, UnrecognizedTimeZoneException { - Date dsum = df.parse("AD 2010-05-09 20:00:00:0 UTC"); - Date dwin = df.parse("AD 2010-01-01 20:00:00:0 UTC"); - - TimeZone tzRome = _DateUtil.getTimeZone("Europe/Rome"); - - assertEquals( - "2010-01-01T21:00:00+01:00", - _DateUtil.dateToXSString(dwin, true, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory)); - assertEquals( - "2010-05-09T22:00:00+02:00", - _DateUtil.dateToXSString(dsum, true, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory)); - assertEquals( - "2010-01-01+01:00", // ISO doesn't allow date-only with TZ - _DateUtil.dateToXSString(dwin, true, false, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory)); - assertEquals( - "2010-05-09+02:00", // ISO doesn't allow date-only with TZ - _DateUtil.dateToXSString(dsum, true, false, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory)); - assertEquals( - "21:00:00+01:00", - _DateUtil.dateToXSString(dwin, false, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory)); - assertEquals( - "22:00:00+02:00", - _DateUtil.dateToXSString(dsum, false, true, true, _DateUtil.ACCURACY_SECONDS, tzRome, calendarFactory)); - - assertEquals( - "-1-02-29T06:15:24Z", // ISO uses 0 for BC 1 - _DateUtil.dateToXSString( - df.parse("BC 0001-03-02 09:15:24:0 +0300"), - true, true, true, _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC, calendarFactory)); - assertEquals( - "-2-02-28T06:15:24Z", // ISO uses -1 for BC 2 - _DateUtil.dateToXSString( - df.parse("BC 2-03-02 09:15:24:0 +0300"), - true, true, true, _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC, calendarFactory)); - } - - private String dateToISO8601DateTimeString( - Date date, TimeZone tz) { - return dateToISO8601String(date, true, true, true, - _DateUtil.ACCURACY_SECONDS, tz); - } - - private String dateToISO8601UTCDateTimeString( - Date date, boolean offsetPart) { - return dateToISO8601String(date, true, true, offsetPart, - _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC); - } - - private String dateToISO8601UTCDateTimeMSString( - Date date, boolean offsetPart) { - return dateToISO8601String(date, true, true, offsetPart, - _DateUtil.ACCURACY_MILLISECONDS, _DateUtil.UTC); - } - - private String dateToISO8601UTCDateTimeMSFString( - Date date, boolean offsetPart) { - return dateToISO8601String(date, true, true, offsetPart, - _DateUtil.ACCURACY_MILLISECONDS_FORCED, _DateUtil.UTC); - } - - private String dateToISO8601DateString(Date date, TimeZone tz) { - return dateToISO8601String(date, true, false, false, - _DateUtil.ACCURACY_SECONDS, tz); - } - - private String dateToISO8601UTCDateString(Date date) { - return dateToISO8601String(date, true, false, false, - _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC); - } - - private String dateToISO8601TimeString( - Date date, TimeZone tz) { - return dateToISO8601String(date, false, true, true, - _DateUtil.ACCURACY_SECONDS, tz); - } - - private String dateToISO8601UTCTimeString( - Date date, boolean offsetPart) { - return dateToISO8601String(date, false, true, offsetPart, - _DateUtil.ACCURACY_SECONDS, _DateUtil.UTC); - } - - private String dateToISO8601UTCTimeMSString( - Date date, boolean offsetPart) { - return dateToISO8601String(date, false, true, offsetPart, - _DateUtil.ACCURACY_MILLISECONDS, _DateUtil.UTC); - } - - private String dateToISO8601UTCTimeMSFString( - Date date, boolean offsetPart) { - return dateToISO8601String(date, false, true, offsetPart, - _DateUtil.ACCURACY_MILLISECONDS_FORCED, _DateUtil.UTC); - } - - private String dateToISO8601String( - Date date, - boolean datePart, boolean timePart, boolean offsetPart, - int accuracy, - TimeZone timeZone) { - return _DateUtil.dateToISO8601String( - date, - datePart, timePart, offsetPart, - accuracy, - timeZone, - calendarFactory); - } - - public void testParseDate() throws DateParseException { - assertDateParsing( - "AD 1998-10-29 20:00:00:0 +0000", - null, - "1998-10-30+04:00", _DateUtil.UTC); - assertDateParsing( - "AD 1998-10-30 02:00:00:0 +0000", - null, - "1998-10-30-02:00", _DateUtil.UTC); - assertDateParsing( - "AD 1998-10-30 02:00:00:0 +0000", - "1998-10-30", _DateUtil.parseXSTimeZone("-02:00")); - assertDateParsing( - null, - "AD 1998-10-30 02:00:00:0 +0000", - "19981030", _DateUtil.parseXSTimeZone("-02:00")); - assertDateParsing( - "AD 1998-10-30 00:00:00:0 +0000", - null, - "1998-10-30Z", _DateUtil.UTC); - assertDateParsing( - "AD 1998-10-30 00:00:00:0 +0000", - "1998-10-30", _DateUtil.UTC); - assertDateParsing( - null, - "AD 1998-10-30 00:00:00:0 +0000", - "19981030", _DateUtil.UTC); - - assertDateParsing( - "AD 1998-10-29 20:00:00:0 +0000", - null, - "1998-10-30+04:00", _DateUtil.UTC); - assertDateParsing( - "AD 1998-10-30 04:00:00:0 +0000", - null, - "1998-10-30-04:00", _DateUtil.UTC); - assertDateParsing( - "AD 1998-10-30 00:00:00:0 +0000", - null, - "1998-10-30Z", _DateUtil.UTC); - - try { - // XS doesn't have year 0 - assertDateParsing( - "BC 0000-02-05 00:00:00:0 +0000", - null, - "0000-02-03Z", _DateUtil.UTC); - fail(); - } catch (DateParseException e) { - echo(e); - } - assertDateParsing( - null, - "BC 0001-02-05 00:00:00:0 +0000", - "0000-02-03", _DateUtil.UTC); - assertDateParsing( - null, - "BC 0001-02-05 00:00:00:0 +0000", - "00000203", _DateUtil.UTC); - - assertDateParsing( - "BC 0001-02-05 00:00:00:0 +0000", // Julian - "BC 0002-02-05 00:00:00:0 +0000", // Julian - "-0001-02-03", _DateUtil.UTC); // Proleptic Gregorian - assertDateParsing( - null, - "BC 0002-02-05 00:00:00:0 +0000", // Julian - "-00010203", _DateUtil.UTC); // Proleptic Gregorian - - assertDateParsing( - "AD 0001-02-05 00:00:00:0 +0000", // Julian - null, - "0001-02-03Z", _DateUtil.UTC); // Proleptic Gregorian - assertDateParsing( - "AD 0001-02-05 00:00:00:0 +0000", // Julian - "0001-02-03", _DateUtil.UTC); // Proleptic Gregorian - assertDateParsing( - null, - "AD 0001-02-05 00:00:00:0 +0000", // Julian - "00010203", _DateUtil.UTC); // Proleptic Gregorian - assertDateParsing( - "AD 1001-12-07 00:00:00:0 +0000", // Julian - null, - "1001-12-13Z", _DateUtil.UTC); // Proleptic Gregorian - assertDateParsing( - "AD 1001-12-07 00:00:00:0 +0000", // Julian - "1001-12-13", _DateUtil.UTC); // Proleptic Gregorian - - assertDateParsing( - "AD 2006-12-31 00:00:00:0 +0000", - null, - "2006-12-31Z", _DateUtil.UTC); - assertDateParsing( - "AD 2006-12-31 00:00:00:0 +0000", - "2006-12-31", _DateUtil.UTC); - assertDateParsing( - "AD 2006-01-01 00:00:00:0 +0000", - null, - "2006-01-01Z", _DateUtil.UTC); - assertDateParsing( - "AD 2006-01-01 00:00:00:0 +0000", - "2006-01-01", _DateUtil.UTC); - assertDateParsing( - "AD 12006-01-01 00:00:00:0 +0000", - "12006-01-01", _DateUtil.UTC); - assertDateParsing( - null, - "AD 12006-01-01 00:00:00:0 +0000", - "120060101", _DateUtil.UTC); - } - - public void testParseDateMalformed() { - assertDateMalformed("1998-10-30x"); - assertDateMalformed("+1998-10-30"); - assertDateMalformed("1998-10-"); - assertDateMalformed("1998-1-30"); - assertDateMalformed("1998-10-30+01"); - assertDateMalformed("1998-00-01"); - assertDateMalformed("1998-13-01"); - assertDateMalformed("1998-10-00"); - assertDateMalformed("1998-10-32"); - assertDateMalformed("1998-02-31"); - - assertISO8601DateMalformed("2100103"); - assertISO8601DateMalformed("210-01-03"); - assertISO8601DateMalformed("2012-0301"); - assertISO8601DateMalformed("201203-01"); - assertISO8601DateMalformed("2012-01-01+01:00"); - } - - public void testParseTime() throws DateParseException { - assertTimeParsing( - "AD 1970-01-01 17:30:05:0 +0000", - "17:30:05", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 17:30:05:0 +0000", - "173005", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:100 +0000", - "07:30:00.1", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:120 +0000", - "07:30:00.12", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:123 +0000", - "07:30:00.123", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:123 +0000", - "07:30:00.1235", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:123 +0000", - "07:30:00.12346", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 07:30:00:123 +0000", - "073000.12346", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 07:30:00:123 +0000", - "073000,12346", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:120 +0000", - "07:30:00.12", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 07:30:00:500 +0000", - "07:30:00.5", _DateUtil.UTC); - - assertTimeParsing( - "AD 1970-01-01 16:30:05:0 +0000", - "17:30:05+01:00", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 16:30:05:0 +0000", - "173005+01", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 19:00:05:0 +0000", - "17:30:05-01:30", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 19:00:05:0 +0000", - "173005-0130", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-01 16:30:05:500 +0000", - "17:30:05.5+01:00", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 16:30:05:500 +0000", - "173005.5+0100", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 16:30:05:500 +0000", - "173005.5+01", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 16:00:00:0 +0000", - "170000+01", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 16:00:00:0 +0000", - "1700+01", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-01 16:00:00:0 +0000", - "17+01", _DateUtil.UTC); - - assertTimeParsing( - "AD 1970-01-01 00:00:00:0 +0000", - "00:00:00", _DateUtil.UTC); - assertTimeParsing( - "AD 1970-01-02 00:00:00:0 +0000", - "24:00:00", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-02 00:00:00:0 +0000", - "240000", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-02 00:00:00:0 +0000", - "2400", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-02 00:00:00:0 +0000", - "24:00", _DateUtil.UTC); - assertTimeParsing( - null, - "AD 1970-01-02 00:00:00:0 +0000", - "24", _DateUtil.UTC); - - assertTimeParsing( - "AD 1970-01-01 23:59:59:999 +0000", - "23:59:59.999", _DateUtil.UTC); - } - - public void testParseTimeMalformed() { - assertTimeMalformed("00:0000"); - assertTimeMalformed("00:00:00-01:60"); - assertTimeMalformed("24:00:01"); - assertTimeMalformed("00:00:61"); - assertTimeMalformed("00:60:00"); - assertTimeMalformed("25:00:00"); - assertTimeMalformed("2:00:00"); - assertTimeMalformed("02:0:00"); - assertTimeMalformed("02:00:0"); - - assertISO8601TimeMalformed("1010101"); - assertISO8601TimeMalformed("10101"); - assertISO8601TimeMalformed("101"); - assertISO8601TimeMalformed("1"); - assertISO8601TimeMalformed("101010-1"); - assertISO8601TimeMalformed("101010-100"); - assertISO8601TimeMalformed("101010-10000"); - assertISO8601TimeMalformed("101010+1"); - assertISO8601TimeMalformed("101010+100"); - assertISO8601TimeMalformed("101010+10000"); - } - - public void testParseDateTime() throws DateParseException { - assertDateTimeParsing( - "AD 1998-10-30 11:30:00:0 +0000", - "1998-10-30T15:30:00+04:00", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 1998-10-30 11:30:00:0 +0000", - "19981030T153000+0400", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 11:30:00:500 +0000", - "1998-10-30T15:30:00.5+04:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 15:30:00:0 +0000", - "1998-10-30T15:30:00Z", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 1998-10-30 15:30:00:0 +0000", - "19981030T1530Z", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 15:30:00:500 +0000", - "1998-10-30T15:30:00.5Z", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 11:30:00:0 +0000", - "1998-10-30T15:30:00+04:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 15:30:00:0 +0000", - "1998-10-30T15:30:00Z", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 15:30:00:0 +0000", - "1998-10-30T15:30:00", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 1998-10-30 15:30:00:0 +0000", - "1998-10-30T15:30", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 1998-10-29 20:00:00:0 +0000", - "1998-10-30T00:00:00+04:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 02:00:00:0 +0000", - "1998-10-30T00:00:00-02:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 00:00:00:0 +0000", - "1998-10-30T00:00:00Z", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 1998-10-29 20:00:00:0 +0000", - "1998-10-30T00:00:00+04:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1998-10-30 00:00:00:0 +0000", - "1998-10-30T00:00:00Z", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 1998-10-30 00:00:00:0 +0000", - "1998-10-30T00:00Z", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 1998-10-30 00:00:00:0 +0000", - "1998-10-30T00:00", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 1998-10-30 00:00:00:0 +0000", - "19981030T00Z", _DateUtil.UTC); - - // BC years - try { - assertDateTimeParsing( - "", - null, - "0000-02-03T00:00:00Z", _DateUtil.UTC); - fail(); - } catch (DateParseException e) { - echo(e); - } - assertDateTimeParsing( - null, - "BC 0001-02-05 00:00:00:0 +0000", - "0000-02-03T00:00:00Z", _DateUtil.UTC); - - assertDateTimeParsing( - "BC 0001-02-05 00:00:00:0 +0000", // Julian - "BC 0002-02-05 00:00:00:0 +0000", // Julian - "-0001-02-03T00:00:00Z", _DateUtil.UTC); // Proleptic Gregorian - - assertDateTimeParsing( - "AD 0001-02-05 00:00:00:0 +0000", // Julian - "0001-02-03T00:00:00Z", _DateUtil.UTC); // Proleptic Gregorian - assertDateTimeParsing( - "AD 1001-12-07 00:00:00:0 +0000", // Julian - "1001-12-13T00:00:00Z", _DateUtil.UTC); // Proleptic Gregorian - assertDateTimeParsing( - "AD 11001-12-13 00:00:00:0 +0000", - "11001-12-13T00:00:00Z", _DateUtil.UTC); - assertDateTimeParsing( - null, - "AD 11001-12-13 00:00:00:0 +0000", - "110011213T00Z", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 2006-12-31 00:00:00:0 +0000", - "2006-12-31T00:00:00Z", _DateUtil.UTC); - assertDateTimeParsing( - "AD 2006-01-01 00:00:00:0 +0000", - "2006-01-01T00:00:00Z", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 1970-01-01 07:30:00:123 +0000", - "1970-01-01T07:30:00.123", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1970-01-01 07:30:00:123 +0000", - "1970-01-01T07:30:00.1235", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1970-01-01 07:30:00:123 +0000", - "1970-01-01T07:30:00.12346", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1970-01-01 07:30:00:120 +0000", - "1970-01-01T07:30:00.12", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1970-01-01 07:30:00:500 +0000", - "1970-01-01T07:30:00.5", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 1970-01-01 16:30:05:0 +0000", - "1970-01-01T17:30:05+01:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1970-01-01 16:30:05:500 +0000", - "1970-01-01T17:30:05.5+01:00", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 1970-01-01 00:00:00:0 +0000", - "1970-01-01T00:00:00", _DateUtil.UTC); - assertDateTimeParsing( - "AD 1970-01-02 00:00:00:0 +0000", - "1970-01-01T24:00:00", _DateUtil.UTC); - - assertDateTimeParsing( - "AD 1970-01-01 23:59:59:999 +0000", - "1970-01-01T23:59:59.999", _DateUtil.UTC); - } - - public void testParseDateTimeMalformed() throws DateParseException { - assertDateTimeMalformed("1998-00-01T00:00:00"); - assertDateTimeMalformed("1998-13-01T00:00:00"); - assertDateTimeMalformed("1998-10-00T00:00:00"); - assertDateTimeMalformed("1998-10-32T00:00:00"); - assertDateTimeMalformed("1998-02-31T00:00:00"); - assertDateTimeMalformed("1970-01-02T24:00:01"); - assertDateTimeMalformed("1970-01-01T00:00:61"); - assertDateTimeMalformed("1970-01-01T00:60:00"); - assertDateTimeMalformed("1970-01-01T25:00:00"); - - assertISO8601DateTimeMalformed("197-01-01T20:00:00"); - } - - public void testParseXSTimeZone() throws DateParseException { - assertEquals(0, - _DateUtil.parseXSTimeZone("Z").getOffset(0)); - assertEquals(0, - _DateUtil.parseXSTimeZone("-00:00").getOffset(0)); - assertEquals(0, - _DateUtil.parseXSTimeZone("+00:00").getOffset(0)); - assertEquals(90 * 60 * 1000, - _DateUtil.parseXSTimeZone("+01:30").getOffset(0)); - assertEquals(-4 * 60 * 60 * 1000, - _DateUtil.parseXSTimeZone("-04:00").getOffset(0)); - assertEquals(((-23 * 60) - 59) * 60 * 1000, - _DateUtil.parseXSTimeZone("-23:59").getOffset(0)); - assertEquals(((23 * 60) + 59) * 60 * 1000, - _DateUtil.parseXSTimeZone("+23:59").getOffset(0)); - } - - public void testParseXSTimeZoneWrong() { - try { - _DateUtil.parseXSTimeZone("04:00").getOffset(0); - fail(); - } catch (DateParseException e) { - echo(e); - } - try { - _DateUtil.parseXSTimeZone("-04:00x").getOffset(0); - fail(); - } catch (DateParseException e) { - echo(e); - } - try { - _DateUtil.parseXSTimeZone("-04").getOffset(0); - fail(); - } catch (DateParseException e) { - echo(e); - } - try { - _DateUtil.parseXSTimeZone("+24:00").getOffset(0); - fail(); - } catch (DateParseException e) { - echo(e); - } - try { - _DateUtil.parseXSTimeZone("-24:00").getOffset(0); - fail(); - } catch (DateParseException e) { - echo(e); - } - try { - _DateUtil.parseXSTimeZone("-01:60").getOffset(0); - fail(); - } catch (DateParseException e) { - echo(e); - } - } - - public void testParseXSDateTimeFTLAndJavax() throws DateParseException { - // Explicit time zone: - assertJavaxAndFTLXSDateTimesSame("2014-01-01T13:35:08Z"); - assertJavaxAndFTLXSDateTimesSame("2014-01-01T13:35:08+02:00"); - - // Default time zone: - assertJavaxAndFTLXSDateTimesSame("2014-01-01T13:35:08"); // winter - assertJavaxAndFTLXSDateTimesSame("2014-07-01T13:35:08"); // summer - - // Proleptic Gregorian - assertJavaxAndFTLXSDateTimesSame("1500-01-01T13:35:08Z"); - assertJavaxAndFTLXSDateTimesSame("0200-01-01T13:35:08Z"); - assertJavaxAndFTLXSDateTimesSame("0001-01-01T00:00:00+05:00"); - - // BC - assertJavaxAndFTLXSDateTimesSame("0001-01-01T13:35:08Z"); - assertJavaxAndFTLXSDateTimesSame("-0001-01-01T13:35:08Z"); - - // Hour 24 - assertJavaxAndFTLXSDateTimesSame("2014-01-01T23:59:59"); - if (isAtLeastJava6()) { // Java 5 has broken parser that doesn't allow 24. - assertJavaxAndFTLXSDateTimesSame("2014-01-31T24:00:00"); - assertJavaxAndFTLXSDateTimesSame("2014-01-01T24:00:00"); - } - assertJavaxAndFTLXSDateTimesSame("2014-01-02T00:00:00"); // same as the previous - assertJavaxAndFTLXSDateTimesSame("2014-02-01T00:00:00"); // same as the previous - - // Under ms - assertJavaxAndFTLXSDateTimesSame("2014-01-01T23:59:59.123456789"); - assertJavaxAndFTLXSDateTimesSame("2014-01-01T23:59:59.1235"); - } - - private boolean isAtLeastJava6() { - try { - Class.forName("java.lang.management.LockInfo"); - } catch (ClassNotFoundException e) { - return false; - } - return true; - } - - private final DatatypeFactory datetypeFactory; - { - try { - datetypeFactory = DatatypeFactory.newInstance(); - } catch (DatatypeConfigurationException e) { - throw new RuntimeException(e); - } - } - - private void assertJavaxAndFTLXSDateTimesSame(String s) throws DateParseException { - XMLGregorianCalendar xgc = datetypeFactory.newXMLGregorianCalendar(s); - Date javaxDate = xgc.toGregorianCalendar().getTime(); - Date ftlDate = _DateUtil.parseXSDateTime(s, TimeZone.getDefault(), cf2dc); - assertEquals(javaxDate, ftlDate); - } - - private void assertDateParsing(String expected, String parsed, TimeZone tz) throws DateParseException { - assertDateParsing(expected, expected, parsed, tz); - } - - private void assertDateParsing(String expectedXS, String expectedISO8601, String parsed, TimeZone tz) - throws DateParseException { - if (expectedXS != null) { - assertEquals( - expectedXS, - df.format(_DateUtil.parseXSDate(parsed, tz, cf2dc))); - } - if (expectedISO8601 != null) { - assertEquals( - expectedISO8601, - df.format(_DateUtil.parseISO8601Date(parsed, tz, cf2dc))); - } - } - - private void assertDateTimeParsing(String expected, String parsed, TimeZone tz) throws DateParseException { - assertDateTimeParsing(expected, expected, parsed, tz); - } - - private void assertDateTimeParsing(String expectedXS, String expectedISO8601, String parsed, TimeZone tz) - throws DateParseException { - if (expectedXS != null) { - assertEquals( - expectedXS, - df.format(_DateUtil.parseXSDateTime(parsed, tz, cf2dc))); - } - if (expectedISO8601 != null) { - assertEquals( - expectedISO8601, - df.format(_DateUtil.parseISO8601DateTime(parsed, tz, cf2dc))); - } - } - - private void assertTimeParsing(String expected, String parsed, TimeZone tz) throws DateParseException { - assertTimeParsing(expected, expected, parsed, tz); - } - - private void assertTimeParsing(String expectedXS, String expectedISO8601, String parsed, TimeZone tz) - throws DateParseException { - if (expectedXS != null) { - assertEquals( - expectedXS, - df.format(_DateUtil.parseXSTime(parsed, tz, cf2dc))); - } - if (expectedISO8601 != null) { - assertEquals( - expectedISO8601, - df.format(_DateUtil.parseISO8601Time(parsed, tz, cf2dc))); - } - } - - private void assertDateMalformed(String parsed) { - try { - _DateUtil.parseXSDate(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - try { - _DateUtil.parseISO8601Date(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - } - - private void assertTimeMalformed(String parsed) { - try { - _DateUtil.parseXSTime(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - try { - _DateUtil.parseISO8601Time(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - } - - private void assertDateTimeMalformed(String parsed) { - try { - _DateUtil.parseXSDateTime(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - try { - _DateUtil.parseISO8601DateTime(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - } - - private void assertISO8601DateMalformed(String parsed) { - try { - _DateUtil.parseISO8601Date(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - } - - private void assertISO8601TimeMalformed(String parsed) { - try { - _DateUtil.parseISO8601Time(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - } - - private void assertISO8601DateTimeMalformed(String parsed) { - try { - _DateUtil.parseISO8601DateTime(parsed, _DateUtil.UTC, cf2dc); - fail(); - } catch (DateParseException e) { - // Expected - echo(e); - } - } - - private void echo(@SuppressWarnings("unused") DateParseException e) { - // System.out.println(e); - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/util/FTLUtilTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/util/FTLUtilTest.java b/freemarker-core/src/test/java/org/apache/freemarker/core/util/FTLUtilTest.java deleted file mode 100644 index f1e44f3..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/util/FTLUtilTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * 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.freemarker.core.util; - -import static junit.framework.TestCase.assertFalse; -import static junit.framework.TestCase.assertNull; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -public class FTLUtilTest { - - @Test - public void testEscapeStringLiteralPart() { - assertEquals("", FTLUtil.escapeStringLiteralPart("")); - assertEquals("abc", FTLUtil.escapeStringLiteralPart("abc")); - assertEquals("{", FTLUtil.escapeStringLiteralPart("{")); - assertEquals("a{b}c", FTLUtil.escapeStringLiteralPart("a{b}c")); - assertEquals("a#b", FTLUtil.escapeStringLiteralPart("a#b")); - assertEquals("a$b", FTLUtil.escapeStringLiteralPart("a$b")); - assertEquals("a#\\{b}c", FTLUtil.escapeStringLiteralPart("a#{b}c")); - assertEquals("a$\\{b}c", FTLUtil.escapeStringLiteralPart("a${b}c")); - assertEquals("a'c\\\"d", FTLUtil.escapeStringLiteralPart("a'c\"d", '"')); - assertEquals("a\\'c\"d", FTLUtil.escapeStringLiteralPart("a'c\"d", '\'')); - assertEquals("a\\'c\"d", FTLUtil.escapeStringLiteralPart("a'c\"d", '\'')); - assertEquals("\\n\\r\\t\\f\\x0002\\\\", FTLUtil.escapeStringLiteralPart("\n\r\t\f\u0002\\")); - assertEquals("\\l\\g\\a", FTLUtil.escapeStringLiteralPart("<>&")); - } - - @Test - public void testEscapeStringLiteralAll() { - assertFTLEsc("", "", "", "", "\"\""); - assertFTLEsc("\'", "\\'", "'", "\\'", "\"'\""); - assertFTLEsc("\"", "\\\"", "\\\"", "\"", "'\"'"); - assertFTLEsc("\"", "\\\"", "\\\"", "\"", "'\"'"); - assertFTLEsc("foo", "foo", "foo", "foo", "\"foo\""); - assertFTLEsc("foo's", "foo\\'s", "foo's", "foo\\'s", "\"foo's\""); - assertFTLEsc("foo \"", "foo \\\"", "foo \\\"", "foo \"", "'foo \"'"); - assertFTLEsc("foo's \"", "foo\\'s \\\"", "foo's \\\"", "foo\\'s \"", "\"foo's \\\"\""); - assertFTLEsc("foo\nb\u0000c", "foo\\nb\\x0000c", "foo\\nb\\x0000c", "foo\\nb\\x0000c", "\"foo\\nb\\x0000c\""); - } - - private void assertFTLEsc(String s, String partAny, String partQuot, String partApos, String quoted) { - assertEquals(partAny, FTLUtil.escapeStringLiteralPart(s)); - assertEquals(partQuot, FTLUtil.escapeStringLiteralPart(s, '\"')); - assertEquals(partApos, FTLUtil.escapeStringLiteralPart(s, '\'')); - assertEquals(quoted, FTLUtil.toStringLiteral(s)); - } - - @Test - public void testUnescapeStringLiteralPart() throws Exception { - assertEquals("", FTLUtil.unescapeStringLiteralPart("")); - assertEquals("1", FTLUtil.unescapeStringLiteralPart("1")); - assertEquals("123", FTLUtil.unescapeStringLiteralPart("123")); - assertEquals("1&2&3", FTLUtil.unescapeStringLiteralPart("1\\a2\\a3")); - assertEquals("&", FTLUtil.unescapeStringLiteralPart("\\a")); - assertEquals("&&&", FTLUtil.unescapeStringLiteralPart("\\a\\a\\a")); - assertEquals( - "\u0000\u0000&\u0000\u0000\u0000\u0000", - FTLUtil.unescapeStringLiteralPart("\\x0000\\x0000\\a\\x0000\\x000\\x00\\x0")); - assertEquals( - "'\"\n\b\u0000c><&{\\", - FTLUtil.unescapeStringLiteralPart("\\'\\\"\\n\\b\\x0000c\\g\\l\\a\\{\\\\")); - } - - @Test - public void testEscapeIdentifier() { - assertNull(FTLUtil.escapeIdentifier(null)); - assertEquals("", FTLUtil.escapeIdentifier("")); - assertEquals("a", FTLUtil.escapeIdentifier("a")); - assertEquals("ab", FTLUtil.escapeIdentifier("ab")); - assertEquals("\\.", FTLUtil.escapeIdentifier(".")); - assertEquals("\\.\\:\\-", FTLUtil.escapeIdentifier(".:-")); - assertEquals("a\\.b", FTLUtil.escapeIdentifier("a.b")); - assertEquals("a\\.b\\:c\\-d", FTLUtil.escapeIdentifier("a.b:c-d")); - } - - @Test - public void testIsNonEscapedIdentifierStart() { - assertTrue(FTLUtil.isNonEscapedIdentifierPart('a')); - assertTrue(FTLUtil.isNonEscapedIdentifierPart('á')); - assertTrue(FTLUtil.isNonEscapedIdentifierPart('1')); - assertFalse(FTLUtil.isNonEscapedIdentifierPart('-')); - assertFalse(FTLUtil.isNonEscapedIdentifierPart(' ')); - assertFalse(FTLUtil.isNonEscapedIdentifierPart('\u0000')); - assertFalse(FTLUtil.isNonEscapedIdentifierPart('\\')); - } - - @Test - public void testisNonEscapedIdentifierStart() { - assertTrue(FTLUtil.isNonEscapedIdentifierStart('a')); - assertTrue(FTLUtil.isNonEscapedIdentifierStart('á')); - assertFalse(FTLUtil.isNonEscapedIdentifierStart('1')); - assertFalse(FTLUtil.isNonEscapedIdentifierStart('-')); - assertFalse(FTLUtil.isNonEscapedIdentifierStart(' ')); - assertFalse(FTLUtil.isNonEscapedIdentifierStart('\u0000')); - assertFalse(FTLUtil.isNonEscapedIdentifierStart('\\')); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28a276c8/freemarker-core/src/test/java/org/apache/freemarker/core/util/NumberUtilTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/test/java/org/apache/freemarker/core/util/NumberUtilTest.java b/freemarker-core/src/test/java/org/apache/freemarker/core/util/NumberUtilTest.java deleted file mode 100644 index d5709da..0000000 --- a/freemarker-core/src/test/java/org/apache/freemarker/core/util/NumberUtilTest.java +++ /dev/null @@ -1,215 +0,0 @@ -/* - * 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.freemarker.core.util; - -import java.math.BigDecimal; -import java.math.BigInteger; - -import org.junit.Test; - -import junit.framework.TestCase; - -public class NumberUtilTest extends TestCase { - - @Test - public void testGetSignum() { - assertEquals(1, _NumberUtil.getSignum(Double.valueOf(Double.POSITIVE_INFINITY))); - assertEquals(1, _NumberUtil.getSignum(Double.valueOf(3))); - assertEquals(0, _NumberUtil.getSignum(Double.valueOf(0))); - assertEquals(-1, _NumberUtil.getSignum(Double.valueOf(-3))); - assertEquals(-1, _NumberUtil.getSignum(Double.valueOf(Double.NEGATIVE_INFINITY))); - try { - _NumberUtil.getSignum(Double.valueOf(Double.NaN)); - fail(); - } catch (ArithmeticException e) { - // expected - } - - assertEquals(1, _NumberUtil.getSignum(Float.valueOf(Float.POSITIVE_INFINITY))); - assertEquals(1, _NumberUtil.getSignum(Float.valueOf(3))); - assertEquals(0, _NumberUtil.getSignum(Float.valueOf(0))); - assertEquals(-1, _NumberUtil.getSignum(Float.valueOf(-3))); - assertEquals(-1, _NumberUtil.getSignum(Float.valueOf(Float.NEGATIVE_INFINITY))); - try { - _NumberUtil.getSignum(Float.valueOf(Float.NaN)); - fail(); - } catch (ArithmeticException e) { - // expected - } - - assertEquals(1, _NumberUtil.getSignum(Long.valueOf(3))); - assertEquals(0, _NumberUtil.getSignum(Long.valueOf(0))); - assertEquals(-1, _NumberUtil.getSignum(Long.valueOf(-3))); - - assertEquals(1, _NumberUtil.getSignum(Integer.valueOf(3))); - assertEquals(0, _NumberUtil.getSignum(Integer.valueOf(0))); - assertEquals(-1, _NumberUtil.getSignum(Integer.valueOf(-3))); - - assertEquals(1, _NumberUtil.getSignum(Short.valueOf((short) 3))); - assertEquals(0, _NumberUtil.getSignum(Short.valueOf((short) 0))); - assertEquals(-1, _NumberUtil.getSignum(Short.valueOf((short) -3))); - - assertEquals(1, _NumberUtil.getSignum(Byte.valueOf((byte) 3))); - assertEquals(0, _NumberUtil.getSignum(Byte.valueOf((byte) 0))); - assertEquals(-1, _NumberUtil.getSignum(Byte.valueOf((byte) -3))); - - assertEquals(1, _NumberUtil.getSignum(BigDecimal.valueOf(3))); - assertEquals(0, _NumberUtil.getSignum(BigDecimal.valueOf(0))); - assertEquals(-1, _NumberUtil.getSignum(BigDecimal.valueOf(-3))); - - assertEquals(1, _NumberUtil.getSignum(BigInteger.valueOf(3))); - assertEquals(0, _NumberUtil.getSignum(BigInteger.valueOf(0))); - assertEquals(-1, _NumberUtil.getSignum(BigInteger.valueOf(-3))); - } - - @Test - public void testIsBigDecimalInteger() { - BigDecimal n1 = new BigDecimal("1.125"); - if (n1.precision() != 4 || n1.scale() != 3) { - throw new RuntimeException("Wrong: " + n1); - } - BigDecimal n2 = new BigDecimal("1.125").subtract(new BigDecimal("0.005")); - if (n2.precision() != 4 || n2.scale() != 3) { - throw new RuntimeException("Wrong: " + n2); - } - BigDecimal n3 = new BigDecimal("123"); - BigDecimal n4 = new BigDecimal("6000"); - BigDecimal n5 = new BigDecimal("1.12345").subtract(new BigDecimal("0.12345")); - if (n5.precision() != 6 || n5.scale() != 5) { - throw new RuntimeException("Wrong: " + n5); - } - BigDecimal n6 = new BigDecimal("0"); - BigDecimal n7 = new BigDecimal("0.001").subtract(new BigDecimal("0.001")); - BigDecimal n8 = new BigDecimal("60000.5").subtract(new BigDecimal("0.5")); - BigDecimal n9 = new BigDecimal("6").movePointRight(3).setScale(-3); - - BigDecimal[] ns = new BigDecimal[] { - n1, n2, n3, n4, n5, n6, n7, n8, n9, - n1.negate(), n2.negate(), n3.negate(), n4.negate(), n5.negate(), n6.negate(), n7.negate(), n8.negate(), - n9.negate(), - }; - - for (BigDecimal n : ns) { - assertEquals(n.doubleValue() == n.longValue(), _NumberUtil.isIntegerBigDecimal(n)); - } - - } - - @Test - public void testToIntExcact() { - for (int n : new int[] { Integer.MIN_VALUE, Byte.MIN_VALUE, -1, 0, 1, Byte.MAX_VALUE, Integer.MAX_VALUE }) { - if (n != Integer.MIN_VALUE && n != Integer.MAX_VALUE) { - assertEquals(n, _NumberUtil.toIntExact(Byte.valueOf((byte) n))); - assertEquals(n, _NumberUtil.toIntExact(Short.valueOf((short) n))); - assertEquals(n, _NumberUtil.toIntExact(Float.valueOf(n))); - } - assertEquals(n, _NumberUtil.toIntExact(Integer.valueOf(n))); - assertEquals(n, _NumberUtil.toIntExact(Long.valueOf(n))); - assertEquals(n, _NumberUtil.toIntExact(Double.valueOf(n))); - assertEquals(n, _NumberUtil.toIntExact(BigDecimal.valueOf(n))); - assertEquals(n, _NumberUtil.toIntExact(BigDecimal.valueOf(n * 10L).divide(BigDecimal.TEN))); - assertEquals(n, _NumberUtil.toIntExact(BigInteger.valueOf(n))); - } - - try { - _NumberUtil.toIntExact(Long.valueOf(Integer.MIN_VALUE - 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(Long.valueOf(Integer.MAX_VALUE + 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - - try { - _NumberUtil.toIntExact(Float.valueOf(1.00001f)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(Float.valueOf(Integer.MIN_VALUE - 129L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(Float.valueOf(Integer.MAX_VALUE)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - - try { - _NumberUtil.toIntExact(Double.valueOf(1.00001)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(Double.valueOf(Integer.MIN_VALUE - 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(Double.valueOf(Integer.MAX_VALUE + 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - - try { - _NumberUtil.toIntExact(new BigDecimal("100.000001")); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(BigDecimal.valueOf(Integer.MIN_VALUE - 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(BigDecimal.valueOf(Integer.MAX_VALUE + 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - - try { - _NumberUtil.toIntExact(BigInteger.valueOf(Integer.MIN_VALUE - 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - try { - _NumberUtil.toIntExact(BigInteger.valueOf(Integer.MAX_VALUE + 1L)); - fail(); - } catch (ArithmeticException e) { - // Expected - } - } - -}
