From 19c10edf16473d2f64c95ed661a3529bacdf2a6e Mon Sep 17 00:00:00 2001 From: Carlos Alberto Cortez Date: Tue, 6 Apr 2010 14:57:12 +0000 Subject: [PATCH] 2010-04-06 Carlos Alberto Cortez * TimeSpanTest.cs: Augment our ParseExactCustomFormats test - still marked as NotWorking for now, but committing now in order to have the tests ready. svn path=/trunk/mcs/; revision=154848 --- mcs/class/corlib/Test/System/ChangeLog | 6 ++ mcs/class/corlib/Test/System/TimeSpanTest.cs | 99 +++++++++++++++++++- 2 files changed, 101 insertions(+), 4 deletions(-) diff --git a/mcs/class/corlib/Test/System/ChangeLog b/mcs/class/corlib/Test/System/ChangeLog index a6e027f46df..de3b87a86a7 100644 --- a/mcs/class/corlib/Test/System/ChangeLog +++ b/mcs/class/corlib/Test/System/ChangeLog @@ -1,3 +1,9 @@ +2010-04-06 Carlos Alberto Cortez + + * TimeSpanTest.cs: Augment our ParseExactCustomFormats test - still + marked as NotWorking for now, but committing now in order to have the + tests ready. + 2010-04-01 Rodrigo Kumpera * TypeTest.cs: Fix test for v4 Equals behavior. diff --git a/mcs/class/corlib/Test/System/TimeSpanTest.cs b/mcs/class/corlib/Test/System/TimeSpanTest.cs index b28f0eb2426..90459d5eb91 100644 --- a/mcs/class/corlib/Test/System/TimeSpanTest.cs +++ b/mcs/class/corlib/Test/System/TimeSpanTest.cs @@ -1130,21 +1130,112 @@ public class TimeSpanTest { [Category ("NotWorking")] public void ParseExactCustomFormats () { + // Days + ParseExactHelper ("33", new string [] { "%d" }, false, false, "33.00:00:00"); + ParseExactHelper ("00", new string [] { "%d" }, false, false, "00:00:00"); + ParseExactHelper ("33", new string [] { "%dd" }, false, false, "33.00:00:00"); + ParseExactHelper ("3333", new string [] { "%d" }, false, false, "3333.00:00:00"); + ParseExactHelper ("3333", new string [] { "%ddd" }, true, false, "3333.00:00:00"); // 'dd' mismatch the digit count + ParseExactHelper ("3333", new string [] { "%dddd" }, false, false, "3333.00:00:00"); + ParseExactHelper ("00033", new string [] { "%ddddd" }, false, false, "33.00:00:00"); + ParseExactHelper ("00033", new string [] { "%d" }, false, false, "33.00:00:00"); + ParseExactHelper ("00000003", new string [] { "%dddddddd" }, false, false, "3.00:00:00"); // up to 8 'd' + ParseExactHelper ("000000003", new string [] { "%ddddddddd" }, true, false, "dontcare"); + ParseExactHelper ("33", new string [] { "d" }, true, false, "33.00:00:00"); // This is sort of weird. + ParseExactHelper ("33", new string [] { "dd" }, false, false, "33.00:00:00"); + ParseExactHelper ("-33", new string [] { "%d" }, true, false, "dontcare"); + ParseExactHelper ("33", new string [] { "%d" }, false, false, "-33.00:00:00", null, TimeSpanStyles.AssumeNegative); + + // Hours ParseExactHelper ("12", new string [] { "%h" }, false, false, "12:00:00"); ParseExactHelper ("00", new string [] { "%h" }, false, false, "00:00:00"); + ParseExactHelper ("000", new string [] { "%h" }, true, false, "dontcare"); // Too many zeroes + ParseExactHelper ("00012", new string [] { "%hhhhh" }, true, false, "dontcare"); + ParseExactHelper ("15", new string [] { "%h" }, false, false, "15:00:00"); ParseExactHelper ("24", new string [] { "%h" }, true, false, "dontcare"); + ParseExactHelper ("15", new string [] { "%hh" }, false, false, "15:00:00"); + ParseExactHelper ("1", new string [] { "%hh" }, true, false, "dontcare"); // 'hh' but a single digit + ParseExactHelper ("01", new string [] { "%hh" }, false, false, "01:00:00"); + ParseExactHelper ("015", new string [] { "%hhh" }, true, false, "dontcare"); // Too many 'h' + ParseExactHelper ("12", new string [] { "h" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "hh" }, false, false, "12:00:00"); + ParseExactHelper ("-15", new string [] {"%h"}, true, false, "dontcare"); // Explicit - not accepted + ParseExactHelper ("15", new string [] { "%h" }, false, false, "-15:00:00", null, TimeSpanStyles.AssumeNegative); + ParseExactHelper ("15", new string [] { "%H" }, true, false, "dontcare"); // Uppercase is not accepted + + // Minutes ParseExactHelper ("12", new string [] { "%m" }, false, false, "00:12:00"); + ParseExactHelper ("00", new string [] { "%m" }, false, false, "00:00:00"); ParseExactHelper ("60", new string [] { "%m" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "%mm" }, false, false, "00:12:00"); + ParseExactHelper ("1", new string [] { "%mm" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "%mmm" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "m" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "mm" }, false, false, "00:12:00"); + ParseExactHelper ("-12", new string [] { "%m" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "%m" }, false, false, "-00:12:00", null, TimeSpanStyles.AssumeNegative); + ParseExactHelper ("12", new string [] { "%M" }, true, false, "dontcare"); + + // Seconds ParseExactHelper ("12", new string [] { "%s" }, false, false, "00:00:12"); - ParseExactHelper ("33", new string [] { "%d" }, false, false, "33.00:00:00"); - ParseExactHelper ("0", new string [] { "%d" }, false, false, "00:00:00"); + ParseExactHelper ("00", new string [] { "%s" }, false, false, "00:00:00"); + ParseExactHelper ("000", new string [] { "%s" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "%ss" }, false, false, "00:00:12"); + ParseExactHelper ("12", new string [] { "%sss" }, true, false, "dontcare"); + ParseExactHelper ("60", new string [] { "%s" }, true, false, "dontcare"); + ParseExactHelper ("-12", new string [] { "%s" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "%s" }, false, false, "-00:00:12", null, TimeSpanStyles.AssumeNegative); + + // Fractions of seconds - f + ParseExactHelper ("3", new string [] { "%f" }, false, false, "00:00:00.3000000"); + ParseExactHelper ("0", new string [] { "%f" }, false, false, "00:00:00"); + ParseExactHelper ("03", new string [] { "%f" }, true, false, "dontcare"); // This would work for other elements + ParseExactHelper ("10", new string [] { "%f" }, true, false, "dontcare"); // Only a digit is accepted with '%f' + ParseExactHelper ("3", new string [] { "%ff" }, true, false, "dontcare"); + ParseExactHelper ("12", new string [] { "%ff" }, false, false, "00:00:00.1200000"); + ParseExactHelper ("123", new string [] { "%ff" }, true, false, "dontcare"); + ParseExactHelper ("123", new string [] { "%fff" }, false, false, "00:00:00.1230000"); + ParseExactHelper ("1234", new string [] { "%ffff" }, false, false, "00:00:00.1234000"); + ParseExactHelper ("1234567", new string [] { "%fffffff" }, false, false, "00:00:00.1234567"); + ParseExactHelper ("1234567", new string [] { "%FfFFFFF" }, true, false, "dontcare"); // Mixed f and M + ParseExactHelper ("12345678", new string [] { "%ffffffff" }, true, false, "dontcare"); + ParseExactHelper ("0000000", new string [] { "%fffffff" }, false, false, "00:00:00"); + + // Fractions of second - F + ParseExactHelper ("3", new string [] { "%F" }, false, false, "00:00:00.3000000"); + ParseExactHelper ("333", new string [] { "%FFFF" }, false, false, "00:00:00.3330000"); + ParseExactHelper ("", new string [] { "%F" }, true, false, "00:00:00"); // Optional only with other elements + ParseExactHelper ("1234567", new string [] { "%FFFFFFF" }, false, false, "00:00:00.1234567"); + + // Multiple symbols + ParseExactHelper ("9:10", new string [] { @"h\:m" }, false, false, "09:10:00"); + ParseExactHelper ("9;10", new string [] { @"h\;m" }, false, false, "09:10:00"); + ParseExactHelper ("10:9", new string [] { @"m\:h" }, false, false, "09:10:00"); + ParseExactHelper ("10:9", new string [] { @"%m\:%h" }, false, false, "09:10:00"); + ParseExactHelper ("9 10", new string [] { @"h\ m" }, false, false, "09:10:00"); + ParseExactHelper ("9 10", new string [] { @"h\ \ \ m" }, false, false, "09:10:00"); + ParseExactHelper (" 9:10 ", new string [] { @"h\:m" }, true, false, "dontcare"); + ParseExactHelper ("9:10:11", new string [] { @"h\:m\:s" }, false, false, "09:10:11"); + ParseExactHelper ("9:10:11:6", new string [] { @"h\:m\:s\:f" }, false, false, "09:10:11.6000000"); + ParseExactHelper ("9:10:11:666", new string [] { @"h\:m\:s\:f" }, true, false, "dontcare"); // fff with 1 digit + ParseExactHelper ("9:10:11:", new string [] { @"h\:m\:s\:F" }, false, false, "09:10:11"); // optional frac of seconds + ParseExactHelper ("8:9:10:11:6666666", new string [] { @"d\:h\:m\:s\:fffffff" }, false, false, "8.09:10:11.6666666"); + ParseExactHelper ("8:9:10:11:6666666", new string [] { @"d\:h\:m\:s\:fffffff" }, false, false, "-8.09:10:11.6666666", + null, TimeSpanStyles.AssumeNegative); + ParseExactHelper ("9:10", new string [] { @"h\:h" }, true, false, "dontcare"); // Repeated element + + // Misc ParseExactHelper (" 0 ", new string [] { "%d" }, true, false, "dontcare"); ParseExactHelper (" 0 ", new string [] { " %d " }, true, false, "dontcare"); ParseExactHelper ("0", new string [] { " %d " }, true, false, "dontcare"); + ParseExactHelper ("::", new string [] { @"\:\:" }, false, false, "00:00:00"); // funny + ParseExactHelper ("::", new string [] { @"\:\:" }, false, false, "00:00:00", null, TimeSpanStyles.AssumeNegative); + ParseExactHelper (" 0", new string [] { @"\ d" }, false, false, "00:00:00"); + ParseExactHelper ("Interval = 12:13:14", new string [] { @"'Interval = 'h\:m\:s" }, false, false, "12:13:14"); } - void ParseExactHelper (string input, string [] formats, bool format_error, bool overflow_error, string expected, IFormatProvider formatProvider = null, - TimeSpanStyles timeSpanStyles = TimeSpanStyles.None) + void ParseExactHelper (string input, string [] formats, bool format_error, bool overflow_error, string expected, + IFormatProvider formatProvider = null, TimeSpanStyles timeSpanStyles = TimeSpanStyles.None) { bool overflow_exc = false; bool format_exc = false; -- 2.25.1