Fix a problem with ESXLT date:add() with January
authormoney_seshu Dronamraju <mcseshu@gmail.com>
Mon, 7 Mar 2011 04:12:11 +0000 (12:12 +0800)
committerDaniel Veillard <veillard@redhat.com>
Mon, 7 Mar 2011 04:12:11 +0000 (12:12 +0800)
Also adds a regression test provided by Michael Ludwig <milu71@gmx.de>

libexslt/date.c
tests/docs/date_add.xml [new file with mode: 0644]
tests/general/Makefile.am
tests/general/date_add.out [new file with mode: 0644]
tests/general/date_add.xsl [new file with mode: 0644]

index cefbdd8..05b11ed 100644 (file)
@@ -1577,7 +1577,7 @@ _exsltDateAdd (exsltDateValPtr dt, exsltDateValPtr dur)
         if ((r->hour) || (r->min) || (r->sec))
             ret->type = XS_DATETIME;
         else if (ret->type != XS_DATE) {
-            if ((r->mon != 1) && (r->day != 1))
+            if (r->day != 1)
                 ret->type = XS_DATE;
             else if ((ret->type != XS_GYEARMONTH) && (r->mon != 1))
                 ret->type = XS_GYEARMONTH;
diff --git a/tests/docs/date_add.xml b/tests/docs/date_add.xml
new file mode 100644 (file)
index 0000000..69d62f2
--- /dev/null
@@ -0,0 +1 @@
+<doc/>
index 7207e15..8f32fe7 100644 (file)
@@ -182,7 +182,7 @@ EXTRA_DIST = \
     character.out character.xsl \
     character2.out character2.xsl \
     itemschoose.out itemschoose.xsl \
-    inner.xsl
+    inner.xsl date_add.xsl
 
 
 all:
diff --git a/tests/general/date_add.out b/tests/general/date_add.out
new file mode 100644 (file)
index 0000000..fbca16b
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<dates-and-times>
+  <d>2001-01-04</d>
+  <d>2001-02-04</d>
+  <d>2001-12-04</d>
+  <d>2001-12-31</d>
+  <d>2002-01</d>
+  <d>2002-01-02</d>
+</dates-and-times>
diff --git a/tests/general/date_add.xsl b/tests/general/date_add.xsl
new file mode 100644 (file)
index 0000000..0ef39c5
--- /dev/null
@@ -0,0 +1,16 @@
+<xsl:stylesheet version="1.0"
+  xmlns:date="http://exslt.org/dates-and-times"
+  exclude-result-prefixes="date"
+  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+  <xsl:output indent="yes"/>
+  <xsl:template match="/">
+    <dates-and-times>
+      <d><xsl:value-of select="date:add( '2001-01', 'P3D' )" /></d>
+      <d><xsl:value-of select="date:add( '2001-02', 'P3D' )" /></d>
+      <d><xsl:value-of select="date:add( '2001-12', 'P3D' )" /></d>
+      <d><xsl:value-of select="date:add( '2001-12', 'P30D' )" /></d>
+      <d><xsl:value-of select="date:add( '2001-12', 'P31D' )" /></d>
+      <d><xsl:value-of select="date:add( '2001-12', 'P32D' )" /></d>
+    </dates-and-times>
+  </xsl:template>
+</xsl:stylesheet>