improve test coverage for ConstuctYamlTimestamp
diff --git a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
index 450954a..911ac06 100644
--- a/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
+++ b/src/main/java/org/yaml/snakeyaml/constructor/SafeConstructor.java
@@ -279,20 +279,19 @@
cal.set(Calendar.MINUTE, Integer.parseInt(min_s));
cal.set(Calendar.SECOND, Integer.parseInt(sec_s));
cal.set(Calendar.MILLISECOND, usec);
- if (timezoneh_s != null || timezonem_s != null) {
+ if (timezoneh_s != null) {
int zone = 0;
int sign = +1;
- if (timezoneh_s != null) {
- if (timezoneh_s.startsWith("-")) {
- sign = -1;
- }
- zone += Integer.parseInt(timezoneh_s.substring(1)) * 3600000;
+ if (timezoneh_s.startsWith("-")) {
+ sign = -1;
}
+ zone += Integer.parseInt(timezoneh_s.substring(1)) * 3600000;
if (timezonem_s != null) {
zone += Integer.parseInt(timezonem_s) * 60000;
}
cal.set(Calendar.ZONE_OFFSET, sign * zone);
} else {
+ // no time zone provided
cal.setTimeZone(TimeZone.getTimeZone("UTC"));
}
return cal.getTime();
diff --git a/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java b/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java
index 9135c04..fc8b2c4 100644
--- a/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java
+++ b/src/test/java/org/yaml/snakeyaml/types/TimestampTagTest.java
@@ -18,8 +18,17 @@
public void testTimestamp() throws IOException {
assertEquals("2001-12-15 at 2:59:43 (100)", getText("canonical: 2001-12-15T02:59:43.1Z",
"canonical"));
+ // zero miliseconds
+ assertEquals("2001-12-15 at 2:59:43 (0)", getText("canonical: 2001-12-15T02:59:43.000Z",
+ "canonical"));
assertEquals("2001-12-15 at 2:59:43 (100)", getText(
"valid iso8601: 2001-12-14t21:59:43.10-05:00", "valid iso8601"));
+ // half hour time zone
+ assertEquals("2001-12-14 at 22:29:43 (100)", getText(
+ "valid iso8601: 2001-12-14t21:59:43.10-0:30", "valid iso8601"));
+ // + time zone
+ assertEquals("2001-12-14 at 19:59:43 (100)", getText(
+ "valid iso8601: 2001-12-14t21:59:43.10+2:00", "valid iso8601"));
assertEquals("2001-12-15 at 2:59:43 (100)", getText(
"space separated: 2001-12-14 21:59:43.10 -5", "space separated"));
assertEquals("2001-12-15 at 2:59:43 (100)", getText(