@@ -3106,7 +3106,7 @@ public:
31063106 import std.format : format;
31073107 import std.string : strip;
31083108
3109- immutable str = strip(isoString);
3109+ auto str = strip(isoString);
31103110
31113111 enforce(str.length >= 15 , new DateTimeException(format(" Invalid ISO String: %s" , isoString)));
31123112 auto t = str.countUntil(' T' );
@@ -3172,6 +3172,18 @@ public:
31723172 assert (DateTime .fromISOString(" 19990706T123033 " ) == DateTime (Date (1999 , 7 , 6 ), TimeOfDay (12 , 30 , 33 )));
31733173 }
31743174
3175+ // bug# 17801
3176+ @safe unittest
3177+ {
3178+ import std.conv : to;
3179+ import std.meta : AliasSeq;
3180+ foreach (C; AliasSeq! (char , wchar , dchar ))
3181+ {
3182+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
3183+ assert (DateTime .fromISOString(to! S(" 20121221T141516" )) == DateTime (2012 , 12 , 21 , 14 , 15 , 16 ));
3184+ }
3185+ }
3186+
31753187
31763188 /+ +
31773189 Creates a $(LREF DateTime) from a string with the format
@@ -3194,7 +3206,7 @@ public:
31943206 import std.format : format;
31953207 import std.string : strip;
31963208
3197- immutable str = strip(isoExtString);
3209+ auto str = strip(isoExtString);
31983210
31993211 enforce(str.length >= 15 , new DateTimeException(format(" Invalid ISO Extended String: %s" , isoExtString)));
32003212 auto t = str.countUntil(' T' );
@@ -3259,6 +3271,18 @@ public:
32593271 assert (DateTime .fromISOExtString(" 1999-07-06T12:30:33 " ) == DateTime (Date (1999 , 7 , 6 ), TimeOfDay (12 , 30 , 33 )));
32603272 }
32613273
3274+ // bug# 17801
3275+ @safe unittest
3276+ {
3277+ import std.conv : to;
3278+ import std.meta : AliasSeq;
3279+ foreach (C; AliasSeq! (char , wchar , dchar ))
3280+ {
3281+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
3282+ assert (DateTime .fromISOExtString(to! S(" 2012-12-21T14:15:16" )) == DateTime (2012 , 12 , 21 , 14 , 15 , 16 ));
3283+ }
3284+ }
3285+
32623286
32633287 /+ +
32643288 Creates a $(LREF DateTime) from a string with the format
@@ -3281,7 +3305,7 @@ public:
32813305 import std.format : format;
32823306 import std.string : strip;
32833307
3284- immutable str = strip(simpleString);
3308+ auto str = strip(simpleString);
32853309
32863310 enforce(str.length >= 15 , new DateTimeException(format(" Invalid string format: %s" , simpleString)));
32873311 auto t = str.countUntil(' ' );
@@ -3350,6 +3374,18 @@ public:
33503374 DateTime (Date (1999 , 7 , 6 ), TimeOfDay (12 , 30 , 33 )));
33513375 }
33523376
3377+ // bug# 17801
3378+ @safe unittest
3379+ {
3380+ import std.conv : to;
3381+ import std.meta : AliasSeq;
3382+ foreach (C; AliasSeq! (char , wchar , dchar ))
3383+ {
3384+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
3385+ assert (DateTime .fromSimpleString(to! S(" 2012-Dec-21 14:15:16" )) == DateTime (2012 , 12 , 21 , 14 , 15 , 16 ));
3386+ }
3387+ }
3388+
33533389
33543390 /+ +
33553391 Returns the $(LREF DateTime) farthest in the past which is representable
@@ -7467,6 +7503,18 @@ public:
74677503 assert (Date .fromISOString(" 19990706 " ) == Date (1999 , 7 , 6 ));
74687504 }
74697505
7506+ // bug# 17801
7507+ @safe unittest
7508+ {
7509+ import std.conv : to;
7510+ import std.meta : AliasSeq;
7511+ foreach (C; AliasSeq! (char , wchar , dchar ))
7512+ {
7513+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
7514+ assert (Date .fromISOString(to! S(" 20121221" )) == Date (2012 , 12 , 21 ));
7515+ }
7516+ }
7517+
74707518
74717519 /+ +
74727520 Creates a $(LREF Date) from a string with the format YYYY-MM-DD.
@@ -7596,6 +7644,18 @@ public:
75967644 assert (Date .fromISOExtString(" 1999-07-06 " ) == Date (1999 , 7 , 6 ));
75977645 }
75987646
7647+ // bug# 17801
7648+ @safe unittest
7649+ {
7650+ import std.conv : to;
7651+ import std.meta : AliasSeq;
7652+ foreach (C; AliasSeq! (char , wchar , dchar ))
7653+ {
7654+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
7655+ assert (Date .fromISOExtString(to! S(" 2012-12-21" )) == Date (2012 , 12 , 21 ));
7656+ }
7657+ }
7658+
75997659
76007660 /+ +
76017661 Creates a $(LREF Date) from a string with the format YYYY-Mon-DD.
@@ -7722,6 +7782,18 @@ public:
77227782 assert (Date .fromSimpleString(" 1999-Jul-06 " ) == Date (1999 , 7 , 6 ));
77237783 }
77247784
7785+ // bug# 17801
7786+ @safe unittest
7787+ {
7788+ import std.conv : to;
7789+ import std.meta : AliasSeq;
7790+ foreach (C; AliasSeq! (char , wchar , dchar ))
7791+ {
7792+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
7793+ assert (Date .fromSimpleString(to! S(" 2012-Dec-21" )) == Date (2012 , 12 , 21 ));
7794+ }
7795+ }
7796+
77257797
77267798 /+ +
77277799 Returns the $(LREF Date) farthest in the past which is representable by
@@ -8986,6 +9058,18 @@ public:
89869058 assert (TimeOfDay .fromISOString(" 011217 " ) == TimeOfDay (1 , 12 , 17 ));
89879059 }
89889060
9061+ // bug# 17801
9062+ @safe unittest
9063+ {
9064+ import std.conv : to;
9065+ import std.meta : AliasSeq;
9066+ foreach (C; AliasSeq! (char , wchar , dchar ))
9067+ {
9068+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
9069+ assert (TimeOfDay .fromISOString(to! S(" 141516" )) == TimeOfDay (14 , 15 , 16 ));
9070+ }
9071+ }
9072+
89899073
89909074 /+ +
89919075 Creates a $(LREF TimeOfDay) from a string with the format HH:MM:SS.
@@ -9101,6 +9185,18 @@ public:
91019185 assert (TimeOfDay .fromISOExtString(" 01:12:17 " ) == TimeOfDay (1 , 12 , 17 ));
91029186 }
91039187
9188+ // bug# 17801
9189+ @safe unittest
9190+ {
9191+ import std.conv : to;
9192+ import std.meta : AliasSeq;
9193+ foreach (C; AliasSeq! (char , wchar , dchar ))
9194+ {
9195+ foreach (S; AliasSeq! (C[], const (C)[], immutable (C)[]))
9196+ assert (TimeOfDay .fromISOExtString(to! S(" 14:15:16" )) == TimeOfDay (14 , 15 , 16 ));
9197+ }
9198+ }
9199+
91049200
91059201 /+ +
91069202 Returns midnight.
0 commit comments