]> source.dussan.org Git - jackcess.git/commitdiff
ensure unit tests run reliably in different locales
authorJames Ahlborn <jtahlborn@yahoo.com>
Thu, 1 Feb 2024 01:05:33 +0000 (01:05 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Thu, 1 Feb 2024 01:05:33 +0000 (01:05 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@1405 f203690c-595d-4dc9-a70b-905162fa7fd2

pom.xml
src/test/java/com/healthmarketscience/jackcess/DatabaseTest.java
src/test/java/com/healthmarketscience/jackcess/impl/expr/DefaultFunctionsTest.java
src/test/java/com/healthmarketscience/jackcess/impl/expr/NumberFormatterTest.java

diff --git a/pom.xml b/pom.xml
index 0b57a82f8e297b509b0d1e53c72bc44794fe688d..a7e7eebe908b039d99875e7e435a5e09bf39ddba 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                 <value>${jackcess.testFormats}</value>
               </property>
             </systemProperties>
+            <argLine>-Duser.language=en -Duser.region=US</argLine>
           </configuration>
         </plugin>
       </plugins>
index 06a05b87a8e784dff2d82b23b2685f9bbda75303..2ea9e29c1434a7a08d21f97388a2cd954b0e23e7 100644 (file)
@@ -684,11 +684,9 @@ public class DatabaseTest extends TestCase
     }
   }
 
-  public void testAncientDates() throws Exception
+  public void testAncientDatesWrite() throws Exception
   {
-    TimeZone tz = TimeZone.getTimeZone("America/New_York");
     SimpleDateFormat sdf = DatabaseBuilder.createDateFormat("yyyy-MM-dd");
-    sdf.getCalendar().setTimeZone(tz);
 
     List<String> dates = Arrays.asList("1582-10-15", "1582-10-14",
                                        "1492-01-10", "1392-01-10");
@@ -697,7 +695,6 @@ public class DatabaseTest extends TestCase
     for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
       Database db = createMem(fileFormat);
       db.setDateTimeType(DateTimeType.DATE);
-      db.setTimeZone(tz);
 
       Table table = newTable("test")
         .addColumn(newColumn("name", DataType.TEXT))
@@ -718,8 +715,23 @@ public class DatabaseTest extends TestCase
       db.close();
     }
 
+  }
+
+  /**
+   * Test ancient date handling against test database {@code oldDates*.accdb}.
+   */
+  public void testAncientDatesRead() throws Exception
+  {
+    TimeZone tz = TimeZone.getTimeZone("America/New_York");
+    SimpleDateFormat sdf = DatabaseBuilder.createDateFormat("yyyy-MM-dd");
+    sdf.getCalendar().setTimeZone(tz);
+
+    List<String> dates = Arrays.asList("1582-10-15", "1582-10-14",
+                                       "1492-01-10", "1392-01-10");
+
     for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.OLD_DATES)) {
       Database db = openCopy(testDB);
+      db.setTimeZone(tz); // explicitly set database time zone
       db.setDateTimeType(DateTimeType.DATE);
 
       Table t = db.getTable("Table1");
index e2f76b7cb3fd56a2cd921d5117f0dd081f114d2d..4cea25363a5d62419fdd6ad5bb45e886979681b6 100644 (file)
@@ -21,22 +21,20 @@ import java.time.LocalDateTime;
 import java.util.Calendar;
 
 import com.healthmarketscience.jackcess.expr.EvalException;
-import junit.framework.AssertionFailedError;
-import junit.framework.TestCase;
 import static com.healthmarketscience.jackcess.impl.expr.ExpressionatorTest.eval;
 import static com.healthmarketscience.jackcess.impl.expr.ExpressionatorTest.toBD;
+import junit.framework.AssertionFailedError;
+import static junit.framework.TestCase.*;
+import org.junit.Test;
 
 /**
  *
  * @author James Ahlborn
  */
-public class DefaultFunctionsTest extends TestCase
+public class DefaultFunctionsTest
 {
 
-  public DefaultFunctionsTest(String name) {
-    super(name);
-  }
-
+  @Test
   public void testFuncs() throws Exception
   {
     assertEval("foo", "=IIf(10 > 1, \"foo\", \"bar\")");
@@ -266,6 +264,7 @@ public class DefaultFunctionsTest extends TestCase
     assertEval("13:37", "=FormatDateTime(#1/1/1973 1:37:25 PM#,4)");
   }
 
+  @Test
   public void testFormat() throws Exception
   {
     assertEval("12345.6789", "=Format(12345.6789, 'General Number')");
@@ -330,6 +329,7 @@ public class DefaultFunctionsTest extends TestCase
     assertEval("19:00", "=Format(#01/02/2003 7:00:00 PM#, 'Short Time')");
   }
 
+  @Test
   public void testCustomFormat() throws Exception
   {
     assertEval("07:00 a", "=Format(#01/10/2003 7:00:00 AM#, 'hh:nn a/p')");
@@ -578,6 +578,7 @@ public class DefaultFunctionsTest extends TestCase
     }
   }
 
+  @Test
   public void testNumberFuncs() throws Exception
   {
     assertEval(1, "=Abs(1)");
@@ -619,6 +620,7 @@ public class DefaultFunctionsTest extends TestCase
     assertEval(-4, "=Round(-4, 2)");
   }
 
+  @Test
   public void testDateFuncs() throws Exception
   {
     assertEval("1/2/2003", "=CStr(DateValue(#01/02/2003 7:00:00 AM#))");
@@ -775,6 +777,7 @@ public class DefaultFunctionsTest extends TestCase
     assertEval(-83421497, "=DateDiff('s',#11/3/2018 2:15:30 PM#,#3/13/2016 1:37:13 AM#)");
   }
 
+  @Test
   public void testFinancialFuncs() throws Exception
   {
     assertEval("-9.57859403981306", "=CStr(NPer(0.12/12,-100,-1000))");
index 4d26c1b49dfd6fbaf4c1679c882abc47a86f4a66..acc2a1a6bed346b014c0ae125efbd35b88efca68 100644 (file)
@@ -16,23 +16,19 @@ limitations under the License.
 
 package com.healthmarketscience.jackcess.impl.expr;
 
-
 import java.math.BigDecimal;
 
-import junit.framework.TestCase;
-
+import static junit.framework.TestCase.assertEquals;
+import org.junit.Test;
 
 /**
  *
  * @author James Ahlborn
  */
-public class NumberFormatterTest extends TestCase
+public class NumberFormatterTest
 {
 
-  public NumberFormatterTest(String name) {
-    super(name);
-  }
-
+  @Test
   public void testDoubleFormat() throws Exception
   {
     assertEquals("894984737284944", NumberFormatter.format(894984737284944d));
@@ -60,6 +56,7 @@ public class NumberFormatterTest extends TestCase
     assertEquals("1.#QNAN", NumberFormatter.format(Double.NaN));
   }
 
+  @Test
   public void testFloatFormat() throws Exception
   {
     assertEquals("8949847", NumberFormatter.format(8949847f));
@@ -87,6 +84,7 @@ public class NumberFormatterTest extends TestCase
     assertEquals("1.#QNAN", NumberFormatter.format(Float.NaN));
   }
 
+  @Test
   public void testDecimalFormat() throws Exception
   {
     assertEquals("9874539485972.2342342234234", NumberFormatter.format(new BigDecimal("9874539485972.2342342234234")));