public void CanRoundTrip() { // Level Zero Interval Assert.AreEqual("1964/2008", ExtendedDateTimeInterval.Parse("1964/2008").ToString()); Assert.AreEqual("2004-06/2006-08", ExtendedDateTimeInterval.Parse("2004-06/2006-08").ToString()); Assert.AreEqual("2004-02-01/2005-02-08", ExtendedDateTimeInterval.Parse("2004-02-01/2005-02-08").ToString()); Assert.AreEqual("2004-02-01/2005-02", ExtendedDateTimeInterval.Parse("2004-02-01/2005-02").ToString()); Assert.AreEqual("2004-02-01/2005", ExtendedDateTimeInterval.Parse("2004-02-01/2005").ToString()); Assert.AreEqual("2005/2006-02", ExtendedDateTimeInterval.Parse("2005/2006-02").ToString()); // Level One Interval Assert.AreEqual("unknown/2006", ExtendedDateTimeInterval.Parse("unknown/2006").ToString()); Assert.AreEqual("2004-06-01/unknown", ExtendedDateTimeInterval.Parse("2004-06-01/unknown").ToString()); Assert.AreEqual("2004-01-01/open", ExtendedDateTimeInterval.Parse("2004-01-01/open").ToString()); Assert.AreEqual("1984~/2004-06", ExtendedDateTimeInterval.Parse("1984~/2004-06").ToString()); Assert.AreEqual("1984/2004-06~", ExtendedDateTimeInterval.Parse("1984/2004-06~").ToString()); Assert.AreEqual("1984~/2004~", ExtendedDateTimeInterval.Parse("1984~/2004~").ToString()); Assert.AreEqual("1984?/2004?~", ExtendedDateTimeInterval.Parse("1984?/2004?~").ToString()); Assert.AreEqual("1984-06?/2004-08?", ExtendedDateTimeInterval.Parse("1984-06?/2004-08?").ToString()); Assert.AreEqual("1984-06-02?/2004-08-08~", ExtendedDateTimeInterval.Parse("1984-06-02?/2004-08-08~").ToString()); Assert.AreEqual("1984-06-02?/unknown", ExtendedDateTimeInterval.Parse("1984-06-02?/unknown").ToString()); // Level Two Interval Assert.AreEqual("2004-06-(01)~/2004-06-(20)~", ExtendedDateTimeInterval.Parse("2004-06-(01)~/2004-06-(20)~").ToString()); Assert.AreEqual("2004-06-uu/2004-07-03", ExtendedDateTimeInterval.Parse("2004-06-uu/2004-07-03").ToString()); }
public ComposerEventViewModel(string label, ExtendedDateTimeInterval dates, Composer composer, Brush background, Brush foreground, IEnumerable<ComposerEraViewModel> eras, ICommand clickCommand) { _dates = dates; _composer = composer; _background = background; _foreground = foreground; _label = label; _eras = eras; _clickCommand = clickCommand; }
public ComposerEraViewModel(string label, ExtendedDateTimeInterval dates, Brush background, SolidColorBrush foreground) { _dates = dates; if ((ExtendedDateTime)dates.End == ExtendedDateTime.Open) { _dates.End = ExtendedDateTime.Now; } _background = background; _foreground = foreground; _label = label; }
public override object ConvertFrom(ITypeDescriptorContext context, Globalization.CultureInfo culture, object value) { if (value == null) { throw GetConvertFromException(value); } var source = value as string; if (source != null) { return(ExtendedDateTimeInterval.Parse(source)); } return(base.ConvertFrom(context, culture, value)); }
public double ToPixels(ExtendedDateTimeInterval dates) { switch (TimeRulerUnit) { case TimeRulerUnit.Day: return dates.Span().TotalDays * TimeUnitWidth; case TimeRulerUnit.Hour: return dates.Span().TotalHours * TimeUnitWidth; case TimeRulerUnit.Minute: return dates.Span().TotalMinutes * TimeUnitWidth; case TimeRulerUnit.Second: return dates.Span().TotalSeconds * TimeUnitWidth; default: return double.NaN; } }
internal static string Serialize(ExtendedDateTimeInterval extendedDateTimeInterval) { var stringBuilder = new StringBuilder(); if (extendedDateTimeInterval.Start == null) { return("Error: An interval must have both a start and end defined. Use \"ExtendedDateTime.Unknown\" if the date is unknown."); } stringBuilder.Append(extendedDateTimeInterval.Start.ToString()); stringBuilder.Append("/"); if (extendedDateTimeInterval.End == null) { return("Error: An interval must have both a start and end defined. Use \"ExtendedDateTime.Unknown\" if the date is unknown."); } stringBuilder.Append(extendedDateTimeInterval.End.ToString()); return(stringBuilder.ToString()); }
internal static ExtendedDateTimeInterval Parse(string extendedDateTimeIntervalString, ExtendedDateTimeInterval extendedDateTimeInterval = null) { if (string.IsNullOrWhiteSpace(extendedDateTimeIntervalString)) { return(null); } var intervalPartStrings = extendedDateTimeIntervalString.Split(new char[] { '/' }); if (intervalPartStrings.Length != 2) { throw new ParseException("An interval string must contain exactly one forward slash.", extendedDateTimeIntervalString); } var startString = intervalPartStrings[0]; var endString = intervalPartStrings[1]; if (extendedDateTimeInterval == null) { extendedDateTimeInterval = new ExtendedDateTimeInterval(); } if (startString[0] == '{') { throw new ParseException("An interval cannot contain a collection.", startString); } if (startString == "unknown") { extendedDateTimeInterval.Start = ExtendedDateTime.Unknown; } else if (startString == "open") { extendedDateTimeInterval.Start = ExtendedDateTime.Open; } else if (startString[0] == '[') { extendedDateTimeInterval.Start = ExtendedDateTimePossibilityCollectionParser.Parse(startString); } else if (startString.ContainsBefore('u', '^')) { extendedDateTimeInterval.Start = UnspecifiedExtendedDateTimeParser.Parse(startString); } else { extendedDateTimeInterval.Start = ExtendedDateTimeParser.Parse(startString); } if (endString[0] == '{') { throw new ParseException("An interval cannot contain a collection.", startString); } if (endString == "unknown") { extendedDateTimeInterval.End = ExtendedDateTime.Unknown; } else if (endString == "open") { extendedDateTimeInterval.End = ExtendedDateTime.Open; } else if (endString[0] == '[') { extendedDateTimeInterval.End = ExtendedDateTimePossibilityCollectionParser.Parse(endString); } else if (endString.ContainsBefore('u', '^')) { extendedDateTimeInterval.End = UnspecifiedExtendedDateTimeParser.Parse(endString); } else { extendedDateTimeInterval.End = ExtendedDateTimeParser.Parse(endString); } return(extendedDateTimeInterval); }